全名為開放式 web 應用安全專案(Open Web Application Security Project),一個線上的社群,主要提供 web 安全相關的文章、方法、工具、技術等。而 OWASP Top10 則是其中一個知名的項目,會發布出 當下 最常見的十大安全風險漏洞,大約 3~4 年更新一次
先照著 2013 的順序 由上往下 進行介紹
A1 - 注入攻擊 (Injection)
在 2017 一樣維持在 A1 的位置,hacker 會輸入惡意的程式碼,藉此執行意外的動作,訪問未經授權的資料
A2 - 無效的身分驗證和會話管理 (Broken Authentication and Session Management)
在 2017 一樣維持在 A2 的位置,但名字被重新命名成無效的身分驗證 (Broken Authentication)
A3 - 跨站腳本攻擊 (Cross-Site Scripting (XSS))
在 2017 從 A3 掉到 A7 的位置,但仍是一個很嚴重的風險,只是因為出現了可以自動規避 XSS 的語言(如 Ruby),所以風險排名往下掉
A4 - 不安全的直接物件引用 (Insecure Direct Object References)、A7 - 缺少功能級別的訪問控制 (Missing Function Level Access Control)
A4 和 A7 在 2017 被合併成 A5 - 無效的訪問控制 (Broken Access Control),因為這兩個漏洞有相同的根本原因,就是缺少訪問的控制權限,因此在 2017 直接將這個原因當成名字重新命名
A5 - 不安全的組態設定 (Security Misconfiguration)
在 2017 從 A5 往下掉到 A6 的位置,內容是有些預設的安全配置應該被定義,但實際上並沒有,進而產生安全上的漏洞
A6 - 敏感資料外洩 (Sensitive Data Exposure)
在 2017 往上升到 A3 的位置,內容是機密資料的保護度不足(如使用明文傳輸,或使用不安全的加密法加密資料),當 hacker 入侵系統後,就能輕易取得機密資料,並對其進行其他的犯罪行為
A9 - 使用已有漏洞的元件 (Using Components with Known Vulnerable)
在 2017 一樣維持在 A9 的位置,如果你知道它有這個漏洞,但還是使用它,則 hacker 可以利用這些漏洞,取得最高權限,這將會造成一系列的攻擊及損失
註明 : 刪除只是代表威脅程度 相對 來講比較低,所以名次掉出前 10 名了,但不代表這些漏洞就不存在
A8 - 跨站請求偽造攻擊 (Cross-Site Request Forgery (CSRF))
一種利用 信任的網站 來發送惡意請求的攻擊,而現在有很多框架含有 CSRF 的防禦,目前僅剩 5 % 的系統裡還存在著這樣的漏洞,所以發生的機率相對降低
A10 - 未驗證的重定向和轉發 (Unvalidated Redirects and Forwards)
重定向通常被運用在網路釣魚,會和其他的漏洞一起使用,以造成更大的安全漏洞。目前僅在大約 8 % 的系統裡發現到這個漏洞,比 A8 的比例高一點,但還是被 XXE 淘汰掉了
A4 - XML 外部處理器漏洞 (XML External Entities (XXE))
XML 是一種用來傳輸和儲存資料的標籤語言,方便在不同平台上互相傳遞、儲存、分享等。而 XXE 就是利用這樣的便利性,透過外部(如網址列)注入 XML 的惡意程式碼,進而造成資料外洩、DoS等問題
A8 - 不安全的反序列化 (Insecure Deserialization)
序列化是把物件轉換成易於傳輸或讀取的字串(Json 就是其中一種),而反序列化則相反,當 hacker 把惡意程式碼放入序列化的對象中,而 web 如果沒有檢查,就直接反序列化它並執行,就會導致遠端程式碼執行、DoS、越權等攻擊發生
A10 - 記錄和監控不足 (Insufficient Logging & Monitoring)
其實不算漏洞,算是一個管理上的疏忽,因為 Log 如果沒有即時的做監控並記錄、發送警報,管理員就沒辦法及時發現是不是有人正在進行攻擊,進而做出相對應的防護措施
先照著 2017 的順序 由上往下 進行介紹
A1 - 注入攻擊 (Injection)、A7 - 跨站腳本攻擊 (Cross-Site Scripting (XSS))
A1 和 A7 在 2021 被合併成 A3 - 注入攻擊 (Injection),因為 XSS 其實也是透過注入惡意程式碼來進行攻擊,所以就歸類在一起
A2 - 無效的身分驗證 (Broken Authentication)
在 2021 從 A2 往下掉到 A7 的位置,並重新命名為 A7 - 識別和認證失敗 (Identification and Authentication Failures),會下降的原因是現在有很多系統提供生物辨識(如指紋、Face ID)、行動OTP(一次性密碼)等高級身分驗證技術進行登入,以防 hacker 使用暴力破解對密碼、憑證等漏洞進行攻擊
A3 - 敏感資料外洩 (Sensitive Data Exposure)
在 2021 從 A3 往上升到 A2 的位置,並重新命名為 A2 - 加密失敗 (Cryptographic Failures),把問題更明確的定義成和「加密」有關
A4 - XML 外部處理器漏洞 (XML External Entities (XXE))、A6 - 不安全的組態設定 (Security Misconfiguration)
A4 和 A6 在 2021 被合併成 A5 - 不安全的組態設定 (Security Misconfiguration),因為 XXE 攻擊發生的前提是 XML 解析器太弱或配置有誤,這和 A6 有點類似,所以在 2021 被歸類在一起
A5 - 無效的訪問控制 (Broken Access Control)
在 2021 從 A5 直接上升到 A1 的位置,因為系統權限如果控管不當,讓 hacker 操作到預期權限外的動作,就可能導致機密資料遭到外洩、竄改、破壞等,因此排名上升到 A1,成為目前最關鍵的安全風險漏洞
A8 - 不安全的反序列化 (Insecure Deserialization)
在 2021 和 A8 - 軟件和數據完整性失敗 (Software and Data Integrity Failures) 合併在一起。因為本質上都是 反序列化它並執行 所造成的,所以在 2021 被歸類在一起
A9 - 使用已有漏洞的元件 (Using Components with Known Vulnerable)
在 2021 從 A9 往上升到 A6 ,並重新命名為 A6 - 易受攻擊和過時的組件 (Vulnerable and Outdated Components),為了想把問題定義的更明確,希望 已有漏洞 指的是 尚未被修補的漏洞,所以在 2021 特別改名強調這件事
A10 - 記錄和監控不足 (Insufficient Logging & Monitoring)
在 2021 從 A10 往上升到 A9,並重新命名為 A9 - 安全日誌記錄和監控失敗 (Security Logging and Monitoring Failures),為了把問題定義的更明確一點
註明 : 2017~2021 這次更新沒有漏洞被刪除或掉出前 10 名,都是被合併或重新命名
A4 - 不安全的設計 (Insecure Design)
不一定是指系統設計有誤,而是指可能被 hacker 利用,進而造成安全漏洞的設計。最著名的例子是:當你忘記密碼,你可以根據之前設定的問題,去回答問題並找回密碼。這樣看似安全的設計,其實有安全的疑慮在(像是可以透過之前的發文得知)
A8 - 軟件和數據完整性失敗 (Software and Data Integrity Failures)
因為系統缺乏資料完整性的驗證,導致資料被加料或竄改,進而造成攻擊的發生
A10 - 服務器端請求偽造 (Server-Side Request Forgery (SSRF))
是指當 web 在接收使用者的資源時,沒有驗證使用者提供的 URL(網址),則 hacker 就有可能利用這個漏洞,誘導伺服端向「非預期的位置(如 hacker 偽造的 URL)」發送請求,進而造成機密資料外洩、越權等問題發生