信息來源:安全內參
各種類型的掃描均越來越頻繁
圖源:Veracode《2022年軟件安全狀況》報告
Veracode發(fā)布新版《軟件安全狀況》報告。報告指出,相較于十年前,公司加快了應用安全測試的節(jié)奏:接受掃描的應用數量增加了兩倍,每個應用的掃描次數增加了20倍。
Veracode宣稱,重視增加掃描頻率、自動化測試與部署,以及進行開發(fā)人員教育,這些都是轉向DevSecOps文化的標志,有效減少了三分之二的脆弱軟件庫,節(jié)省了三分之一的漏洞修復時間。盡管77%的第三方庫在披露三個月后仍然存在已知漏洞,但庫中漏洞的半衰期(即修復半數漏洞所需的時間)加快了三倍。
Veracode首席研究官Chris Eng表示,總體而言,開發(fā)人員正朝著正確的方向前進,但仍有很長的路要走。
“事情正朝著好的方向發(fā)展,表明大家更加重視[盡早發(fā)現(xiàn)漏洞]。企業(yè)不斷納入不同掃描類型,大幅減少了脆弱軟件庫的數量——不是減少了一點點,而是縮減了很多?!?
Veracode觀察公司數據庫中各個應用并分析多年來的趨勢之后編撰了此版報告。
報告指出,十年前,Veracode客戶平均每年進行兩到三次掃描,但現(xiàn)在大多數開發(fā)人員每天執(zhí)行靜態(tài)分析掃描,而動態(tài)分析掃描則是每周執(zhí)行一次。例如,在2010年,只有10%的應用至少每周掃描一次,絕大部分應用甚至一個月都不掃描一次。而到了2021年,情況完全反轉,90%的應用每周至少掃描一次。
報告指出:“包括管道安全掃描的持續(xù)測試與集成逐漸成為常態(tài),用戶掃描其應用的頻率就反映出了這一點。在軟件生命周期中越早發(fā)現(xiàn)問題,就越有可能盡快解決問題,避免小問題演變成大問題?!?
表明敏捷開發(fā)崛起并對漏洞產生影響的另一個趨勢是,開發(fā)團隊似乎傾向于將單體程序分解為更小的服務集合(微服務架構)。Veracode的數據顯示,2021年只有不到5%的應用使用多種框架和編程語言,遠少于2018年的20%,表明涉及多種編程語言的大型軟件項目變得越來越少。
Eng稱:“你覺得應用總是會隨著時間推移而變得越來越大——代碼越來越臃腫,而且用戶不會放棄任何功能。但我們觀察到的是應用反而越來越小了,這些單語言應用表明開發(fā)人員正逐漸采用微服務架構。”
不同類型的測試往往會發(fā)現(xiàn)不同類型的漏洞,但信息泄露除外,這種漏洞太常見了,幾乎每種測試技術都能發(fā)現(xiàn)。例如,靜態(tài)分析就經常能找出CRLF(回車換行符)注入、信息泄露和加密問題,而動態(tài)分析通常會發(fā)現(xiàn)服務器配置、不安全依賴和信息泄露問題。軟件組成分析(SCA)最常找到的問題是輸入驗證不足、信息泄露和封裝問題。
每種編程語言都有其獨特的漏洞傾向。Java應用往往存在CRLF注入漏洞,而Python程序最常見的缺陷與加密問題有關,C++的主要問題涉及錯誤處理。
軟件組成分析發(fā)現(xiàn)的漏洞往往需要較長時間才能修復,這可能是因為修復必須從項目維護人員流向開發(fā)人員。Veracode的報告指出,對于動態(tài)分析、靜態(tài)分析和SCA這三種技術所發(fā)現(xiàn)的漏洞,修復半數漏洞所需要的時間分別為143天、290天和397天。不過,SCA所發(fā)現(xiàn)漏洞的響應時間實際上已經大幅縮短了——2017年時修復半數此類漏洞需花費三年多的時間。
Veracode表示:“既然我們都知道,使用多種工具執(zhí)行多次掃描可以縮短修復時間和減少安全債務,這種轉變只能被視為有利于應用安全的未來。歷史的鐘擺是否會回到單體應用和瀑布式開發(fā)還有待觀察,但現(xiàn)在看來似乎不太可能。”
至于開源軟件庫,Veracode發(fā)現(xiàn),最流行的軟件庫在過去五年里一直沒什么變化。例如,超過97%的Java應用代碼來自于開源庫。不過,過去五年來,存在缺陷的軟件庫占比有所下降,Java、JavaScript和Python都見證了脆弱庫的大幅減少。
報告指出:“值得警惕的是,開發(fā)人員可能會堅持使用經驗證的庫,而不去嘗試重構自己的代碼庫來引入新潮熱門功能。如果代碼庫沒有缺陷,更新就會很慢,而有缺陷的時候更新就相對較快。只要開源軟件開發(fā)人員持續(xù)修復安全漏洞,開發(fā)人員就會繼續(xù)使用這些庫?!?
Veracode《2022年軟件安全狀況》報告:
https://www.veracode.com/state-of-software-security-report