買bug送軟件:四大最危險編程語言
上周,第三方漏洞收購平臺Zerodium宣布未來2-3月暫停收購iOS漏洞,因為短期內(nèi)提交的iOS漏洞利用程序太多。這條新聞讓很多安全人士感到詫異,畢竟,iOS的安全性曾經(jīng)是蘋果公司引以為傲的最大賣點之一,5年前iOS的零日漏洞售價動輒高達(dá)百萬美元,但近年Android系統(tǒng)安全性不斷提升,漏洞價格也反超了iOS,如今Android零點擊漏洞(無需用戶交互便可利用)價格已經(jīng)飆升至250萬美元,而iOS的類似漏洞價格“只有”200萬美元。
除去谷歌和蘋果公司在應(yīng)用安全領(lǐng)域的投入和關(guān)注度等因素,還有一個導(dǎo)致iOS漏洞大面積爆發(fā),安全性被Android逆襲的深層次原因,那就是編程語言平臺和開源程序庫的安全性問題。
Bug之王
根據(jù)Veracode最新發(fā)布的年度軟件安全現(xiàn)狀報告,全球所有應(yīng)用軟件中,70%都包含至少一個開源代碼庫導(dǎo)致的安全缺陷/漏洞,其中Swift代碼庫的軟件缺陷密度(每個代碼庫的缺陷數(shù)量)已經(jīng)超過了web安全人士的“衣食父母”——PHP。(下圖)
Veracode的軟件安全狀況報告指出,這些開源庫(免費的集中式代碼存儲庫,為開發(fā)人員提供現(xiàn)成的應(yīng)用程序“構(gòu)建塊”)不僅無處不在,而且存在風(fēng)險。
分析檢查了85,000個應(yīng)用程序中的351,000個外部庫,發(fā)現(xiàn)開源庫非常普遍。例如,大多數(shù)JavaScript應(yīng)用程序包含數(shù)百個開源庫,有些甚至包含1000多個不同的庫。此外,大多數(shù)語言都具有相同的核心庫集。
報告說:“特別是JavaScript和PHP,幾乎在每個應(yīng)用程序中都有幾個核心庫。”
與其他軟件一樣,這些庫也有bug。問題在于,由于代碼復(fù)用,單個bug可能會影響數(shù)百個應(yīng)用程序。
Veracode表示:“在當(dāng)今幾乎所有應(yīng)用程序中,開源庫都很重要,它使開發(fā)人員可以通過快速添加基本功能來加快開發(fā)進(jìn)度。” “實際上,如果沒有這些庫,使用軟件進(jìn)行創(chuàng)新幾乎是不可能的。但是,缺乏如何正確使用開源庫及必要的風(fēng)險意識已經(jīng)成為一個嚴(yán)重的問題。”
四大最危險語言
根據(jù)報告,開源代碼庫中bug最多的四個主要語言是:Swift、.NET、Go和PHP(上圖)。
其中Swift的bug密度(7個)高居榜首,而PHP漏洞則分布最廣(覆蓋近60%的代碼庫)。由于Swift是Apple生態(tài)系統(tǒng)的專業(yè)開發(fā)語言,因此雖然其bug密度很高,但是分布并不算廣泛。
.NET的bug分布百分比在這四個庫中最低(不到10%),但其代碼庫的數(shù)量是Swift的17倍以上。
Go包含bug的庫比例很高,接近PHP,但是平均每個代碼庫的bug總數(shù)較低。與Go相比,PHP的每代碼庫bug數(shù)量更高(6.5),bug密度是后者的兩倍。
不過在可利用PoC數(shù)量上,Swift的表現(xiàn)不算最糟糕,PHP依然是無可爭議的“王者”:
最好的防御:及時更新
報告還發(fā)現(xiàn)跨站點腳本(XSS)是開源庫中最常見的漏洞類別,占比接近30%其次是不安全的反序列化(23.5%)和訪問控制入侵(20.3%),如下圖所示:
“不安全的反序列化(Insecure Deserialization)過去是自主開發(fā)應(yīng)用程序中相對罕見的缺陷,其排名快速上升令人不安,因為這類缺陷可能導(dǎo)致執(zhí)行意外的代碼路徑,這意味著我們不打算使用的庫的某些部分也可能會插入到其應(yīng)用程序的執(zhí)行路徑中。”
數(shù)據(jù)還顯示,由于級聯(lián)的相互依賴關(guān)系,大多數(shù)有缺陷的庫最終都以代碼形式間接存在,因為開發(fā)人員使用的開源庫庫很可能調(diào)用了另一個開源庫的代碼。
“應(yīng)用程序中47%的有缺陷庫都是可傳遞的,換句話說,它們不是由開發(fā)人員直接引入的,而是由第一個被調(diào)用的庫引入的(42%被直接引入,12%被間接引入)。這意味著開發(fā)人員正在引入比預(yù)期更多的代碼,而且常常是有bug的代碼。”
好消息是,大多數(shù)最嚴(yán)重的程序漏洞和bug都可通過更新解決(下圖)。
“僅通過較小的版本更新就可以解決應(yīng)用程序中大多數(shù)被引入的bug(將近75%);根據(jù)Veracode報告,bug修補(bǔ)通常不需要對主程序庫進(jìn)行升級,而且超過90%的OWASP TOP 10榜單中最嚴(yán)重的bug,今天都有可用補(bǔ)丁或更新。”
參考資料
Veracode開源軟件安全現(xiàn)狀報告:
https://www.veracode.com/sites/default/files/pdf/resources/reports/state-of-software-security-open-source-edition-veracode-report.pdf
【本文是51CTO專欄作者“安全牛”的原創(chuàng)文章,轉(zhuǎn)載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權(quán)】