# OWASP 全名為開放式 web 應用安全專案(Open Web Application Security Project),一個線上的社群,主要提供 web 安全相關的文章、方法、工具、技術等。而 OWASP Top10 則是其中一個知名的項目,會發布出 **當下** 最常見的十大安全風險漏洞,大約 3~4 年更新一次 ## 2013 vs 2017 ![](https://hackmd.io/_uploads/H12IWyqR2.png) 先照著 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 可以利用這些漏洞,取得最高權限,這將會造成一系列的攻擊及損失 ### 2013 哪些漏洞被刪除 *註明 : 刪除只是代表威脅程度 **相對** 來講比較低,所以名次掉出前 10 名了,但不代表這些漏洞就不存在* * **A8 - 跨站請求偽造攻擊 (Cross-Site Request Forgery (CSRF))** 一種利用 **信任的網站** 來發送惡意請求的攻擊,而現在有很多框架含有 CSRF 的防禦,目前僅剩 5 % 的系統裡還存在著這樣的漏洞,所以發生的機率相對降低 * **A10 - 未驗證的重定向和轉發 (Unvalidated Redirects and Forwards)** 重定向通常被運用在網路釣魚,會和其他的漏洞一起使用,以造成更大的安全漏洞。目前僅在大約 8 % 的系統裡發現到這個漏洞,比 **A8** 的比例高一點,但還是被 XXE 淘汰掉了 ### 2017 新增哪些漏洞 * **A4 - XML 外部處理器漏洞 (XML External Entities (XXE))** XML 是一種用來傳輸和儲存資料的標籤語言,方便在不同平台上互相傳遞、儲存、分享等。而 XXE 就是利用這樣的便利性,透過外部(如網址列)注入 XML 的惡意程式碼,進而造成資料外洩、DoS等問題 * **A8 - 不安全的反序列化 (Insecure Deserialization)** 序列化是把物件轉換成易於傳輸或讀取的字串(Json 就是其中一種),而反序列化則相反,當 hacker 把惡意程式碼放入序列化的對象中,而 web 如果沒有檢查,就直接反序列化它並執行,就會導致遠端程式碼執行、DoS、越權等攻擊發生 * **A10 - 記錄和監控不足 (Insufficient Logging & Monitoring)** 其實不算漏洞,算是一個管理上的疏忽,因為 Log 如果沒有即時的做監控並記錄、發送警報,管理員就沒辦法及時發現是不是有人正在進行攻擊,進而做出相對應的防護措施 ## 2017 vs 2021 ![](https://hackmd.io/_uploads/S1RhU1c0h.png) 先照著 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 哪些漏洞被刪除 *註明 : 2017~2021 這次更新沒有漏洞被刪除或掉出前 10 名,都是被合併或重新命名* ### 2021 新增哪些漏洞 * **A4 - 不安全的設計 (Insecure Design)** 不一定是指系統設計有誤,而是指可能被 hacker 利用,進而造成安全漏洞的設計。最著名的例子是:當你忘記密碼,你可以根據之前設定的問題,去回答問題並找回密碼。這樣看似安全的設計,其實有安全的疑慮在(像是可以透過之前的發文得知) * **A8 - 軟件和數據完整性失敗 (Software and Data Integrity Failures)** 因為系統缺乏資料完整性的驗證,導致資料被加料或竄改,進而造成攻擊的發生 * **A10 - 服務器端請求偽造 (Server-Side Request Forgery (SSRF))** 是指當 web 在接收使用者的資源時,沒有驗證使用者提供的 URL(網址),則 hacker 就有可能利用這個漏洞,誘導伺服端向「非預期的位置(如 hacker 偽造的 URL)」發送請求,進而造成機密資料外洩、越權等問題發生 ## 總結 ![](https://hackmd.io/_uploads/B1k-5k9A2.png) ## 參考文獻 原文網址 : https://ithelp.ithome.com.tw/articles/10304214