技術主題

什麼是 OWASP 前 10 名?

以問號為重點的 IT 項目圖示

概述

公開賽Web 應用程式安全計畫 (OWASP) 是一個開源應用程式安全社區,其目標是提高軟體的安全性。 OWASP Top 10 是一項行業標準指南,列出了最關鍵的應用程式安全風險,以幫助開發人員更好地保護他們設計和部署的應用程式。

由於安全風險在不斷演變,OWASP Top 10 清單會定期修訂以反映這些變化。在 2021 年發布的最新版本的 OWASP Top 10 中,某些不再構成嚴重威脅的漏洞類型被最有可能構成重大風險的漏洞所取代。

雖然 OWASP Top 10 是開始保護應用程式的好地方,但它當然不應被視為最終目標,因為一些被引用最多的漏洞沒有進入 OWASP Top 10 2021。為了防範軟體弱點,防禦者需要更廣泛地了解他們的資訊技術堆棧。這意味著IT安全專業人員需要關注整個軟體生態系統,並超越「傳統」漏洞來源。

OWASP 前 10 名

OWASP 前 10 名(2021 年)類別是什麼?

A1:注射

每當將不受信任的數據源發送到解釋器時,都可能引入注入缺陷。示例通常出現在 SQL、LDAP、XPath 或 NoSQL 動態資料庫查詢中,其中包含使用者提供的輸入。攻擊者將代碼注入使用者輸入,誘騙查詢解釋器執行惡意命令。

是什麼讓應用程式容易受到注入缺陷的影響?

  • 使用者提供的數據未得到充分驗證。
  • 動態查詢在未進行足夠輸入清理的情況下運行。
  • 系統內用於惡意行為的惡意數據。

注射缺陷有什麼影響?

  • 應用程式或基礎主機的入侵。
  • 敏感數據洩露。
  • 生產力、聲譽或收入的損失。

怎麼可以Fortify 幫助解決注射缺陷?

  • 如果您是開發人員: Fortify 檢測注入缺陷並提供特定類型的修復建議。
  • 如果您從事品質檢查或營運工作: Fortify 在運行時驗證程式碼以減輕控制。
  • 如果您從事營運: Fortify 為 Java 和 .NET 注入嘗試提供執行時間日誌記錄和保護。

A2:身份驗證損壞

在有狀態應用程式中管理身份或會話數據時,可能會引入中斷的身份驗證。當註冊、憑證恢復和 API 路徑容易受到未過期的會話令牌、暴力破解或帳戶枚舉的影響時,通常會發現範例。攻擊者冒充合法使用者的身份,控制帳戶並破壞數據、流程或系統。

是什麼讓應用程式容易受到身份驗證破壞?

  • 公開會話 ID、未正確失效或無法輪換會話 ID。
  • 未使密碼策略與 NIST 800-63B 等標準保持一致。
  • 缺少雙因素身份驗證 (2FA) 或允許自動攻擊。

身份驗證中斷會帶來什麼影響?

  • 使用者身份盜竊。
  • 失去使用者信任。
  • 洩露敏感數據。

怎麼可以Fortify 幫助?

  • 如果您是開發人員: Fortify 檢測並建議修復損壞的身份驗證問題。
  • 如果您從事品質檢查或營運工作: Fortify 動態驗證身份驗證和會話管理安全性。
  • 如果您從事營運: Fortify 對 Java 和 .NET 應用程式事件進行執行時間監控。

A3:敏感數據洩露

當應用程式訪問未加密的數據時,可能會引入敏感數據洩露問題,尤其是個人身份資訊 (PII) 和其他受監管的數據類型。當在遺留應用程式中使用弱加密密碼、安全傳輸協定實現不正確或未使用以資料為中心的安全性時,通常會發現範例。攻擊者可以訪問敏感的用戶數據,從而在現實生活中獲得控制權。

是什麼讓應用程式容易受到敏感數據洩露?

  • 通過HTTP、SMTP和FTP等協定以明文形式傳輸數據。
  • 以明文形式不必要地存儲、傳輸或使用敏感數據。
  • 使用舊的、弱的或非基於標準的加密演算法。

敏感數據洩露會帶來什麼影響?

  • 洩露受監管數據(例如 HIPAA 或 GDPR)導致罰款。
  • 身份劫持導致清理或監視數據的成本。
  • 隱私法律和法規的不合規狀態。

怎麼可以Fortify 幫助敏感資料暴露?

  • 如果您是開發人員: Fortify 識別敏感資料暴露並自動進行問題審核。
  • 如果您從事品質檢查或營運工作: Fortify 刪除透過模板在應用程式上下文之外緩解的結果。
  • 如果您從事營運: Fortify Java 和 .NET 應用程式的儀器記錄和保護。

A4:XML 外部實體

當包含對外部實體的引用的 XML 輸入由配置較弱的分析器處理時,可能會引入 XML 外部實體問題。在啟用文檔類型定義 (DTD) 或使用未修補的框架(如 SOAP 1.0)時,分析來自不受信任源的 XML 輸入的應用程式中經常會找到範例。XML 無處不在 — 從 SVG 和影像檔到網路協定和文件格式(如 PDF 和 RSS)。攻擊者在 XML 輸入中引用外部實體,導致處理器被利用來提取數據、遠端執行代碼或影響網路服務。

是什麼使應用程式容易受到 XML 外部實體的攻擊?

  • 應用程式解析 XML 文件,處理器啟用了 DTD。
  • 將 SAML 用於 SSO、低於 1.2 版的 SOAP 或低於 v2.0 的 .NET Framework。
  • 分析器接受不受信任的源或插入不受信任的 XML 數據。

XML 外部實體有什麼影響?

  • 敏感數據被盜。
  • 載入攻擊者控制的 URL。
  • 拒絕服務攻擊 (DoS)。

怎麼可以Fortify 有關 XML 外部實體的協助?

  • 如果您是開發人員: Fortify 偵測易受攻擊的 XML 解析器並建議緩解因素。
  • 如果您從事品質檢查或營運工作: Fortify 自動掃描易受攻擊的 XML 解析器並驗證漏洞有效負載。
  • 如果您從事營運: Fortify 為 Java 和 .NET 應用程式中的問題提供執行時間日誌記錄和保護。

A5:訪問控制損壞

當代碼和環境限制不完全重疊或在多個位置為類似功能定義時,可能會引入訪問控制問題。當通過強制流覽受限頁面來破壞隱蔽性時,或者當應用程式以多種方式和位置定義複雜的訪問控制方法時,通常會發現範例。攻擊者可以破壞訪問邊界以竊取敏感數據或中斷操作。

是什麼讓應用程式容易受到訪問控制破壞的影響?

  • 能夠在不登錄的情況下以使用者身份行事,或者在以使用者身份登錄時以管理員身份行事。
  • 操縱元數據或令牌以獲得未經授權或提升的許可權。
  • 拜占庭式、未強制執行或分散的訪問控制邏輯。

訪問控制中斷會帶來什麼影響?

  • 未經授權的信息洩露或敏感數據洩露。
  • 修改或銷毀數據。
  • 接管網站管理或使用者。

怎麼可以Fortify 幫助解決損壞的存取控制?

  • 如果您是開發人員: Fortify 自動化審核並允許使用範本來消除在其他地方緩解的問題。
  • 如果您從事品質檢查和營運工作: Fortify 代理程式偵測隱藏的攻擊面和損壞的存取控制系統。
  • 如果您從事營運: Fortify Java 和 .NET 應用程式的儀器運行時存取控制日誌記錄。

A6:安全配置錯誤

在應用程式或其底層環境的配置過程中,可能會引入安全配置錯誤缺陷。錯誤設定可能發生在應用程式堆疊的任何級別 — 從網路服務和應用程式伺服器到容器和存儲。示例通常出現在預設帳戶和配置、「洩漏」錯誤消息或未修補的框架和服務中。攻擊者可以獲取部署資訊和對特權數據的訪問許可權,從而破壞操作。

是什麼使應用程式容易受到安全錯誤配置的影響?

  • 不必要地啟用預設埠和帳戶或未更改的密碼。
  • 在出現錯誤和異常時顯示堆疊跟蹤或其他消息。
  • 沒有適當地加強對堆疊任何部分帶來的風險的安全性。

安全配置錯誤會帶來什麼影響?

影響可能從信息洩露到完全系統洩露不等。

怎麼可以Fortify 幫助解決安全配置錯誤?

  • 如果您是開發人員: Fortify 在掃描期間識別應用程式依賴性和設定檔。
  • 如果您從事品質檢查和營運工作: Fortify 動態評估應用程式和伺服器配置的問題。
  • 如果您從事營運: Fortify 提供用於報告環境風險的開源分析。

A7: 跨網站腳本

當不受信任、未經審查的使用者輸入作為 HTML 的一部分執行時,或者當使用者可能受到影響與惡意鏈接進行互動時,可能會引入跨網站腳本 (XSS) 缺陷。當來自 JavaScript 或 Flash 等語言的熟悉代碼結構被接受來自不受信任的來源或存儲以供其他使用者代理稍後顯示時,通常會發現範例。攻擊者可以在使用者的計算機上執行遠端代碼執行、竊取憑據或從重定向網站傳遞惡意軟體。

是什麼讓應用程式容易受到跨網站腳本 (XSS) 的攻擊?

XSS 有三種形式,通常面向使用者代理,例如瀏覽器:

  • 反射的 XSS:應用程式或 API 在 HTML 輸出中包含不受信任的輸入。
  • 存儲的 XSS:保存到磁碟的未經清理的代碼稍後由使用者操作觸發。
  • DOM XSS:使用不受信任輸入的應用程式、框架和 API。

跨網站腳本 (XSS) 有何影響?

  • 在應用程式中接管受害者的帳戶。
  • 從目標 Web 應用程式檢索數據。
  • 修改頁面上的內容。

怎麼可以Fortify 跨站腳本 (XSS) 方面的幫助嗎?

  • 如果您是開發人員: Fortify 偵測程式碼中的 XSS 漏洞並預測被利用的可能性。
  • 如果您從事品質檢查和營運工作: Fortify 動態驗證程式碼以檢查是否存在易受 XSS 攻擊的未經處理的輸入。
  • 如果您從事營運: Fortify 提供 Java 和 .NET 事件的日誌記錄,包括未經授權的重定向。

A8:不安全的反序列化

當語言和框架允許將不受信任的序列化數據擴展為物件時,通常會引入不安全的反序列化缺陷,這通常是在 Web 應用程式與使用者通信或保存應用程式狀態時。當開發人員對在反序列化過程中可以自行執行的方法不施加任何限制時,通常會發現範例。攻擊者利用這些在應用程式邏輯槓桿之外調用的「小工具鏈」來遠端執行代碼、拒絕服務或獲得未經授權的訪問。

是什麼讓應用程式容易受到不安全的反序列化的影響?

  • 應用程式反序列化來自不受信任源的數據。
  • 應用程式在反序列化之前不會驗證源或內容。
  • 可接受的類不會被列入白名單,以避免不必要的小工具暴露。

不安全的反序列化會帶來什麼影響?

  • 這些缺陷可能導致遠端代碼執行攻擊,這是最嚴重的攻擊之一。

怎麼可以Fortify 幫助解決不安全的反序列化?

  • 如果您是開發人員: Fortify 檢測原始程式碼中的漏洞並提供組件分析。
  • 如果您從事品質檢查和營運工作: Fortify 偵測動態運行的應用程式以驗證攻擊向量。
  • 如果您從事營運: Fortify Java 和 .NET 事件(包括反序列化)的儀器日誌記錄。

A9: 使用具有已知漏洞的元件

當將開源或第三方框架和庫引入應用程式並以相同的許可權運行時,可能會引入這些缺陷。例如,基於元件的開發導致缺乏對與依賴項相關的風險的理解,並且元件或系統很難或不可能修補。攻擊者利用易受攻擊的元件進行了歷史上一些最大的違規行為,儘管漏洞的範圍從應用程式洩露到遠端代碼執行。

是什麼讓應用程式容易受到開源或第三方框架和庫的攻擊?

  • 這些可能是偶然的(例如編碼錯誤)或故意的(例如後門元件)。
  • 應用程式或環境使用未修補或過時的元件(應用程式現代化至關重要的原因之一)。
  • 缺少對第三方代碼或嵌套依賴項中的漏洞的掃描。
  • 元件清單不可用或安全公告被忽略。

使用具有已知漏洞的元件會帶來什麼影響?

雖然一些已知漏洞只會導致輕微的影響,但一些最大的已知漏洞,如 Heartbleed 和 Shellshock,依賴於利用共用元件中的已知漏洞。使用具有已知代碼漏洞的元件可能會導致在受影響的伺服器上遠端執行代碼,從而使攻擊者能夠完全控制計算機。

怎麼可以Fortify 幫助開源安全?

  • 如果您是開發人員: Fortify 透過 Sonatype 整合提供軟體組件分析。
  • 如果您從事品質檢查和營運工作: Fortify 在運行時自動動態驗證已知漏洞。
  • 如果您從事營運: Fortify Java 和 .NET 應用程式元件的儀器日誌記錄和保護。

A10:記錄和監控不足

當對攻擊媒介或應用程式不當行為沒有很好的理解,或者沒有遵循監視入侵指標的最佳實踐時,可能會引入不充分的日誌記錄和監視缺陷。在沒有日誌記錄功能的遺留系統中,當應用程式滲透測試的日誌未被檢查時,或者當日誌沒有提供足夠的詳細資訊來了解攻擊者的行為時,通常會發現這樣的例子。攻擊者平均需要關於 200 天的時間進行檢測,而檢測通常是從外部發現的,以建立持久性並轉向其他易受攻擊的系統。

是什麼使應用程式容易受到日誌記錄和監視不足的影響?

  • 警告和錯誤會生成無日誌消息、日誌消息不充分或不清晰。
  • 日誌存儲在本地,沒有篡改控制和/或不受監控。
  • 警報閾值和響應過程不足或導致未執行任何操作。

日誌記錄和監視不足會帶來什麼影響?

大多數成功的攻擊都是從漏洞探測開始的。允許此類探測繼續進行可以提高成功利用漏洞的可能性。攻擊者可能會建立持久性、後門應用程式和操作系統、竊取數據或以其他方式獲得未被注意、未經授權的系統控制權。如果安全關鍵資訊沒有被正確記錄或存儲,則取證分析將無法發現攻擊源。如果攻擊者保持對日誌記錄功能的控制,則瞭解存在問題可能會變得更加困難或不可能。

怎麼可以Fortify 幫助解決日誌記錄和監控不足的問題?

  • 如果您是開發人員: Fortify 掃描應用程式和 API 中的日誌記錄功能以尋找漏洞。
  • 如果您從事品質檢查和營運工作: Fortify 動態掃描會產生應用程式日誌以進行充分性審查,例如滲透測試。
  • 如果您從事營運: Fortify Java 和 .NET 應用程式的儀器日誌記錄和保護。

OWASP (2021) 有哪些新增功能?

雖然距離2017年發佈上一個前10名只有四年時間,但網路安全行業發生了許多變化,這讓我們對最優先的問題或要添加哪些新問題三思而後行。

引入了三個新類別:

A04:2021

不安全設計:此類別側重於設計缺陷。這是必要的,因為在開發中左移的運動也需要威脅建模的左移。

A08:2021

軟體和數據完整性故障:重點關注有關軟體更新、關鍵數據和 CI/CD 管道的假設,而不驗證它們可能影響的完整性。這也納入了 A08:2017 – 不安全的反序列化。

答10:2021

伺服器端請求偽造 (SSRF):此類別在社區調查中大多位列前 10 名。他們之所以強調這個漏洞,是因為其可利用性和影響高於平均水準。

其他更改

其他類別要麼更改了名稱,要麼移動了排名,要麼合併到其他類別中:

  • A01:2017 – 注射下移至 A:03。
  • A02:2017 – Broken Authentication 已更名為 Identification and Authentication Failures,並下移至 A07。
  • A03:2017 – 敏感數據洩露已上移至 A02,更名為加密故障,以更全面地解決根本原因,而不僅僅是癥狀。
  • A05:2017 – Broken Access Control 遷移到 A01,因為他們測試的 94% 的應用程式顯示暴露於某種形式的 Broken Access Control。
  • A06:2017 – 安全配置錯誤上升一位至A05。
  • A07:2017 – 跨網站腳本 (XSS) 已合併到 A03 Injection 中。
  • A09:2017 – 使用具有已知漏洞的元件已上移至 A06,並更名為易受攻擊和過時的元件。這一變化很大程度上是由於社區將其排名#2在他們的清單中。
  • A10:2017 – Insufficient Logging & Monitoring 已移至 A09,現在稱為 Security Logging and Monitoring Failures。

想看看如何Fortify 可以幫助您的組織嗎?立即開始 15 天免費試用Fortify on Demand by OpenText™

我們能提供什麼協助?

腳注