據Veracode的研究顯示,在過去幾年里,盡管應用程序中高度嚴重的安全漏洞的流行率顯著下降,但仍有眾多組織存在著嚴重的安全債務問題。

該研究基于Veracode最近的靜態應用程序安全測試(SAST),動態應用程序安全測試(DAST)和軟件組件分析(SCA)掃描超過100萬個應用程序收集的數據。


"人工智能生成的代碼廣泛傳播產生了大量不安全代碼,這可能會產生安全債務,"Veracode的首席研究官Chris Eng表示。"考慮到我們發現的安全債務的嚴重性,有必要考慮使用人工智能輔助的修復工具來償還債務,而不是需要重新分配開發團隊或擴大其規模。"


這項研究還指出,在整個軟件開發生命周期(SDLC)的過程中,應重視對本地和第三方代碼的測試,以發現其中存在的大量缺陷。


01

減少關鍵缺陷,而不是淘汰


研究發現,截止至2023年,應用程序中嚴重缺陷的流行率已經降至2016年的一半,僅為37.9%。盡管只有約3.2%的缺陷被認為是極其嚴重的(CVSS評分達到9或更高),但幾乎占所有缺陷的16%都被認為“極有可能”被惡意攻擊者利用。


這意味著在2023年發現的所有漏洞中,僅有不到百分之一(0.7%)是非常重要的,并且具有高度的可利用性。


總的來說,使用Veracode的SAST、DAST以及SCA工具發現,在所有被掃描的應用程序中,有80%的活動應用程序存在未解決的安全漏洞,而在只針對開發階段的程序進行SAST掃描的情況下,這一比例下降到了73%。


根據Veracode的研究,在第三方開源組件和本地代碼中發現的缺陷比例基本相當。實際上,大約有63.4%的應用程序在本地代碼中存在缺陷,而在第三方代碼中則有70.2%的應用程序存在缺陷。這種情況與人工智能技術的廣泛應用有關,因此我們需要對軟件供應鏈的這兩個來源進行深入掃描。

另外,通常情況下,一個典型的應用程序中每1MB的代碼就會有42個缺陷。其中,跨站腳本、注入、路徑遍歷以及易受攻擊和過時的組件是最常見的缺陷,它們的強度(每個應用程序的平均發現)和數量(應用程序的百分比)都非常高。


02

安全債務堆積如山


軟件安全債務,在研究中被定義為持續一年以上未得到修復的缺陷,這種缺陷存在于所有應用程序中,占總數的42%。如果把不足一年的應用程序也考慮進去,這個比例會下降到23%,也就是說,有57%的應用程序存在缺陷,但是它們還沒有形成債務。


在考慮關鍵安全債務(未修復的關鍵缺陷)時,情況有所不同。研究顯示,“絕大多數組織(71%)在某種程度上有安全債務”。此外,“將近一半的公司(46%)存在嚴重的持續性缺陷,我們將其歸類為關鍵安全債務。”


研究表明,有安全債務的組織中,有四分之一在其在不到17%的應用程序中有安全債務,有四分之一的組織在超過67%的應用程序中有債務。平均來看,約一半的安全缺陷(47%)源于安全債務。


為了解決軟件安全債務問題,該研究提出了幾項建議,其中包括將安全性融入到軟件開發生命周期中,持續進行修復,優先處理重要安全債務,提升開發人員的安全能力,并了解自己語言所涉及的安全債務情況。