開(kāi)源第三方庫(kù)的安全狀況令人擔(dān)憂(yōu)
2021-06-23
來(lái)源:網(wǎng)絡(luò)安全應(yīng)急技術(shù)國(guó)家工程實(shí)驗(yàn)室
在最新軟件安全報(bào)告顯示,大多數(shù)開(kāi)發(fā)者在軟件中包含第三方庫(kù)之后,從未更新過(guò)這些庫(kù)。報(bào)告的重點(diǎn)是關(guān)注開(kāi)源軟件和開(kāi)發(fā)者如何處理他們使用的第三方庫(kù)的安全性。
一份包含30萬(wàn)多個(gè)獨(dú)特庫(kù)的超過(guò)86000個(gè)庫(kù)的分析報(bào)告以及與1700多名開(kāi)發(fā)者的討論顯示,盡管開(kāi)源領(lǐng)域在不斷變化,庫(kù)也在不斷發(fā)展,但79%的庫(kù)在被引入應(yīng)用軟件后從未更新。
雖然有些開(kāi)發(fā)人員在了解到他們使用的庫(kù)中的漏洞后會(huì)迅速采取行動(dòng)——25%的漏洞在一周內(nèi)就得到了解決——但有一半的安全漏洞在修復(fù)發(fā)布后的7個(gè)月內(nèi)沒(méi)有得到修補(bǔ)。這是因?yàn)殚_(kāi)發(fā)人員缺乏他們需要立即采取行動(dòng)的重要信息。
Veracode指出:“當(dāng)開(kāi)發(fā)人員理解漏洞的含義并適當(dāng)?shù)貎?yōu)先考慮安全性時(shí),他們可以輕松地修復(fù)大多數(shù)缺陷?!笔聦?shí)上,當(dāng)開(kāi)發(fā)人員獲得他們需要的信息時(shí),一半的漏洞在三周內(nèi)就得到了解決。
該報(bào)告還發(fā)現(xiàn),第三方庫(kù)中的大多數(shù)漏洞(92%)可以通過(guò)一個(gè)更新進(jìn)行修補(bǔ),并且69%的更新代表較小的版本變動(dòng),不太可能破壞應(yīng)用程序的功能。
超過(guò)一半的被調(diào)查開(kāi)發(fā)者(52.5%)有正式的庫(kù)評(píng)估流程,28.4%的人說(shuō)他們不確定(他們要么沒(méi)有正式的流程,要么沒(méi)有意識(shí)到并忽略了它),19.1%的人承認(rèn)沒(méi)有這樣的流程??偟膩?lái)說(shuō),超過(guò)80%的開(kāi)發(fā)人員表示,他們?cè)谶x擇使用庫(kù)的時(shí)候會(huì)考慮安全性。
Veracode指出:“在大型和不同的團(tuán)隊(duì)中,開(kāi)發(fā)、共享和遵循統(tǒng)一的政策可能是困難的,這可能會(huì)導(dǎo)致不確定性?!?/p>
對(duì)數(shù)以萬(wàn)計(jì)的庫(kù)進(jìn)行反復(fù)掃描發(fā)現(xiàn),第一次掃描中出現(xiàn)的庫(kù)中有65.0%從未更新。此外,14%的庫(kù)是在第一次掃描后添加的,并且從未更新,總共有79%的庫(kù)被添加和遺忘。
當(dāng)分析僅限于使用壽命相對(duì)較長(zhǎng)的存儲(chǔ)庫(kù)和多次掃描時(shí),結(jié)果相差不大:73%的庫(kù)從未更新過(guò)。該報(bào)告還顯示,Ruby庫(kù)被忽略的最多(67.1%),而PHP庫(kù)被維護(hù)的最多(只有37.7%的PHP庫(kù)被添加后又被忽略)。
報(bào)告揭示的另一個(gè)令人擔(dān)憂(yōu)的事實(shí)是,大約一半包含漏洞的庫(kù)可能需要超過(guò)21個(gè)月的時(shí)間來(lái)更新,而大約25%的庫(kù)甚至在四年之后都沒(méi)有更新。
報(bào)告顯示,當(dāng)?shù)谌綆?kù)中的漏洞暴露時(shí),一些開(kāi)發(fā)人員會(huì)迅速采取行動(dòng)。具體來(lái)說(shuō),17%的缺陷在一小時(shí)內(nèi)得到修復(fù),25%在一周內(nèi)得到修復(fù)。然而,開(kāi)發(fā)人員要花3個(gè)月的時(shí)間來(lái)修補(bǔ)50%的有漏洞的庫(kù),而解決75%的漏洞則需要一年的時(shí)間。
對(duì)于直接依賴(lài)和繼承性依賴(lài)的庫(kù),打補(bǔ)丁可能需要2.5倍的時(shí)間。這同樣適用于復(fù)雜的漏洞,例如任意代碼執(zhí)行缺陷,這可能需要比典型問(wèn)題花費(fèi)兩倍的時(shí)間來(lái)修復(fù)。遠(yuǎn)程代碼執(zhí)行和拒絕服務(wù)bug也需要更長(zhǎng)的時(shí)間來(lái)解決。
開(kāi)源庫(kù)在不斷發(fā)展變化。這樣的安全狀況顯然形成了軟件供應(yīng)鏈的重大風(fēng)險(xiǎn)。需要謹(jǐn)記的是,大量的庫(kù)選擇是“設(shè)置后忘記它”,開(kāi)發(fā)人員找到他們需要的功能而不改變它。兩年前沒(méi)有缺陷的函數(shù)庫(kù)今天可能會(huì)暴露一個(gè)應(yīng)用程序。
那么,如何面對(duì)這種變化的挑戰(zhàn)呢?該報(bào)告的結(jié)果表明,當(dāng)開(kāi)發(fā)人員得到他們需要的信息時(shí),他們可以迅速采取行動(dòng)來(lái)解決問(wèn)題。它的幫助在于,大多數(shù)修復(fù)并不比一個(gè)小的軟件更新更費(fèi)力,即使是最復(fù)雜的應(yīng)用程序也不太可能破壞內(nèi)部工作。
Veracode在報(bào)告發(fā)布消息中稱(chēng),確保軟件供應(yīng)鏈的安全正引起白宮的注意。上個(gè)月,白宮發(fā)布了一項(xiàng)關(guān)于網(wǎng)絡(luò)安全的行政命令,其中近25%的內(nèi)容關(guān)注于確保軟件供應(yīng)鏈的安全。接下來(lái),向聯(lián)邦政府銷(xiāo)售的軟件供應(yīng)商將被要求公開(kāi)其軟件的組成,并確保軟件應(yīng)用程序已經(jīng)過(guò)自動(dòng)化測(cè)試。
Veracode的聯(lián)合創(chuàng)始人和首席技術(shù)官Chris Wysopal說(shuō):“隨著行政命令的不斷落實(shí),任何軟件開(kāi)發(fā)人員都應(yīng)該確保他們?cè)谲浖_(kāi)發(fā)生命周期的早期就經(jīng)常掃描他們的軟件。開(kāi)放源碼軟件的日益普及,加上越來(lái)越苛刻的開(kāi)發(fā)周期,導(dǎo)致了軟件漏洞的高發(fā)傾向。在流程的早期進(jìn)行掃描可以顯著降低風(fēng)險(xiǎn),而且大多數(shù)修復(fù)都是微小改動(dòng),因此不會(huì)影響最復(fù)雜軟件的功能?!?/p>