2021 owasp top10
OWASP Top 10 是“Web應(yīng)用程序十大安全風(fēng)險(xiǎn)列表” ,總結(jié)了Web應(yīng)用程序最可能、最常見、最危險(xiǎn)的十大漏洞,是開發(fā)、測試、服務(wù)、咨詢?nèi)藛T應(yīng)知應(yīng)會(huì)的知識(shí)。
0x02 2021年前十名變化
今年的榜單有三個(gè)新類別,相比2017版四個(gè)類別的命名和范圍發(fā)生了變化,并在 2021 年榜單中進(jìn)行了一些類別合并。
A01:2021-Broken Access Control從第五位上升;94% 的應(yīng)用程序都經(jīng)過了某種形式的破壞訪問控制的測試。映射到 Broken Access Control 的 34 個(gè) CWE 在應(yīng)用程序中出現(xiàn)的次數(shù)比任何其他類別都多。
A02:2021-Cryptographic Failures?上移一位至 #2,以前稱為敏感數(shù)據(jù)暴露,這是廣泛的癥狀而不是根本原因。此處重新關(guān)注與密碼學(xué)相關(guān)的故障,這些故障通常會(huì)導(dǎo)致敏感數(shù)據(jù)暴露或系統(tǒng)受損。
A03:2021-Injection下滑到第三位。94% 的應(yīng)用程序都針對(duì)某種形式的注入進(jìn)行了測試,映射到此類別的 33 個(gè) CWE 在應(yīng)用程序中出現(xiàn)次數(shù)第二多。跨站點(diǎn)腳本編寫現(xiàn)在是此版本中此類別的一部分。
A04:2021-不安全設(shè)計(jì)是2021 年的一個(gè)新類別,重點(diǎn)關(guān)注與設(shè)計(jì)缺陷相關(guān)的風(fēng)險(xiǎn)。如果我們真的想作為一個(gè)行業(yè)“向左移動(dòng)”,就需要更多地使用威脅建模、安全設(shè)計(jì)模式和原則以及參考架構(gòu)。
A05:2021-安全配置錯(cuò)誤從上一版的第 6 位上升;90% 的應(yīng)用程序都經(jīng)過了某種形式的錯(cuò)誤配置測試。隨著更多轉(zhuǎn)向高度可配置的軟件,看到這一類別上升也就不足為奇了。XML 外部實(shí)體 (XXE) 的前一個(gè)類別現(xiàn)在屬于此類別。
A06:2021-Vulnerable and Outdated Components之前的標(biāo)題是使用具有已知漏洞的組件,在行業(yè)調(diào)查中排名第二,但也有足夠的數(shù)據(jù)通過數(shù)據(jù)分析進(jìn)入前 10 名。該類別從 2017 年的第 9 位上升,是我們難以測試和評(píng)估風(fēng)險(xiǎn)的已知問題。它是唯一沒有任何 CVE 映射到包含的 CWE 的類別,因此默認(rèn)的利用和影響權(quán)重 5.0 被計(jì)入他們的分?jǐn)?shù)。
A07:2021-Identification and Authentication Failures以前是 Broken Authentication 并且從第二位下滑,現(xiàn)在包括與識(shí)別失敗更多相關(guān)的 CWE。這個(gè)類別仍然是前 10 名的一個(gè)組成部分,但標(biāo)準(zhǔn)化框架的可用性增加似乎有所幫助。
A08:2021-軟件和數(shù)據(jù)完整性故障是 2021 年的一個(gè)新類別,專注于在不驗(yàn)證完整性的情況下做出與軟件更新、關(guān)鍵數(shù)據(jù)和 CI/CD 管道相關(guān)的假設(shè)。CVE/CVSS 數(shù)據(jù)的最高加權(quán)影響之一映射到此類別中的 10 個(gè) CWE。2017 年的不安全反序列化現(xiàn)在是這一更大類別的一部分。
A09:2021-安全日志記錄和監(jiān)控失敗以前是日志記錄和監(jiān)控不足,是從行業(yè)調(diào)查 (#3) 中添加的,從之前的 #10 上升。此類別已擴(kuò)展為包括更多類型的故障,難以測試,并且在 CVE/CVSS 數(shù)據(jù)中沒有得到很好的體現(xiàn)。但是,此類故障會(huì)直接影響可見性、事件警報(bào)和取證。
A10:2021-Server-Side Request Forgery是從行業(yè)調(diào)查 (#1) 中添加的。數(shù)據(jù)顯示發(fā)生率相對(duì)較低,測試覆蓋率高于平均水平,并且利用和影響潛力的評(píng)級(jí)高于平均水平。此類別代表行業(yè)專業(yè)人士告訴我們這很重要的場景,即使目前數(shù)據(jù)中沒有說明。
0x03 OWASP Top 10 - 2021
A01:2021 -?損壞的訪問控制
描述
訪問控制強(qiáng)制執(zhí)行策略,使用戶不能在其預(yù)期權(quán)限之外采取行動(dòng)。故障通常會(huì)導(dǎo)致未經(jīng)授權(quán)的信息泄露、修改或破壞所有數(shù)據(jù)或執(zhí)行超出用戶限制的業(yè)務(wù)功能。常見的訪問控制漏洞包括:
-
通過修改 URL、內(nèi)部應(yīng)用程序狀態(tài)或 HTML 頁面,或僅使用自定義 API 攻擊工具來繞過訪問控制檢查。
-
允許將主鍵更改為其他用戶的記錄,允許查看或編輯其他人的帳戶。
-
特權(quán)提升。在未登錄的情況下充當(dāng)用戶或以用戶身份登錄時(shí)充當(dāng)管理員。
-
元數(shù)據(jù)操作,例如重放或篡改 JSON Web 令牌 (JWT) 訪問控制令牌,或用于提升權(quán)限或?yàn)E用 JWT 失效的 cookie 或隱藏字段。
-
CORS 錯(cuò)誤配置允許未經(jīng)授權(quán)的 API 訪問。
-
強(qiáng)制以未經(jīng)身份驗(yàn)證的用戶身份瀏覽經(jīng)過身份驗(yàn)證的頁面或以標(biāo)準(zhǔn)用戶身份瀏覽特權(quán)頁面。訪問 API 時(shí)缺少對(duì) POST、PUT 和 DELETE 的訪問控制。
如何預(yù)防
訪問控制僅在受信任的服務(wù)器端代碼或無服務(wù)器 API 中有效,攻擊者無法修改訪問控制檢查或元數(shù)據(jù)。
-
除公共資源外,默認(rèn)拒絕。
-
實(shí)施一次訪問控制機(jī)制并在整個(gè)應(yīng)用程序中重復(fù)使用它們,包括最大限度地減少 CORS 的使用。
-
模型訪問控制應(yīng)該強(qiáng)制記錄所有權(quán),而不是接受用戶可以創(chuàng)建、讀取、更新或刪除任何記錄。
-
獨(dú)特的應(yīng)用程序業(yè)務(wù)限制要求應(yīng)由領(lǐng)域模型強(qiáng)制執(zhí)行。
-
禁用 Web 服務(wù)器目錄列表并確保文件元數(shù)據(jù)(例如 .git)和備份文件不在 Web 根目錄中。
-
記錄訪問控制失敗,在適當(dāng)時(shí)提醒管理員(例如,重復(fù)失敗)。
-
速率限制 API 和控制器訪問,以最大限度地減少自動(dòng)攻擊工具的危害。
-
注銷后,JWT 令牌應(yīng)在服務(wù)器上失效。
開發(fā)人員和 QA 人員應(yīng)包括功能訪問控制單元和集成測試。
A02:2021 - 加密失敗
描述
首先是確定傳輸中和靜止數(shù)據(jù)的保護(hù)需求。例如,密碼、信用卡號(hào)、健康記錄、個(gè)人信息和商業(yè)秘密需要額外保護(hù),主要是如果該數(shù)據(jù)屬于隱私法(例如歐盟的通用數(shù)據(jù)保護(hù)條例 (GDPR))或法規(guī)(例如金融數(shù)據(jù)保護(hù))例如 PCI 數(shù)據(jù)安全標(biāo)準(zhǔn) (PCI DSS)。對(duì)于所有此類數(shù)據(jù):
-
是否有任何數(shù)據(jù)以明文形式傳輸?這涉及 HTTP、SMTP 和 FTP 等協(xié)議。外部互聯(lián)網(wǎng)流量是危險(xiǎn)的。驗(yàn)證所有內(nèi)部流量,例如,負(fù)載平衡器、Web 服務(wù)器或后端系統(tǒng)之間的流量。
-
默認(rèn)情況下或在較舊的代碼中是否使用任何舊的或弱的加密算法?
-
是否正在使用默認(rèn)加密密鑰、生成或重復(fù)使用弱加密密鑰,或者是否缺少適當(dāng)?shù)拿荑€管理或輪換?
-
是否未強(qiáng)制執(zhí)行加密,例如,是否缺少任何用戶代理(瀏覽器)安全指令或標(biāo)頭?
-
用戶代理(例如,應(yīng)用程序、郵件客戶端)是否不驗(yàn)證收到的服務(wù)器證書是否有效?
請(qǐng)參閱 ASVS 加密 (V7)、數(shù)據(jù)保護(hù) (V9) 和 SSL/TLS (V10)
如何預(yù)防
至少執(zhí)行以下操作,并查閱參考資料:
-
對(duì)應(yīng)用程序處理、存儲(chǔ)或傳輸?shù)臄?shù)據(jù)進(jìn)行分類。根據(jù)隱私法、監(jiān)管要求或業(yè)務(wù)需求確定哪些數(shù)據(jù)是敏感的。
-
根據(jù)分類應(yīng)用控制。
-
不要不必要地存儲(chǔ)敏感數(shù)據(jù)。盡快丟棄它或使用符合 PCI DSS 的標(biāo)記化甚至截?cái)唷N幢A舻臄?shù)據(jù)不能被竊取。
-
確保加密所有靜態(tài)敏感數(shù)據(jù)。
-
確保擁有最新且強(qiáng)大的標(biāo)準(zhǔn)算法、協(xié)議和密鑰;使用適當(dāng)?shù)拿荑€管理。
-
使用安全協(xié)議(例如具有完美前向保密 (PFS) 密碼的 TLS、服務(wù)器的密碼優(yōu)先級(jí)和安全參數(shù))加密所有傳輸中的數(shù)據(jù)。使用 HTTP 嚴(yán)格傳輸安全 (HSTS) 等指令強(qiáng)制加密。
-
對(duì)包含敏感數(shù)據(jù)的響應(yīng)禁用緩存。
-
使用具有工作因子(延遲因子)的強(qiáng)自適應(yīng)和加鹽散列函數(shù)存儲(chǔ)密碼,例如 Argon2、scrypt、bcrypt 或 PBKDF2。
-
獨(dú)立驗(yàn)證配置和設(shè)置的有效性。
A03:2021 -?注入
描述
應(yīng)用程序在以下情況下容易受到攻擊:
-
應(yīng)用程序不會(huì)驗(yàn)證、過濾或清理用戶提供的數(shù)據(jù)。
-
沒有上下文感知轉(zhuǎn)義的動(dòng)態(tài)查詢或非參數(shù)化調(diào)用直接在解釋器中使用。
-
在對(duì)象關(guān)系映射 (ORM) 搜索參數(shù)中使用惡意數(shù)據(jù)來提取額外的敏感記錄。
-
直接使用或連接惡意數(shù)據(jù)。SQL 或命令包含動(dòng)態(tài)查詢、命令或存儲(chǔ)過程中的結(jié)構(gòu)和惡意數(shù)據(jù)。
一些更常見的注入是 SQL、NoSQL、OS 命令、對(duì)象關(guān)系映射 (ORM)、LDAP 和表達(dá)式語言 (EL) 或?qū)ο髨D導(dǎo)航庫 (OGNL) 注入。這個(gè)概念在所有口譯員中都是相同的。源代碼審查是檢測應(yīng)用程序是否容易受到注入攻擊的最佳方法。強(qiáng)烈建議對(duì)所有參數(shù)、標(biāo)頭、URL、cookie、JSON、SOAP 和 XML 數(shù)據(jù)輸入進(jìn)行自動(dòng)化測試。組織可以將靜態(tài)源 (SAST) 和動(dòng)態(tài)應(yīng)用程序測試 (DAST) 工具包含到 CI/CD 管道中,以在生產(chǎn)部署之前識(shí)別引入的注入缺陷。
如何預(yù)防
-
防止注入需要將數(shù)據(jù)與命令和查詢分開。
-
首選選項(xiàng)是使用安全的 API,它完全避免使用解釋器,提供參數(shù)化接口,或遷移到對(duì)象關(guān)系映射工具 (ORM)。
-
注意:即使在參數(shù)化時(shí),如果 PL/SQL 或 T-SQL 連接查詢和數(shù)據(jù)或使用 EXECUTE IMMEDIATE 或 exec() 執(zhí)行惡意數(shù)據(jù),則存儲(chǔ)過程仍然會(huì)引入 SQL 注入。
-
使用正面或“白名單”服務(wù)器端輸入驗(yàn)證。這不是一個(gè)完整的防御,因?yàn)樵S多應(yīng)用程序需要特殊字符,例如文本區(qū)域或移動(dòng)應(yīng)用程序的 API。
-
對(duì)于任何殘留的動(dòng)態(tài)查詢,使用該解釋器的特定轉(zhuǎn)義語法轉(zhuǎn)義特殊字符。
-
注意:表名、列名等 SQL 結(jié)構(gòu)不能轉(zhuǎn)義,因此用戶提供的結(jié)構(gòu)名是危險(xiǎn)的。這是報(bào)告編寫軟件中的常見問題。
-
在查詢中使用 LIMIT 和其他 SQL 控件以防止在 SQL 注入的情況下大量披露記錄。
A04:2021 -?不安全的設(shè)計(jì)
描述
不安全設(shè)計(jì)是一個(gè)廣泛的類別,代表許多不同的弱點(diǎn),表現(xiàn)為“缺失或無效的控制設(shè)計(jì)”。缺少不安全的設(shè)計(jì)是缺少控制的地方。例如,想象一下應(yīng)該加密敏感數(shù)據(jù)的代碼,但沒有方法。無效的不安全設(shè)計(jì)是可以實(shí)現(xiàn)威脅的地方,但域(業(yè)務(wù))邏輯驗(yàn)證不足會(huì)阻止該操作。例如,假設(shè)域邏輯應(yīng)該根據(jù)收入等級(jí)處理流行病稅收減免,但不驗(yàn)證所有輸入都已正確簽名并提供比應(yīng)授予的更重要的減免收益。
安全設(shè)計(jì)是一種文化和方法,它不斷評(píng)估威脅并確保代碼經(jīng)過穩(wěn)健設(shè)計(jì)和測試,以防止已知的攻擊方法。安全設(shè)計(jì)需要安全的開發(fā)生命周期、某種形式的安全設(shè)計(jì)模式或鋪砌道路組件庫或工具,以及威脅建模。
如何預(yù)防
-
與 AppSec 專業(yè)人員建立并使用安全的開發(fā)生命周期,以幫助評(píng)估和設(shè)計(jì)與安全和隱私相關(guān)的控制
-
建立和使用安全設(shè)計(jì)模式庫或準(zhǔn)備使用組件的鋪好的道路
-
將威脅建模用于關(guān)鍵身份驗(yàn)證、訪問控制、業(yè)務(wù)邏輯和關(guān)鍵流
-
編寫單元和集成測試以驗(yàn)證所有關(guān)鍵流都能抵抗威脅模型
A05:2021 -?安全配置錯(cuò)誤
描述
如果應(yīng)用程序是:
-
在應(yīng)用程序堆棧的任何部分缺少適當(dāng)?shù)陌踩珡?qiáng)化或?qū)υ品?wù)的權(quán)限配置不正確。
-
啟用或安裝了不必要的功能(例如,不必要的端口、服務(wù)、頁面、帳戶或權(quán)限)。
-
默認(rèn)帳戶及其密碼仍處于啟用狀態(tài)且未更改。
-
錯(cuò)誤處理向用戶顯示堆棧跟蹤或其他信息過多的錯(cuò)誤消息。
-
對(duì)于升級(jí)的系統(tǒng),最新的安全功能被禁用或未安全配置。
-
應(yīng)用程序服務(wù)器、應(yīng)用程序框架(例如,Struts、Spring、ASP.NET)、庫、數(shù)據(jù)庫等中的安全設(shè)置未設(shè)置為安全值。
-
服務(wù)器不發(fā)送安全標(biāo)頭或指令,或者它們未設(shè)置為安全值。
-
軟件已過時(shí)或易受攻擊(請(qǐng)參閱 A06:2021-易受攻擊和過時(shí)的組件)。
如果沒有協(xié)調(diào)一致的、可重復(fù)的應(yīng)用程序安全配置過程,系統(tǒng)將面臨更高的風(fēng)險(xiǎn)。
如何預(yù)防
應(yīng)實(shí)施安全安裝過程,包括:
-
可重復(fù)的強(qiáng)化過程使部署另一個(gè)適當(dāng)鎖定的環(huán)境變得快速而輕松。開發(fā)、QA 和生產(chǎn)環(huán)境都應(yīng)配置相同,在每個(gè)環(huán)境中使用不同的憑據(jù)。這個(gè)過程應(yīng)該是自動(dòng)化的,以最大限度地減少設(shè)置新安全環(huán)境所需的工作。
-
一個(gè)沒有任何不必要的功能、組件、文檔和示例的最小平臺(tái)。刪除或不安裝未使用的功能和框架。
-
作為補(bǔ)丁管理流程的一部分,審查和更新適用于所有安全說明、更新和補(bǔ)丁的配置的任務(wù)(請(qǐng)參閱 A06:2021-易受攻擊和過時(shí)的組件)。查看云存儲(chǔ)權(quán)限(例如,S3 存儲(chǔ)桶權(quán)限)。
-
分段應(yīng)用程序架構(gòu)通過分段、容器化或云安全組 (ACL) 在組件或租戶之間提供有效且安全的分離。
-
向客戶端發(fā)送安全指令,例如安全標(biāo)頭。
-
驗(yàn)證配置和設(shè)置在所有環(huán)境中的有效性的自動(dòng)化過程。
A06:2021 -?易受攻擊和過時(shí)的組件
描述
你可能很脆弱:
-
如果您不知道您使用的所有組件的版本(客戶端和服務(wù)器端)。這包括您直接使用的組件以及嵌套的依賴項(xiàng)。
-
如果軟件易受攻擊、不受支持或已過期。這包括操作系統(tǒng)、Web/應(yīng)用程序服務(wù)器、數(shù)據(jù)庫管理系統(tǒng) (DBMS)、應(yīng)用程序、API 和所有組件、運(yùn)行時(shí)環(huán)境和庫。
-
如果您不定期掃描漏洞并訂閱與您使用的組件相關(guān)的安全公告。
-
如果您沒有以基于風(fēng)險(xiǎn)的方式及時(shí)修復(fù)或升級(jí)底層平臺(tái)、框架和依賴項(xiàng)。這通常發(fā)生在修補(bǔ)是變更控制下的每月或每季度任務(wù)的環(huán)境中,使組織面臨數(shù)天或數(shù)月不必要地暴露于固定漏洞的風(fēng)險(xiǎn)。
-
如果軟件開發(fā)人員不測試更新、升級(jí)或修補(bǔ)的庫的兼容性。
-
如果您不保護(hù)組件的配置(請(qǐng)參閱 A05:2021-安全配置錯(cuò)誤)。
如何預(yù)防
應(yīng)該有一個(gè)補(bǔ)丁管理流程來:
-
刪除未使用的依賴項(xiàng)、不必要的功能、組件、文件和文檔。
-
使用版本、OWASP Dependency Check、retire.js 等工具持續(xù)清點(diǎn)客戶端和服務(wù)器端組件(例如框架、庫)及其依賴項(xiàng)的版本。成分。使用軟件組合分析工具來自動(dòng)化該過程。訂閱與您使用的組件相關(guān)的安全漏洞的電子郵件警報(bào)。
-
僅通過安全鏈接從官方來源獲取組件。首選簽名包以減少包含修改后的惡意組件的機(jī)會(huì)(請(qǐng)參閱 A08:2021-軟件和數(shù)據(jù)完整性故障)。
-
監(jiān)視未維護(hù)或未為舊版本創(chuàng)建安全補(bǔ)丁的庫和組件。如果無法打補(bǔ)丁,請(qǐng)考慮部署虛擬補(bǔ)丁來監(jiān)控、檢測或防止發(fā)現(xiàn)的問題。
每個(gè)組織都必須確保在應(yīng)用程序或產(chǎn)品組合的生命周期內(nèi)制定持續(xù)的監(jiān)控、分類和應(yīng)用更新或配置更改的計(jì)劃。
A07:2021 - 身份驗(yàn)證失敗
描述
確認(rèn)用戶的身份、身份驗(yàn)證和會(huì)話管理對(duì)于防止與身份驗(yàn)證相關(guān)的攻擊至關(guān)重要。如果應(yīng)用程序存在以下情況,則可能存在身份驗(yàn)證漏洞:
-
允許自動(dòng)攻擊,例如撞庫,其中攻擊者擁有有效用戶名和密碼的列表。
-
允許蠻力或其他自動(dòng)攻擊。
-
允許使用默認(rèn)密碼、弱密碼或眾所周知的密碼,例如“Password1”或“admin/admin”。
-
使用弱或無效的憑據(jù)恢復(fù)和忘記密碼流程,例如無法確保安全的“基于知識(shí)的答案”。
-
使用純文本、加密或弱散列密碼(請(qǐng)參閱 A3:2017-敏感數(shù)據(jù)暴露)。
-
缺少或無效的多因素身份驗(yàn)證。
-
在 URL 中公開會(huì)話 ID(例如,URL 重寫)。
-
成功登錄后不要輪換會(huì)話 ID。
-
不會(huì)正確地使會(huì)話 ID 無效。用戶會(huì)話或身份驗(yàn)證令牌(主要是單點(diǎn)登錄 (SSO) 令牌)在注銷或一段時(shí)間不活動(dòng)期間未正確失效。
如何預(yù)防
-
在可能的情況下,實(shí)施多因素身份驗(yàn)證以防止自動(dòng)憑證填充、暴力破解和被盜憑證重用攻擊。
-
不要使用任何默認(rèn)憑據(jù)進(jìn)行交付或部署,尤其是對(duì)于管理員用戶。
-
實(shí)施弱密碼檢查,例如針對(duì)前 10,000 個(gè)最差密碼列表測試新密碼或更改的密碼。
-
將密碼長度、復(fù)雜性和輪換策略與 NIST 800-63b 的第 5.1.1 節(jié)中關(guān)于記憶秘密的指南或其他現(xiàn)代的、基于證據(jù)的密碼策略保持一致。
-
通過對(duì)所有結(jié)果使用相同的消息,確保注冊、憑據(jù)恢復(fù)和 API 路徑能夠抵御帳戶枚舉攻擊。
-
限制或增加延遲失敗的登錄嘗試。當(dāng)檢測到憑證填充、暴力破解或其他攻擊時(shí),記錄所有故障并提醒管理員。
-
使用服務(wù)器端、安全、內(nèi)置的會(huì)話管理器,在登錄后生成新的高熵隨機(jī)會(huì)話 ID。會(huì)話 ID 不應(yīng)在 URL 中,安全存儲(chǔ),并在注銷、空閑和絕對(duì)超時(shí)后失效。
A08:2021 -?軟件和數(shù)據(jù)完整性故障
描述
軟件和數(shù)據(jù)完整性故障與不能防止完整性違規(guī)的代碼和基礎(chǔ)設(shè)施有關(guān)。例如,在對(duì)象或數(shù)據(jù)被編碼或序列化為攻擊者可以看到和修改的結(jié)構(gòu)的情況下,很容易受到不安全的反序列化的影響。另一種形式是應(yīng)用程序依賴來自不受信任的來源、存儲(chǔ)庫和內(nèi)容交付網(wǎng)絡(luò) (CDN) 的插件、庫或模塊。不安全的 CI/CD 管道可能會(huì)導(dǎo)致未經(jīng)授權(quán)的訪問、惡意代碼或系統(tǒng)受損。最后,許多應(yīng)用程序現(xiàn)在包括自動(dòng)更新功能,其中更新在沒有充分完整性驗(yàn)證的情況下被下載并應(yīng)用于以前受信任的應(yīng)用程序。攻擊者可能會(huì)上傳自己的更新以分發(fā)并在所有安裝上運(yùn)行。
如何預(yù)防
-
確保未簽名或未加密的序列化數(shù)據(jù)不會(huì)在沒有某種形式的完整性檢查或數(shù)字簽名的情況下發(fā)送到不受信任的客戶端,以檢測序列化數(shù)據(jù)的篡改或重放
-
通過簽名或類似機(jī)制驗(yàn)證軟件或數(shù)據(jù)來自預(yù)期來源
-
確保庫和依賴項(xiàng)(例如 npm 或 Maven)使用受信任的存儲(chǔ)庫
-
確保使用軟件供應(yīng)鏈安全工具(例如 OWASP Dependency Check 或 OWASP CycloneDX)來驗(yàn)證組件不包含已知漏洞
-
確保您的 CI/CD 管道具有正確的配置和訪問控制,以確保流經(jīng)構(gòu)建和部署過程的代碼的完整性。
A09:2021 -?安全日志記錄和監(jiān)控失敗
描述
回到 2021 年 OWASP 前 10 名,該類別旨在幫助檢測、升級(jí)和響應(yīng)主動(dòng)違規(guī)行為。如果沒有日志記錄和監(jiān)控,就無法檢測到漏洞。任何時(shí)候都會(huì)發(fā)生日志記錄、檢測、監(jiān)控和主動(dòng)響應(yīng)不足的情況:
-
不記錄可審計(jì)的事件,例如登錄、失敗登錄和高價(jià)值交易。
-
警告和錯(cuò)誤不會(huì)生成、不充分或不清楚的日志消息。
-
不會(huì)監(jiān)控應(yīng)用程序和 API 的日志是否存在可疑活動(dòng)。
-
日志僅存儲(chǔ)在本地。
-
適當(dāng)?shù)木瘓?bào)閾值和響應(yīng)升級(jí)流程沒有到位或有效。
-
DAST 工具(例如 OWASP ZAP)的滲透測試和掃描不會(huì)觸發(fā)警報(bào)。
-
應(yīng)用程序無法實(shí)時(shí)或接近實(shí)時(shí)地檢測、升級(jí)或警告主動(dòng)攻擊。
通過使用戶或攻擊者可以看到日志記錄和警報(bào)事件,您很容易受到信息泄漏的影響(請(qǐng)參閱 A01:2021 – 損壞的訪問控制)。
如何預(yù)防
開發(fā)人員應(yīng)實(shí)施以下部分或全部控制措施,具體取決于應(yīng)用程序的風(fēng)險(xiǎn):
-
確保所有登錄、訪問控制和服務(wù)器端輸入驗(yàn)證失敗都可以用足夠的用戶上下文來記錄,以識(shí)別可疑或惡意帳戶,并保留足夠的時(shí)間以允許延遲取證分析。
-
確保以日志管理解決方案可以輕松使用的格式生成日志。
-
確保日志數(shù)據(jù)編碼正確,以防止對(duì)日志或監(jiān)控系統(tǒng)的注入或攻擊。
-
確保高價(jià)值交易具有帶有完整性控制的審計(jì)跟蹤,以防止篡改或刪除,例如僅追加數(shù)據(jù)庫表或類似的。
-
DevSecOps 團(tuán)隊(duì)?wèi)?yīng)該建立有效的監(jiān)控和警報(bào),以便快速檢測和響應(yīng)可疑活動(dòng)。
-
制定或采用事件響應(yīng)和恢復(fù)計(jì)劃,例如 NIST 800-61r2 或更高版本。
有商業(yè)和開源應(yīng)用程序保護(hù)框架(例如 OWASP ModSecurity 核心規(guī)則集)和開源日志關(guān)聯(lián)軟件(例如 ELK 堆棧)具有自定義儀表板和警報(bào)功能。
A10:2021 -?服務(wù)器端請(qǐng)求偽造(SSRF)
描述
每當(dāng) Web 應(yīng)用程序在未驗(yàn)證用戶提供的 URL 的情況下獲取遠(yuǎn)程資源時(shí),就會(huì)出現(xiàn) SSRF 缺陷。它允許攻擊者強(qiáng)制應(yīng)用程序?qū)⒕脑O(shè)計(jì)的請(qǐng)求發(fā)送到意外目的地,即使受到防火墻、VPN 或其他類型的網(wǎng)絡(luò) ACL 的保護(hù)也是如此。
隨著現(xiàn)代 Web 應(yīng)用程序?yàn)樽罱K用戶提供方便的功能,獲取 URL 成為一種常見情況。因此,SSRF 的發(fā)病率正在增加。此外,由于云服務(wù)和架構(gòu)的復(fù)雜性,SSRF 的嚴(yán)重性越來越高。
如何預(yù)防
開發(fā)人員可以通過實(shí)施以下部分或全部深度防御控制來防止 SSRF:
從網(wǎng)絡(luò)層:
-
在單獨(dú)的網(wǎng)絡(luò)中分段遠(yuǎn)程資源訪問功能以減少 SSRF 的影響
-
強(qiáng)制執(zhí)行“默認(rèn)拒絕”防火墻策略或網(wǎng)絡(luò)訪問控制規(guī)則,以阻止除基本 Intranet 流量之外的所有流量
從應(yīng)用層:
-
清理和驗(yàn)證所有客戶端提供的輸入數(shù)據(jù)
-
使用肯定的允許列表強(qiáng)制執(zhí)行 URL 架構(gòu)、端口和目標(biāo)
-
不要向客戶端發(fā)送原始響應(yīng)
-
禁用 HTTP 重定向
-
注意 URL 一致性,以避免 DNS 重新綁定和“檢查時(shí)間、使用時(shí)間”(TOCTOU) 競爭條件等攻擊
不要通過使用拒絕列表或正則表達(dá)式來緩解 SSRF。攻擊者擁有有效負(fù)載列表、工具和技能來繞過拒絕列表。
總結(jié)
以上是生活随笔為你收集整理的2021 owasp top10的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天发现好多大网站感染木马程序Troja
- 下一篇: mondrian的个人总结