使用OWASP的AppSec入門
我們繼續(xù)看到大數(shù)據(jù)泄露影響各種規(guī)模的組織。 隨著網(wǎng)絡(luò)安全問題的持續(xù)發(fā)生,甚至頻率和嚴(yán)重性的增加,我們還想知道:“我們下一步?”和“我該怎么辦?”這就是OWASP的用武之地。
什么是OWASP Top 10?
OWASP以OWASP Top 10最著名,它是Open Web Application Security Project,這是一個開放社區(qū),提供免費(fèi)的信息和有關(guān)應(yīng)用程序安全性的培訓(xùn)。OWASP Top 10是Web應(yīng)用程序的常見危險安全風(fēng)險列表,并定期更新以保持最新狀態(tài)。如果您在應(yīng)用程序安全性方面做得不太好,或者您所做的只是臨時的,則OWASP Top 10是一個很好的起點(diǎn)。
今天的OWASP十大漏洞是什么?
OWASP Top 10的最新更新于2017年,其中包括以下漏洞A1-A10:
- 大量資金的投入
- 認(rèn)證失敗
- 敏感數(shù)據(jù)暴露
- XML外部實體(XXE)
- 存取控制中斷
- 安全配置錯誤
- 跨站腳本(XSS)
- 不安全的反序列化
- 使用具有已知漏洞的組件
- 記錄和監(jiān)控不足
OWASP提供了前十名的文檔,并為每個漏洞專門提供了一個網(wǎng)頁。該頁面描述了每個漏洞是什么,并提供了風(fēng)險評分,該評分用于幫助對可能的漏洞進(jìn)行優(yōu)先級劃分和分類。請參閱下面的頁面示例:
頁面上的各個部分可幫助您了解每個漏洞的重要性和危險。
該應(yīng)用程序容易受到攻擊嗎?
名為“應(yīng)用程序易受攻擊”部分解釋了應(yīng)用程序具有此漏洞的含義,以及哪種工具(DAST,SAST等)可用于發(fā)現(xiàn)該特定漏洞。
攻擊場景示例
“攻擊場景示例”部分顯示了攻擊者如何利用每個漏洞。此信息可用于幫助構(gòu)建測試,以及就軟件漏洞如何影響應(yīng)用程序安全性向團(tuán)隊進(jìn)行教育。
如何預(yù)防
“如何預(yù)防”部分是最有趣的恕我直言。安全測試很重要,但是構(gòu)建安全代碼是增強(qiáng)應(yīng)用程序安全性的唯一堅實基礎(chǔ)。本節(jié)概述了各種策略,這些策略不僅可以通過早期測試,而且可以通過構(gòu)建從根本上不容易受到攻擊的更好的代碼來幫助您左移安全性。這是“設(shè)計安全性”方法的基礎(chǔ)(例如,GDPR要求)。
參考文獻(xiàn)
最后,每個Top-10項目都有一個部分,其中包含有關(guān)每個問題,避免問題的方法以及測試方法的更多信息。它還包含將導(dǎo)致您遇到相關(guān)問題的鏈接。在您不斷提高軟件安全性時,這將非常有用。
閱讀OWASP Top 10文檔時,您可能會發(fā)現(xiàn)其中一些僅從名稱上就顯而易見,而另一些則需要更深入地理解。例如,A1(“注入”)實際上是廣泛的集合,例如SQL注入、命令注入、LDAP注入等等。此安全弱點(diǎn)的根本原因是,在應(yīng)用程序使用用戶輸入之前,沒有對用戶輸入進(jìn)行充分的檢查和清理。
為什么使用OWASP Top 10?
OWASP Top 10中提供了信息、培訓(xùn)和建議。您可以了解常見的安全問題以及檢測甚至完全避免某些問題的策略。所有這些信息都是免費(fèi)提供的,并且會不斷更新和改進(jìn)。
合規(guī)性還意味著我們需要確切了解工具包中的哪個特定項目支持標(biāo)準(zhǔn)的哪個特定部分。在靜態(tài)分析的情況下,這意味著知道哪些檢查者支持標(biāo)準(zhǔn)中的哪些項目,以及標(biāo)準(zhǔn)中是否存在需要靜態(tài)分析之外的項目(即,對等代碼查看或軟件組成分析)。
從頭開始
對于軟件開發(fā)組織來說,從頭開始進(jìn)行安全性保護(hù)很容易(并且很危險),可以使用外部、后期周期的全系統(tǒng)測試(例如滲透測試)(我可能將其稱為DevTestOpsSec)。當(dāng)然,此測試非常適合證明應(yīng)用程序/系統(tǒng)不包含OWASP中列舉的任何漏洞。但是,這種黑盒測試并不是實際產(chǎn)生更安全的代碼的最有效方法。我們不想依靠黑盒測試來保護(hù)我們的軟件或發(fā)現(xiàn)錯誤,而是想要使用它來證明該軟件是安全的。
因此,如果滲透測試發(fā)現(xiàn)漏洞,我們需要問自己為什么,并嘗試解決導(dǎo)致該問題的根本原因。這是當(dāng)我們從“測試安全性”轉(zhuǎn)變?yōu)椤霸O(shè)計安全性”的時候。為此,您將找到支持OWASP的靜態(tài)應(yīng)用程序安全測試(SAST)工具,例如靜態(tài)代碼分析。
不只是DAST和SAST
值得注意的一點(diǎn)是,OWASP Top 10中的A9項目與其余項目完全不同,并且不適合SAST或DAST,因為它是在尋找開源中的已知漏洞,而不是尋找新漏洞。
幸運(yùn)的是,OWASP為此提供了一個免費(fèi)的工具OWASP Dependency Check。該工具可識別項目依賴項并檢查是否存在任何已知的、公開披露的漏洞,并可用于掃描應(yīng)用程序及其依賴庫以識別已知的易受攻擊的組件。
(如果您使用的是Parasoft,我們實際上將OWASP Dependency Check集成到了我們的報告系統(tǒng)中,并使其成為OWASP Top 10儀表板的一部分。這使得通過掃描作為CI的常規(guī)部分來輕松處理開源組件中的問題。與SAST一起使用,并將結(jié)果與其他OWASP信息一起放入一個統(tǒng)一的儀表板中。通過這種方法,A9可以與前十名集成,而不必是一個單獨(dú)的正交過程。
靜態(tài)代碼分析工具和技巧
靜態(tài)分析的好處在于您不需要完成整個應(yīng)用程序或系統(tǒng),因此可以在周期的更早階段開始檢查安全問題(向左移動安全測試)。如果您要在開發(fā)的后期或即將結(jié)束(DevOpsSec)進(jìn)行安全性保護(hù),則可以在實際編寫代碼(DevSecOps)之前,甚至在測試開始之前,使用靜態(tài)分析來推動安全性。
靜態(tài)分析的丑陋一面是,它以非常嘈雜而著稱,例如,當(dāng)您以為可以發(fā)布時,就會產(chǎn)生數(shù)百甚至數(shù)千個違規(guī)。幸運(yùn)的是,有一些非常好的策略可以解決這個問題。請記住以下幾點(diǎn):
- 直到最后才保存安全測試。開始編碼后,立即開始運(yùn)行靜態(tài)分析。如果您等待并且僅將其作為CI/CD管道的一部分來運(yùn)行,那么結(jié)果將堆積起來并使您的開發(fā)團(tuán)隊不知所措。在桌面上運(yùn)行以查找問題,然后在CI/CD中運(yùn)行以簡單地驗證代碼是否正確構(gòu)建
- 微調(diào)您的配置。在代碼的上下文中,可能不需要某些靜態(tài)分析檢查器。檢查您的應(yīng)用程序,確定哪些安全風(fēng)險對您很重要,然后再進(jìn)行處理。永遠(yuǎn)不要尋找您不打算解決的問題。
- 代碼的年齡很重要。“如果沒有損壞,請不要修復(fù)”應(yīng)適用于舊版代碼。僅對最舊的代碼運(yùn)行最關(guān)鍵的安全掃描程序。小問題會浪費(fèi)您的時間,而這些更改會帶來新的風(fēng)險。切勿檢查您不打算修復(fù)的代碼。
- 一切都與風(fēng)險有關(guān)。SAST工具既可以發(fā)現(xiàn)實際漏洞,也可以發(fā)現(xiàn)潛在漏洞。并非所有發(fā)現(xiàn)都具有相同的潛在風(fēng)險。OWASP通過根據(jù)漏洞利用的難易程度,發(fā)現(xiàn)漏洞的難易程度以及漏洞的實際影響來定義前十名中每個項目的風(fēng)險,為您提供了幫助。使用以下有用信息來對SAST結(jié)果進(jìn)行優(yōu)先級排序和分類:
預(yù)防的力量
如果您想真正強(qiáng)化您的應(yīng)用程序,我想強(qiáng)調(diào)一些重要的內(nèi)容。進(jìn)行安全性測試非常容易,但是要進(jìn)行安全性測試則更加困難。幸運(yùn)的是,靜態(tài)分析檢查器具有不同的風(fēng)格。一些檢查器會查找諸如污染數(shù)據(jù)之類的典型問題,并嘗試找出應(yīng)用程序中是否存在可能發(fā)生數(shù)據(jù)流的地方。這些是許多SAST工具中最常見的檢查器。
但是在靜態(tài)代碼分析中,更大的價值在于執(zhí)行兩個特殊操作的檢查器:
- 過去經(jīng)常與問題相關(guān)的模式。盡管這看起來不像是針對漏洞利用的特定堆棧跟蹤那樣有趣,但僅修復(fù)比其本應(yīng)弱的所有東西比僅修復(fù)具有可靠攻擊向量的問題要徹底得多。
- 特定類型編碼的要求,以確保正常運(yùn)行。MISRA和JSF等汽車和飛機(jī)標(biāo)準(zhǔn)都依靠此技術(shù)來確保功能安全。除了標(biāo)記錯誤代碼之外,還需要良好代碼的相同技術(shù)將幫助您構(gòu)建更安全的應(yīng)用程序。
具有諷刺意味的是,這是安全關(guān)鍵型行業(yè)數(shù)十年來一直在使用硬件和軟件的方法,但是在網(wǎng)絡(luò)安全方面,我們認(rèn)為可以將安全性測試到應(yīng)用程序中,而不必專注于構(gòu)建安全代碼。除早期檢測檢查程序外,還利用主動靜態(tài)分析的全部功能來獲得最大價值。
總結(jié)
如果您從未專注于安全性,那么獲得OWASP Top 10并非易事,但這是可以實現(xiàn)的,并且是一個很好的起點(diǎn)。DAST是入門十強(qiáng)的一種簡單方法,然后使用SAST將幫助您向左移動安全測試。如果實施得當(dāng),SAST甚至可以預(yù)防問題,而不僅僅是發(fā)現(xiàn)問題,因此,尋找具有檢測和預(yù)防檢查程序的完全符合標(biāo)準(zhǔn)的工具。
了解如何利用OWASP風(fēng)險評分來幫助確定結(jié)果的優(yōu)先級,并確保您的工具將風(fēng)險信息與結(jié)果一起輸出。這將幫助您專注于最重要的方面,這是成功實施OWASP的關(guān)鍵。
使用這些技巧,您應(yīng)該準(zhǔn)備開始消除當(dāng)今最常見和最危險的Web應(yīng)用程序安全風(fēng)險。