用于安全測試的SAST與DAST有何不同?
應(yīng)用程序安全測試(AST)通過各種工具、流程掃描應(yīng)用程序以發(fā)現(xiàn)潛在安全問題。靜態(tài)應(yīng)用程序安全測試(SAST)和動態(tài)應(yīng)用程序安全測試(DAST)是常用的安全測試方法,它們遵循不同的方法,在軟件開發(fā)生命周期的不同階段掃描應(yīng)用程序代碼及軟件。
SAST遵循白盒測試方法來分析源代碼、字節(jié)碼和二進(jìn)制文件,以識別可利用的漏洞和編碼問題。
DAST是一種黑盒測試方法,通過在應(yīng)用程序前端解析模擬的攻擊有效負(fù)載,發(fā)現(xiàn)可利用潛在漏洞,不會暴露有關(guān)應(yīng)用程序內(nèi)部結(jié)構(gòu)的信息。
DAST 和 SAST用于識別應(yīng)用程序漏洞的測試機(jī)制
靜態(tài)應(yīng)用程序安全測試(SAST)工具對代碼開發(fā)過程中引入的軟件缺陷提供即時(shí)反饋。測試是在軟件模型上使用預(yù)定義的規(guī)則執(zhí)行,分析程序是如何在這些狀態(tài)之間轉(zhuǎn)換的,通過字符串匹配、數(shù)據(jù)流分析、控制流分析、抽象語法樹的語義分析等手段進(jìn)行路徑遍歷,完成對狀態(tài)空間所有路徑的近似分析,以發(fā)現(xiàn)代碼中存在的潛在缺陷以及安全漏洞,并提供修復(fù)建議。
由于測試方法從軟件開發(fā)生命周期的早期階段開始實(shí)施,因此SAST有助于在編譯軟件之前識別編碼缺陷。SAST 是一種首選的測試方法,并支持基于 DevSecOps 的左移方法來管理安全性。除了安全性,SAST還有助于確定代碼質(zhì)量、可重用性和可維護(hù)性。
靜態(tài)應(yīng)用程序安全測試發(fā)現(xiàn)的常見安全漏洞包括:
緩沖區(qū)溢出
跨站點(diǎn)腳本
SQL注入等
SAST 測試的優(yōu)勢包括:
早期漏洞檢測:靜態(tài)代碼分析在開發(fā)過程開始時(shí)執(zhí)行,測試有助于在編譯應(yīng)用程序代碼之前檢測應(yīng)用程序代碼中的錯(cuò)誤。通過確保安全缺陷不會出現(xiàn)在生產(chǎn)環(huán)境中,SAST工具有助于實(shí)施主動保護(hù)和減少安全缺陷。
實(shí)時(shí)反饋:SAST掃描器執(zhí)行快速掃描,可以在較短的時(shí)間內(nèi)分析應(yīng)用程序的整個(gè)代碼庫。除了對未發(fā)現(xiàn)的缺陷提供即時(shí)反饋之外,SAST工具還與各種開發(fā)管道工具無縫集成,而不影響核心功能。
準(zhǔn)確性:SAST工具根據(jù)預(yù)定義的安全規(guī)則自動執(zhí)行安全測試。這些工具比手動測試方法更快、更準(zhǔn)確地識別出關(guān)鍵漏洞。
雖然 SAST 有助于安全編碼實(shí)踐,但分析靜態(tài)代碼的好處范圍有限,因?yàn)樗鼰o法識別更多的運(yùn)行時(shí)漏洞,并且報(bào)告存在一定的誤報(bào)。
動態(tài)應(yīng)用程序安全測試通過模擬惡意用戶的操作來協(xié)調(diào)攻擊,使用由外而內(nèi)的方法評估應(yīng)用程序。DAST 掃描通過輸入可疑的用戶輸入并觀察應(yīng)用程序的響應(yīng)來評估運(yùn)行時(shí)漏洞。測試機(jī)制持續(xù)掃描部署在生產(chǎn)環(huán)境中的 Web 應(yīng)用程序,幫助模擬應(yīng)用程序的實(shí)際行為并識別影響典型用戶體驗(yàn)的問題。由于DAST測試是在運(yùn)行時(shí)環(huán)境中執(zhí)行的,因此可以在新漏洞出現(xiàn)和發(fā)展時(shí)檢測和識別它們。
動態(tài)分析應(yīng)用程序代碼發(fā)現(xiàn)的應(yīng)用程序漏洞包括:
跨站點(diǎn)請求偽造
文件包含漏洞
Cookie操作
路徑泄露漏洞等
DAST 測試的優(yōu)勢包括:
不受語言要求限制:DAST 測試不需要用于開發(fā)應(yīng)用程序的編程語言知識。無論使用何種框架,DAST 工具都會根據(jù)輸入和輸出評估應(yīng)用程序的行為,使其成為一種更強(qiáng)大的測試方法。
低誤報(bào)率:DAST工具對應(yīng)用程序環(huán)境執(zhí)行端到端掃描,使安全研究人員能夠檢測和識別威脅應(yīng)用程序安全和功能的安全漏洞。
不需要訪問源代碼——由于DAST掃描是通過應(yīng)用程序前端發(fā)送惡意有效負(fù)載來執(zhí)行的,企業(yè)可以利用第三方安全服務(wù)來執(zhí)行測試,而不暴露應(yīng)用程序代碼。
雖然DAST工具評估應(yīng)用程序代碼中的各種漏洞,但它們無法定位代碼庫中安全問題的確切位置。DAST 掃描也無法嗅探應(yīng)用程序堆棧中未執(zhí)行的部分中的漏洞。
何時(shí)使用 SAST?
SAST有助于在關(guān)鍵漏洞進(jìn)入生產(chǎn)環(huán)境之前檢測和解決它們,建議開發(fā)人員使用 SAST 工具來幫助他們在編寫軟件時(shí)識別和檢測編碼錯(cuò)誤。SAST 也適用于根本原因分析,這有助于在其他漏洞掃描檢測到缺陷后確定代碼行中問題的確切位置。
如何結(jié)合使用SAST和DAST?
由于DAST和SAST優(yōu)勢各不相同,DAST和SAST相互補(bǔ)充,可以一起使用來實(shí)現(xiàn)更健壯的測試方法。在代碼開發(fā)階段早期采用SAST工具,支持對應(yīng)用程序使用的所有功能和包進(jìn)行全面的安全分析。后續(xù)執(zhí)行DAST測試,以評估攻擊者如何利用生產(chǎn)中的漏洞。
SAST分析有哪些類型?
根據(jù)要測試的內(nèi)容,SAST測試分析可分為:
源代碼分析
字節(jié)碼分析
原始二進(jìn)制代碼分析
參考來源:
https://crashtest-security.com/sast-dast/
