靜態(tài)分析安全測試(SAST)是指不運(yùn)行被測程序本身连霉,僅通過分析或者檢查源程序的語法榴芳、結(jié)構(gòu)、過程跺撼、接口等來檢查程序的正確性窟感,那么采用靜分析安全測試的方法有什么優(yōu)缺點(diǎn)呢,且讓小編給你說道說道歉井。
許多公司都投資于 HP Fortify柿祈、IBM AppScan Source、 Checkmarx 或 Coverity 之類的靜態(tài)分析安全測試(Static Analysis Security Testing哩至,SAST)解決方案躏嚎。如果使用得當(dāng),SAST 解決方案的確能大放異彩:相比于動態(tài)分析或運(yùn)行時測試方案菩貌,它們能在開發(fā)階段卢佣,而不是開發(fā)完成之后,探測出源碼中的安全漏洞箭阶,從而大大降低修復(fù)安全問題的成本虚茶。它們還能找到許多動態(tài)分析工具通常無法找到的漏洞。而且仇参,得益于其自動化的特性嘹叫,SAST 工具能在成百上千款應(yīng)用間實現(xiàn)伸縮,而這是僅靠人為分析方法無法企及的诈乒。
在對 SAST 解決方案投資之后罩扇,一些公司便放棄了在應(yīng)用安全領(lǐng)域的進(jìn)一步投資。這類公司的股東往往認(rèn)為:靜態(tài)分析方法覆蓋了絕大多數(shù)軟件安全漏洞怕磨,或是諸如 OWASP 前十的重要高風(fēng)險漏洞暮蹂,因此已經(jīng)足夠好了寞缝。這些公司往往不會在軟件開發(fā)初期就考慮安全問題,而是止步于在應(yīng)用部署到生產(chǎn)環(huán)境之前仰泻,獲得一份來自掃描工具的“無瑕疵報告”荆陆。其實,這種心態(tài)非常危險集侯,因為它無視了 SAST 技術(shù)的基本限制被啼。
《用靜態(tài)分析方法確保編程安全(Secure Programming with Static Analysis)》一書詳細(xì)描述了靜態(tài)分析技術(shù)的基本原理。此書的作者 Brian Chess 與 Jacob West 是 Fortify Software 公司背后的技術(shù)骨干棠枉,此公司后來被惠普收購浓体。在書中,作者談到:“一半的安全問題都源自軟件的設(shè)計辈讶,而非源碼命浴。”之后贱除,他們列舉了軟件安全問題的類別生闲,比如與上下文特定的缺陷(這類問題往往在代碼中可見)等等。他們還指出:“沒有人敢斷言月幌,源碼檢查就能找出所有問題碍讯。”
靜態(tài)分析工具相當(dāng)復(fù)雜扯躺。為了正常發(fā)揮其功能捉兴,它們需要從語義上理解程序的代碼、依賴關(guān)系录语、配置文件以及可能不是用同一種語言寫的組件倍啥。與此同時,它們還必須保持一定的速度以及準(zhǔn)確性澎埠,從而降低誤報的數(shù)量虽缕。此外,JavaScript失暂、Python 之類的動態(tài)類型語言,在編譯時往往無法決定對象所屬的類或類型鳄虱,因此進(jìn)一步影響了靜態(tài)分析工具的效率弟塞。因此,找到大多數(shù)軟件安全漏洞不是不切實際拙已,就是不可能的决记。
NIST SAMATE 項目力求測量靜態(tài)分析工具的效率,從而幫助公司改善該技術(shù)的使用情況倍踪。它們對一些開源軟件包分別執(zhí)行了靜態(tài)分析以及人工代碼檢查系宫,并對比兩者的結(jié)果索昂。分析顯示,在所發(fā)現(xiàn)的全部漏洞中扩借,1/8 到 1/3 的漏洞屬于簡單漏洞椒惨。進(jìn)一步的研究發(fā)現(xiàn),這些工具只能發(fā)現(xiàn)簡單的實現(xiàn)錯誤潮罪,對于需要深入理解代碼結(jié)構(gòu)或設(shè)計的漏洞往往束手無策康谆。在流行的開源工具 Tomcat 上運(yùn)行時,面對26個常見漏洞嫉到,靜態(tài)分析工具只對其中4個(15.4%)發(fā)出了警告沃暗。
這些統(tǒng)計數(shù)據(jù)與 Gartner 論文《應(yīng)用安全:大膽想象,從關(guān)鍵入手 ( Application Security: Think Big, Start with What Matters ) 》中的發(fā)現(xiàn)相互呼應(yīng)何恶。在這篇論文中孽锥,作者談到:“有趣的是,通常認(rèn)為 SAST 只能覆蓋10%到20%的代碼問題细层,DAST 覆蓋另外的10%到20%惜辑。”按照這種觀點(diǎn)今艺,如果一個公司自主開發(fā)了一個類似 Tomcat 的工具韵丑,并以靜態(tài)分析為主要的應(yīng)用安全措施,這意味著虚缎,會有22個常見的安全漏洞原封不動地遺留在他們部署的應(yīng)用中撵彻。
Gary McGraw 博士將靜態(tài)分析無法找出的諸多安全問題歸為瑕疵,而非程序錯誤实牡。這些瑕疵的性質(zhì)與應(yīng)用相關(guān)陌僵,靜態(tài)分析可能無法找出的問題包括:
- 機(jī)密數(shù)據(jù)的存儲與傳輸,尤其是當(dāng)這些數(shù)據(jù)的程序設(shè)定與非機(jī)密數(shù)據(jù)無異時创坞。
- 與身份認(rèn)證相關(guān)的問題碗短,比如蠻力攻擊敏感系數(shù),密碼重置效力等题涨。
- 與非標(biāo)準(zhǔn)數(shù)據(jù)隨機(jī)選擇的熵相關(guān)的問題
- 與數(shù)據(jù)保密性相關(guān)的問題偎谁,比如數(shù)據(jù)保持以及其它合規(guī)性問題(比如:確保信用卡號在顯示時是部分掩蓋的)。
與普遍觀點(diǎn)相反纲堵,許多靜態(tài)分析工具的覆蓋缺口隱含著巨大的組織風(fēng)險巡雨。而且,多數(shù)公司組織都無法接觸源代碼席函,導(dǎo)致 SAST 工具可能無法理解某種特定的語言或框架铐望,再加上大規(guī)模部署這一技術(shù)以及處理錯誤警報帶來的挑戰(zhàn),這一風(fēng)險變得更為復(fù)雜了。
盡管靜態(tài)分析是確保安全開發(fā)的重要技術(shù)正蛙,但顯而易見督弓,它比不上從建立應(yīng)用之初就考慮安全問題的策略。公司組織只有將安全理念融入產(chǎn)品需求與設(shè)計中去乒验,并以靜態(tài)分析等技術(shù)加以驗證愚隧,才最有可能創(chuàng)造出牢固安全的軟件。
如今徊件,多樣化的攻擊手段層出不窮奸攻,傳統(tǒng)安全解決方案越來越難以應(yīng)對網(wǎng)絡(luò)安全攻擊。OneRASP 實時應(yīng)用自我保護(hù)技術(shù),可以為軟件產(chǎn)品提供精準(zhǔn)的實時保護(hù)虱痕,使其免受漏洞所累睹耐。想閱讀更多技術(shù)文章,請訪問 OneAPM 官方技術(shù)博客部翘。
本文轉(zhuǎn)自 OneAPM 官方博客