靜態分析安全測試(SAST)是指不運行被測程序自己,僅經過分析或者檢查源程序的語法、結構、過程、接口等來檢查程序的正確性,那麼採用靜分析安全測試的方法有什麼優缺點呢,且讓小編給你說道說道。html
許多公司都投資於 HP Fortify、IBM AppScan Source、 Checkmarx 或 Coverity 之類的靜態分析安全測試(Static Analysis Security Testing,SAST)解決方案。若是使用得當,SAST 解決方案的確能大放異彩:相比於動態分析或運行時測試方案,它們能在開發階段,而不是開發完成以後,探測出源碼中的安全漏洞,從而大大下降修復安全問題的成本。它們還能找到許多動態分析工具一般沒法找到的漏洞。並且,得益於其自動化的特性,SAST 工具能在成百上千款應用間實現伸縮,而這是僅靠人爲分析方法沒法企及的。編程
在對 SAST 解決方案投資以後,一些公司便放棄了在應用安全領域的進一步投資。這類公司的股東每每認爲:靜態分析方法覆蓋了絕大多數軟件安全漏洞,或是諸如 OWASP 前十的重要高風險漏洞,所以已經足夠好了。這些公司每每不會在軟件開發初期就考慮安全問題,而是止步於在應用部署到生產環境以前,得到一份來自掃描工具的「無瑕疵報告」。其實,這種心態很是危險,由於它無視了 SAST 技術的基本限制。安全
《用靜態分析方法確保編程安全(Secure Programming with Static Analysis)》一書詳細描述了靜態分析技術的基本原理。此書的做者 Brian Chess 與 Jacob West 是 Fortify Software 公司背後的技術骨幹,此公司後來被惠普收購。在書中,做者談到:「一半的安全問題都源自軟件的設計,而非源碼。」以後,他們列舉了軟件安全問題的類別,好比與上下文特定的缺陷(這類問題每每在代碼中可見)等等。他們還指出:「沒有人敢斷言,源碼檢查就能找出全部問題。」網絡
靜態分析工具至關複雜。爲了正常發揮其功能,它們須要從語義上理解程序的代碼、依賴關係、配置文件以及可能不是用同一種語言寫的組件。與此同時,它們還必須保持必定的速度以及準確性,從而下降誤報的數量。此外,JavaScript、Python 之類的動態類型語言,在編譯時每每沒法決定對象所屬的類或類型,所以進一步影響了靜態分析工具的效率。所以,找到大多數軟件安全漏洞不是不切實際,就是不可能的。框架
NIST SAMATE 項目力求測量靜態分析工具的效率,從而幫助公司改善該技術的使用狀況。它們對一些開源軟件包分別執行了靜態分析以及人工代碼檢查,並對比二者的結果。分析顯示,在所發現的所有漏洞中,1/8 到 1/3 的漏洞屬於簡單漏洞。進一步的研究發現,這些工具只能發現簡單的實現錯誤,對於須要深刻理解代碼結構或設計的漏洞每每一籌莫展。在流行的開源工具 Tomcat 上運行時,面對26個常見漏洞,靜態分析工具只對其中4個(15.4%)發出了警告。工具
這些統計數據與 Gartner 論文《應用安全:大膽想象,從關鍵入手 ( Application Security: Think Big, Start with What Matters ) 》中的發現相互呼應。在這篇論文中,做者談到:「有趣的是,一般認爲 SAST 只能覆蓋10%到20%的代碼問題,DAST 覆蓋另外的10%到20%。」按照這種觀點,若是一個公司自主開發了一個相似 Tomcat 的工具,並以靜態分析爲主要的應用安全措施,這意味着,會有22個常見的安全漏洞原封不動地遺留在他們部署的應用中。測試
Gary McGraw 博士將靜態分析沒法找出的諸多安全問題歸爲瑕疵,而非程序錯誤。這些瑕疵的性質與應用相關,靜態分析可能沒法找出的問題包括:設計
機密數據的存儲與傳輸,尤爲是當這些數據的程序設定與非機密數據無異時。htm
與身份認證相關的問題,好比蠻力攻擊敏感係數,密碼重置效力等。對象
與非標準數據隨機選擇的熵相關的問題
與數據保密性相關的問題,好比數據保持以及其它合規性問題(好比:確保信用卡號在顯示時是部分掩蓋的)。
與廣泛觀點相反,許多靜態分析工具的覆蓋缺口隱含着巨大的組織風險。並且,多數公司組織都沒法接觸源代碼,致使 SAST 工具可能沒法理解某種特定的語言或框架,再加上大規模部署這一技術以及處理錯誤警報帶來的挑戰,這一風險變得更爲複雜了。
儘管靜態分析是確保安全開發的重要技術,但顯而易見,它比不上從創建應用之初就考慮安全問題的策略。公司組織只有將安全理念融入產品需求與設計中去,並以靜態分析等技術加以驗證,才最有可能創造出牢固安全的軟件。
現在,多樣化的攻擊手段層出不窮,傳統安全解決方案愈來愈難以應對網絡安全攻擊。OneRASP 實時應用自我保護技術,能夠爲軟件產品提供精準的實時保護,使其免受漏洞所累。想閱讀更多技術文章,請訪問 OneAPM 官方技術博客。
本文轉自 OneAPM 官方博客