OpenText 首頁。
技術主題

什麼是 OWASP Top 10?

以問號為重點的 IT 項目說明

概述

開放式 Web 應用程式安全專案 (OWASP) 是一個開放原始碼應用程式安全社群,目標是改善軟體的安全性。OWASP Top 10 是一項業界標準準則,列出最重要的應用程式安全風險,以協助開發人員更好地保護其設計和部署的應用程式。

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

雖然 OWASP Top 10 是保護應用程式安全的好起點,但當然不應視為終極目標,因為有些被引用最多的弱點並未進入 OWASP Top 10 2021。為了防範軟體弱點,防禦者需要更廣泛地檢視整個資訊技術堆疊。這表示 IT 安全專業人員需要專注於整個軟體生態系統,並超越「傳統」的漏洞來源。

OWASP TOP 10

什麼是 OWASP Top 10 (2021) 類別?

A1: 注射

只要將不受信任的資料來源傳送至解釋器,就可能產生注入漏洞。範例常見於 SQL、LDAP、XPath 或 NoSQL 動態資料庫查詢與使用者提供的輸入。攻擊者在使用者輸入中注入程式碼,誘使查詢解釋器執行惡意指令。

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

  • 使用者提供的資料未經充分驗證。
  • 動態查詢執行時沒有足夠的輸入淨化。
  • 系統內用於惡意行為的敵意資料。

注射瑕疵有什麼影響?

  • 應用程式或底層主機受損。
  • 暴露敏感資料。
  • 生產力、聲譽或收入的損失。

Fortify 如何協助處理注射瑕疵?

  • 如果您是開發人員:Fortify 可偵測注入瑕疵,並提供特定類型的修復建議。
  • 如果您在 QA 或 Operations:Fortify 會在執行時驗證程式碼,以減緩控制。
  • 如果您在作業中:Fortify 為 Java 和 .NET 注入嘗試提供執行時記錄和保護。

A2: 驗證失敗

在有狀態的應用程式中管理身分或會話資料時,可能會引入破壞的驗證。當註冊、憑證復原和 API 通路容易受到未到期的階段代碼、強行逼迫或帳戶枚舉的影響時,就經常會發現這些範例。攻擊者假冒合法使用者的身分,控制帳戶並入侵資料、程序或系統。

是什麼讓應用程式容易受到破壞的認證?

  • 暴露、未正確使會話 ID 無效或無法旋轉會話 ID。
  • 密碼政策不符合 NIST 800-63B 等標準。
  • 缺乏雙因素驗證 (2FA) 或允許自動攻擊。

驗證失敗會造成什麼影響?

  • 使用者身份盜用。
  • 失去使用者的信任。
  • 敏感資料受到損害。

Fortify 如何提供協助?

  • 如果您是開發人員:Fortify 會偵測並建議修復破壞的驗證問題。
  • 如果您在 QA 或作業部門:Fortify 動態驗證驗證和會話管理安全性。
  • 如果您在運行:Fortify 為 Java 和 .NET 應用程式事件提供執行時監控工具。

A3: 敏感資料曝光

當應用程式存取未加密的資料,尤其是個人識別資訊 (PII) 和其他受管制的資料類型時,可能會引發敏感資料暴露的問題。在傳統應用程式中使用弱加密密碼、不正確執行安全傳輸通訊協定,或未使用以資料為中心的安全性時,通常會發現這些例子。攻擊者可存取敏感的使用者資料,讓他們在現實生活中擁有控制權。

是什麼讓應用程式容易受到敏感資料暴露的威脅?

  • 透過 HTTP、SMTP 和 FTP 等通訊協定,以明確文字傳輸資料。
  • 以明確文字儲存、傳輸或使用不必要的敏感資料。
  • 使用舊、弱或非標準的加密演算法。

敏感資料曝光會造成什麼影響?

  • 受規管資料的損害(例如HIPAA 或 GDPR)導致罰款。
  • 身份劫持導致洗刷或監控資料的成本。
  • 不符合隱私權法律法規的狀態。

Fortify 如何協助解決敏感資料暴露的問題?

  • 如果您是開發人員:Fortify 可識別敏感資料曝光,並自動進行問題稽核。
  • 如果您在 QA 或作業部門工作:利用模板化功能,Fortify 移除在應用程式情境之外緩解的發現。
  • 如果您在營運:Fortify Java 和 .NET 應用程式的工具記錄和保護。

A4: XML 外部實體

當包含外部實體參照的 XML 輸入由弱設定的解析器處理時,可能會產生 XML 外部實體問題。在解析來自不受信任來源的 XML 輸入、啟用文件類型定義 (DTD) 或使用 SOAP 1.0 等未修補框架的應用程式中,經常會發現這些範例。XML 無處不在 - 從 SVG 和影像檔案到網路協定和 PDF 與 RSS 等文件格式。攻擊者在 XML 輸入中引用外部實體,導致處理器被利用來擷取資料、遠端執行程式碼或影響網路服務。

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

  • 應用程式會解析 XML 文件,且處理器已啟用 DTD。
  • 使用 SAML 作為 SSO、v1.2 之前的 SOAP 或 v2.0 之前的 .NET Framework。
  • 解析器接受不受信任的來源或插入不受信任的 XML 資料。

XML 外部實體有什麼影響?

  • 敏感資料遭竊。
  • 載入攻擊者控制的 URL。
  • 拒絕服務攻擊 (DoS)。

Fortify 如何協助 XML 外部實體?

  • 如果您是開發人員:Fortify 會偵測易受攻擊的 XML 解析器,並建議減緩因素。
  • 如果您是 QA 或作業人員:Fortify 會自動掃描易受攻击的 XML 解析器,並驗證漏洞利用的有效負載。
  • 如果您是營運部門的人員:Fortify 為 Java 和 .NET 應用程式中的問題提供執行時記錄和保護。

A5:破壞的存取控制

當程式碼和環境限制重疊不完整,或在多處為類似的功能定義時,就可能產生存取控制問題。當透過強制瀏覽受限制的頁面,或當應用程式以多種方式和位置定義存取控制的複雜方法時,通常會發現逐層安全性被破解的例子。攻擊者可以攻破存取邊界,竊取敏感資料或中斷作業。

是什麼讓應用程式容易受到破壞的存取控制?

  • 能夠在未登入時充當使用者,或在以使用者身份登入時充當管理員。
  • 竄改元資料或識別碼以獲得未經授權或提升的權限。
  • 拜占庭式、未執行或分散的存取控制邏輯。

破壞存取控制會造成什麼影響?

  • 未經授權的資訊洩露或敏感資料外洩。
  • 修改或銷毀資料。
  • 接管網站管理或使用者。

Fortify 如何協助破壞存取控制?

  • 如果您是開發人員:Fortify 可自動進行稽核,並允許模板化以移除其他地方已減緩的問題。
  • 如果您在 QA 和營運部門:Fortify 代理程式偵測隱藏的攻擊面和破壞的存取控制系統。
  • 如果您在作業中:針對 Java 和 .NET 應用程式的 Fortify 工具執行時存取控制記錄。

A6:安全設定錯誤

在應用程式或其基礎環境的組態過程中,可能會引入安全性錯誤組態的缺陷。配置錯誤可能發生在應用程式堆疊的任何層級,從網路服務、應用程式伺服器到容器和儲存。預設帳號和組態、"洩漏的" 錯誤訊息,或未修補的框架和服務,都是常見的例子。攻擊者可以取得部署資訊和存取特權資料,從而擾亂作業。

是什麼讓應用程式容易受到安全錯誤設定的影響?

  • 不必要地啟用預設連接埠和帳戶或未變更的密碼。
  • 在發生錯誤和異常時,揭示堆疊追蹤或其他訊息。
  • 未針對堆疊的任何部分所造成的風險,適當地強化安全性。

安全設定錯誤有什麼影響?

影響可能從資訊洩露到系統完全受損不等。

Fortify 如何協助解決安全設定錯誤的問題?

  • 如果您是開發人員:Fortify 會在掃描過程中識別應用程式的相依性和配置檔案。
  • 如果您在 QA 和營運部門工作:Fortify 會動態評估應用程式和伺服器組態的問題。
  • 如果您在營運:Fortify 提供報告環境風險的開放原始碼分析。

A7: 跨網站指令碼

當不受信任、未經潔淨的使用者輸入作為 HTML 的一部分執行時,或當使用者受到影響而與惡意連結互動時,就會引發跨站點指令碼 (XSS) 漏洞。當我們熟悉的 JavaScript 或 Flash 等語言的程式碼結構從不受信任的來源接受,或儲存供其他使用者代理稍後顯示時,通常會發現這些範例。攻擊者可以在使用者的電腦上執行遠端程式碼、竊取憑證或從重定向網站傳送惡意軟體。

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

XSS 有三種形式,通常以使用者代理程式 (例如瀏覽器) 為目標:

  • 反射式 XSS:應用程式或 API 在 HTML 輸出中包含不受信任的輸入。
  • 儲存的 XSS:儲存至磁碟的非消毒程式碼稍後會由使用者動作觸發。
  • DOM XSS:使用不受信任輸入的應用程式、架構和 API。

跨網站指令碼 (XSS) 有何影響?

  • 接管受害者在應用程式中的帳戶。
  • 從目標網路應用程式擷取資料。
  • 修改頁面上的內容。

Fortify 如何協助處理跨網站指令碼 (XSS)?

  • 如果您是開發人員:Fortify 可偵測程式碼中的 XSS 漏洞,並預測被利用的可能性。
  • 如果您是 QA 和營運人員:Fortify 會動態驗證程式碼,以偵測易受 XSS 攻擊的未經刪除輸入。
  • 如果您在營運部門:Fortify 提供 Java 和 .NET 事件記錄,包括未經授權的重定向。

A8:不安全的反序列化

當語言和框架允許將不受信任的序列化資料擴充為物件時,就可能會引發不安全的反序列化缺陷,這通常發生在 Web 應用程式通訊使用者或儲存應用程式狀態時。當開發人員對在反序列化過程中可以自我執行的方法不加任何限制時,通常會發現一些例子。攻擊者利用這些"小工具鏈" 在應用程式邏輯槓桿之外呼叫,從遠端執行程式碼、拒絕服務或取得未經授權的存取。

是什麼導致應用程式易受不安全的反序列化所影響?

  • 應用程式會從不信任的來源反序列化資料。
  • 在反序列化之前,應用程式不會驗證來源或內容。
  • 可接受的類別未列入白名單,以避免不必要的小工具曝光。

不安全的反序列化有什麼影響?

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

Fortify 如何協助處理不安全的反序列化?

  • 如果您是開發人員:Fortify 可偵測原始碼中的弱點,並提供元件分析。
  • 如果您在 QA 和營運部門工作:Fortify 動態執行應用程式的儀器,以驗證攻擊媒介。
  • 如果您在營運部門:Fortify Java 和 .NET 事件(包括反序列化)的儀器日誌。

A9:使用存在已知漏洞的元件

當開放源碼或協力廠商架構和函式庫被導入應用程式,並以相同權限執行時,就可能會產生這些缺陷。常見的例子是,以元件為基礎的開發導致不了解與依賴性相關的風險,元件或系統很難或無法修補。攻擊者利用易受攻擊的元件,造成歷史上最嚴重的攻擊事件,不過漏洞的範圍從應用程式入侵到遠端程式碼執行。

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

  • 這些可能是意外發生的(例如編碼錯誤)或故意(如backdoored 元件)。
  • 應用程式或環境使用未修補或過時的元件(應用程式現代化 之所以重要的原因之一)。
  • 缺乏掃描第三方程式碼或巢狀依賴關係中的漏洞。
  • 無法取得元件清單或忽略安全公告。

使用存在已知漏洞的元件會有什麼影響?

雖然有些已知的漏洞只會造成輕微的影響,但一些最大的已知漏洞,例如 Heartbleed 和 Shellshock,都是依靠利用共用元件中的已知漏洞。使用存在已知程式碼漏洞的元件可能會導致受影響伺服器遠端執行程式碼,讓攻擊者完全控制機器。

Fortify 如何協助開放原始碼安全?

  • 如果您是開發人員:Fortify 透過 Sonatype 整合提供軟體元件分析。
  • 如果您在 QA 和營運部門:Fortify 可在執行時自動動態驗證已知的弱點。
  • 如果您在營運:Fortify Java 和 .NET 應用程式元件的工具記錄和保護。

A10:日誌記錄與監控不足

如果未充分瞭解攻擊媒介或應用程式的不當行為,或未遵循監控入侵指標的最佳作法,就可能造成記錄與監控不足的瑕疵。這些例子常見於沒有記錄功能的舊式系統、應用程式滲透測試的記錄未經檢視,或是記錄無法提供足夠的詳細資料以瞭解攻擊者的所作所為。攻擊者依賴平均約 200 天的偵測時間,通常是由外部發現,以建立持續性,並轉移至其他易受攻擊的系統。

是什麼導致應用程式容易受到記錄與監控不足的影響?

  • 警告和錯誤不會產生任何日誌訊息、訊息不足或不清楚。
  • 日誌儲存於本機,沒有竄改控制和/或不受監控。
  • 警報臨界值和回應程序不足或導致無法採取任何行動。

記錄和監控不足會有什麼影響?

大多數成功的攻擊都是從探測弱點開始。允許這類探測繼續,會提高成功入侵的可能性。攻擊者可能會建立持久性、回溯應用程式和作業系統、竊取資料,或以其他方式在未被察覺的情況下取得未經授權的系統控制權。如果未適當記錄或儲存安全關鍵資訊,就沒有蛛絲馬跡可供鑑識分析以發現攻擊來源。如果攻擊者能夠控制日誌記錄功能,要了解是否存在問題可能會變得更加困難,甚至不可能。

Fortify 如何協助解決記錄與監控不足的問題?

  • 如果您是開發人員:Fortify 掃描應用程式和 API 中的日誌功能,以找出漏洞。
  • 如果您是 QA 和營運人員:Fortify 動態掃描,產生應用程式日誌以進行充分性審查,就像 Pen Test。
  • 如果您在營運:Fortify Java 和 .NET 應用程式的工具記錄和保護。

OWASP (2021) 有什麼新消息?

雖然自 2017 年發佈上一次 Top 10 至今只有四年時間,但網路安全產業已發生許多變化,讓我們不得不三思最優先的關注事項,或是新增哪些新的關注事項。

引入了三個新類別:

A04:2021

不安全的設計:此類別著重於設計缺陷。之所以需要這樣做,是因為在開發過程中向左移動需要威脅建模也向左移動。

A08:2021

軟體與資料完整性失敗:專注於軟體更新、關鍵資料和 CI/CD 管線的假設,卻沒有驗證它們可能影響的完整性。這也包含了 A08:2017 - 不安全的反序列化。

A10:2021

伺服器端請求偽造 (SSRF):此類別大多數在社區調查的前十名中。他們非常強調這個漏洞,因為它的可利用性和影響都高於平均值。

其他變更

其他類別不是更改名稱、移動職級,就是合併到其他類別:

  • A01:2017 - 注塑下移至 A:03。
  • A02:2017 - 驗證失敗更名為識別和驗證失敗,並下移至 A07。
  • A03:2017 - 敏感資料外洩已上移至 A02,並重新命名為加密失敗,以便更全面地解決根本原因,而不僅僅是症狀。
  • A05:2017 - 破壞的存取控制移至 A01,因為 94% 他們測試的應用程式顯示暴露於某種形式的破壞的存取控制。
  • A06:2017 - 安全性配置錯誤上移一位至 A05。
  • A07:2017 - 跨網站指令碼 (XSS) 已併入 A03 注入。
  • A09:2017 - 使用已知漏洞的元件被上移至 A06,並重新命名為漏洞與過期元件。這個改變很大程度上是因為社區將它排在他們的名單上的第 2 位。
  • A10:2017 - 記錄不足& 監控上移到 A09,現在稱為安全記錄和監控失敗。

想瞭解 Fortify 如何幫助您的組織?立即 開始 15 天免費試用 OpenText™ 的 Fortify on Demand

我們能如何幫助您?

註腳