靜態(tài)應(yīng)用程序安全測試
數(shù)據(jù)顯示,2022年截止到目前發(fā)現(xiàn)了大約 20,175 個新漏洞,高于前一年的 18,341 個。網(wǎng)絡(luò)攻擊者正不斷掃描網(wǎng)絡(luò)中所有可能被利用的漏洞,從而發(fā)起網(wǎng)絡(luò)攻擊。
美國國家標(biāo)準(zhǔn)與技術(shù)局(NIST)、國家漏洞數(shù)據(jù)庫(NVD)數(shù)據(jù)顯示,90%以上的網(wǎng)絡(luò)安全問題是由軟件自身的安全漏洞被利用導(dǎo)致。目前,靜態(tài)應(yīng)用程序安全測試在軟件開發(fā)生命周期當(dāng)中使用頻率越來越高。靜態(tài)應(yīng)用程序安全測試在軟件開發(fā)期間檢測源代碼中存在的編碼問題及安全缺陷,有助于及時修復(fù)缺陷提高軟件安全性。
什么是靜態(tài)應(yīng)用程序安全測試(SAST)?
靜態(tài)應(yīng)用程序安全測試(SAST)是一種白盒測試,通過直接分析源代碼、字節(jié)碼和二進制文件,以識別可利用的漏洞和編碼問題。靜態(tài)應(yīng)用程序安全測試通過建立一種程序狀態(tài)模型,通過字符串匹配、數(shù)據(jù)流分析、控制流分析、抽象語法樹的語義分析等手段進行路徑遍歷,完成對狀態(tài)空間所有路徑的近似分析,以發(fā)現(xiàn)代碼中存在的潛在缺陷以及安全漏洞,并提供一定的修復(fù)建議。
靜態(tài)應(yīng)用程序安全測試在DevSecOps 中的作用
眾所周知,DevSecOps 通過在軟件開發(fā)生命周期 (SDLC) 的每個階段添加合適的安全測試方法來擴展 DevOps 和敏捷的方法,從而創(chuàng)建一個動態(tài)和持續(xù)的測試過程。
測試過程最先涉及的就是靜態(tài)應(yīng)用程序安全測試,檢測開發(fā)人員編寫的代碼安全性并定位有問題的代碼所在,協(xié)助開發(fā)人員高效修復(fù)代碼缺陷,有助于快速安全地交付軟件。
靜態(tài)應(yīng)用程序安全測試的好處
①可在開發(fā)早期階段檢出缺陷,修復(fù)成本低;
②可精確定位源代碼中的潛在錯誤,便于修改;
③代碼覆蓋率完整;
④易于使用,通用性高。
哪些行業(yè)使用靜態(tài)應(yīng)用程序安全測試?
隨著網(wǎng)絡(luò)安全法規(guī)和標(biāo)準(zhǔn)在全球范圍內(nèi)不斷展開,越來越多的組織正在擴展網(wǎng)絡(luò)安全計劃,并在交付軟件之前進行安全測試。整個行業(yè),尤其在金融、政府等行業(yè),都涉及對應(yīng)用軟件或系統(tǒng)進行安全測試的需求。
最佳實踐
進行安全測試(包括靜態(tài)應(yīng)用程序安全測試)的有效方法是持續(xù)進行。這意味著將靜態(tài)應(yīng)用程序安全測試直接集成到 CI/CD 管道中。這樣做可以創(chuàng)建快速的反饋周期,以便開發(fā)人員可以在代碼發(fā)布之前修復(fù)安全漏洞。
靜態(tài)應(yīng)用程序安全測試發(fā)現(xiàn)的常見安全漏洞包括:
緩沖區(qū)溢出
跨站點腳本
SQL注入等
除了檢測安全漏洞外,靜態(tài)應(yīng)用程序安全測試還能檢測語義缺陷/運行時缺陷及安全編碼標(biāo)準(zhǔn)/規(guī)范。
