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