原創(chuàng)|其它|編輯:鄭恭琳|2020-09-04 11:21:56.953|閱讀 499 次
概述:通過自動化工具提高安全性的動機(jī)是在軟件開發(fā)生命周期(SDLC)中盡早轉(zhuǎn)移對漏洞的識別和補救。隨著應(yīng)用程序即將發(fā)布,修復(fù)和修復(fù)變得更加復(fù)雜。這篇文章重點介紹將靜態(tài)分析安全性測試用作組織安全性實踐的一部分。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
有幾種技術(shù)可以識別軟件和系統(tǒng)中的漏洞。聰明的組織將它們保存在“安全工具箱”中,并使用多種測試工具,其中包括:
通過自動化工具提高安全性的動機(jī)是在軟件開發(fā)生命周期(SDLC)中盡早轉(zhuǎn)移對漏洞的識別和補救。隨著應(yīng)用程序即將發(fā)布,修復(fù)和修復(fù)變得更加復(fù)雜。圖1顯示了隨著SDLC的進(jìn)行,補救漏洞的成本如何急劇增加。
圖1:隨著SDLC的進(jìn)行,修復(fù)漏洞的成本增加。
要深入了解軟件安全性經(jīng)濟(jì)學(xué),請查看安全軟件的商業(yè)價值白皮書。這篇文章重點介紹將靜態(tài)分析安全性測試用作組織安全性實踐的一部分。
SAST工具不需要運行的應(yīng)用程序,因此可以在補救成本較低的開發(fā)生命周期的早期使用。在最基本的級別上,SAST的工作原理是分析源代碼并根據(jù)一組規(guī)則對其進(jìn)行檢查。通常與識別漏洞相關(guān)聯(lián),SAST工具會向開發(fā)人員提供早期警報,告知他們不良的編碼模式會導(dǎo)致漏洞利用,違反安全編碼策略或缺乏與工程標(biāo)準(zhǔn)的一致性,從而導(dǎo)致功能不穩(wěn)定或不可靠。
有兩種主要類型的分析可用于識別安全問題。
流分析
在流分析中,這些工具分析源代碼以了解代碼的基本控制流和數(shù)據(jù)流。
圖2:靜態(tài)分析安全性測試——流分析
結(jié)果是應(yīng)用程序的中間表示或模型。這些工具針對該模型運行規(guī)則(或檢查程序),以識別導(dǎo)致安全漏洞的編碼錯誤。例如,在C或C++應(yīng)用程序中,規(guī)則可以標(biāo)識字符串副本,然后遍歷模型以確定源緩沖區(qū)是否可能大于目標(biāo)緩沖區(qū)。如果是這樣,則可能導(dǎo)致緩沖區(qū)溢出漏洞。
模式分析
避免使用某些對安全性至關(guān)重要的代碼構(gòu)造是現(xiàn)代軟件工程標(biāo)準(zhǔn)(例如AUTOSAR C++14,MISRA C 2012和Joint Strike Fighter(JSF))的基礎(chǔ)。這些標(biāo)準(zhǔn)可防止誤解,誤解或錯誤實施不可靠代碼的可能性。
模式分析可在給定安全性或安全性的上下文的情況下幫助開發(fā)人員使用開發(fā)語言的更安全子集,從而禁止使用允許漏洞首先發(fā)生的代碼構(gòu)造。有些規(guī)則可以通過檢查語法來識別錯誤,例如文字處理器中的拼寫檢查器。一些現(xiàn)代工具可以檢測與不良編碼構(gòu)造相關(guān)的細(xì)微模式。
每種測試方法都有其優(yōu)勢。許多組織過分關(guān)注DAST和滲透測試。但是與其他測試技術(shù)相比,使用SAST有許多優(yōu)勢。
代碼覆蓋率
經(jīng)過測試的代碼量是確保軟件安全的關(guān)鍵指標(biāo)。在代碼庫的任何部分中都可能存在漏洞,未經(jīng)測試的部分可能會使應(yīng)用程序容易受到攻擊。
SAST工具(尤其是那些使用模式分析規(guī)則的工具)可以提供比動態(tài)技術(shù)或手動過程更高的代碼覆蓋率。他們可以訪問應(yīng)用程序源代碼和應(yīng)用程序輸入,包括未在用戶界面中公開的隱藏代碼。
根本原因分析
SAST工具可促進(jìn)對漏洞的有效補救。靜態(tài)分析安全性測試可以輕松識別出引入錯誤的精確代碼行。與開發(fā)人員的IDE集成可以加速補救SAST工具發(fā)現(xiàn)的錯誤。
技能提升
當(dāng)開發(fā)人員使用IDE中的SAST工具時,他們會立即收到有關(guān)其代碼的反饋。數(shù)據(jù)加強了對安全編碼實踐的教育。
運營效率
開發(fā)人員在開發(fā)生命周期的早期就使用靜態(tài)分析,包括直接從其IDE中對單個文件進(jìn)行分析。在SDLC中盡早發(fā)現(xiàn)錯誤可以大大減少補救成本。它從一開始就防止了錯誤,因此開發(fā)人員不必在以后找到并修復(fù)它們。
SAST是一種全面的測試方法,它需要一定的初步努力和動力才能成功采用。
盡早部署SAST
盡管團(tuán)隊可以在SDLC的早期使用SAST工具,但一些組織選擇將分析推遲到測試階段。即使分析更完整的應(yīng)用程序可以進(jìn)行跨過程的數(shù)據(jù)流分析,使用SAST進(jìn)行“向左移”并直接從IDE中分析代碼仍可以識別諸如輸入驗證錯誤之類的漏洞。它還使開發(fā)人員可以在提交構(gòu)建代碼之前進(jìn)行簡單的更正。這有助于避免安全性的后期更改。
將SAST與敏捷和CI/CD管道一起使用
SAST分析被誤解了。許多團(tuán)隊認(rèn)為這很耗時,因為它對整個項目源代碼進(jìn)行了深入的分析。這可能會使組織認(rèn)為SAST與快速開發(fā)方法不兼容,這是沒有根據(jù)的。靜態(tài)分析安全性測試的近乎即時的結(jié)果可在開發(fā)人員的IDE中獲得,可提供即時反饋并確保避免漏洞。現(xiàn)代的SAST工具執(zhí)行增量分析,以僅查看來自兩個不同版本之間更改的代碼的結(jié)果。
處理嘈雜的結(jié)果
傳統(tǒng)的靜態(tài)分析安全測試工具通常包含許多“信息”結(jié)果以及圍繞正確編碼標(biāo)準(zhǔn)的低嚴(yán)重性問題。像Parasoft提供的工具一樣,現(xiàn)代工具使用戶可以選擇要使用的規(guī)則/檢查器,并根據(jù)錯誤的嚴(yán)重程度來過濾結(jié)果,隱藏那些不值得調(diào)查的工具。OWASP,CWE,CERT等的許多安全標(biāo)準(zhǔn)都具有有助于識別最重要漏洞的風(fēng)險模型。您的SAST工具應(yīng)使用此信息來幫助您專注于最重要的事情。用戶可以根據(jù)其他上下文信息(例如項目中的元數(shù)據(jù),代碼的年齡以及負(fù)責(zé)代碼的開發(fā)人員或團(tuán)隊)進(jìn)一步過濾結(jié)果。諸如Parasoft之類的工具可通過人工智能(AI)和機(jī)器學(xué)習(xí)(ML)來使用此信息,以幫助進(jìn)一步確定最關(guān)鍵的問題。
關(guān)注開發(fā)者
成功的部署通常以開發(fā)人員為中心。它們?yōu)殚_發(fā)人員提供了在軟件中構(gòu)建安全性所需的工具和指南。這對于敏捷和DevOps/DevSecOps環(huán)境非常重要,在這些環(huán)境中,快速反饋對于保持速度至關(guān)重要。IDE集成允許直接從開發(fā)人員的工作環(huán)境進(jìn)行安全測試——在文件級別,項目級別或僅評估更改的代碼。
使用智能規(guī)則配置
在分析軟件中的安全性問題時,一個規(guī)模并不適合所有組織。規(guī)則/檢查者必須解決對特定應(yīng)用程序至關(guān)重要的特定問題,這一點至關(guān)重要。剛開始進(jìn)行安全性測試的組織可能希望將規(guī)則限制為最常見的安全性問題,例如跨站點腳本和SQL注入。其他組織有基于法規(guī)的特定安全要求,例如PCI DSS。尋找可允許您滿足特定需求的受控規(guī)則/檢查程序配置而不是常規(guī)配置的解決方案。
在您的應(yīng)用程序中構(gòu)建安全性。與在SDLC末尾通過在完成的應(yīng)用程序之上附加安全性來嘗試保護(hù)應(yīng)用程序安全性相比,它更加有效和高效。正如您無法測試應(yīng)用程序的質(zhì)量一樣,安全性也是如此。SAST是早期發(fā)現(xiàn)的關(guān)鍵,它通過從一開始就編寫安全代碼來防止安全漏洞。
SAST工具使組織能夠從開發(fā)的早期開始就接受軟件安全性,并向其軟件工程師提供構(gòu)建安全軟件所需的工具和指南。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn