開源軟件安全隱患:80% 的第三方庫從未更新
Veracode 最新發(fā)布的一項(xiàng)《State of Software Security v11: Open Source Edition》研究報(bào)告指出,現(xiàn)代軟件的表面下存在著安全問題的雷區(qū),有 80% 的第三方庫在被納入代碼庫后從未被開發(fā)者更新過。
該報(bào)告基于對(duì) 86000 多個(gè)軟件庫的 1300 萬次掃描分析,其中包含 301000 多個(gè)獨(dú)特的庫;同時(shí)還調(diào)查了近 2000 名開發(fā)人員,以了解他們?nèi)绾问褂玫谌杰浖?。Veracode 方面稱,盡管超過三分之二的修復(fù)是小事,甚至對(duì)最復(fù)雜的軟件應(yīng)用程序的功能也沒有影響。但開源庫不斷發(fā)展,今天看起來安全的東西明天可能就不再安全了,這可能會(huì)給軟件供應(yīng)商和用戶帶來巨大的安全風(fēng)險(xiǎn)。
研究發(fā)現(xiàn),庫的流行度和漏洞每年都有明顯的波動(dòng)。例如,2019 年 Ruby 中最受歡迎的五個(gè)庫中有四個(gè)在 2020 年跌出前 10,而 2019 年 Go 中一些最易受攻擊的庫在 2020 年也變得不再那么容易受攻擊,反之亦然。鑒于幾乎所有的現(xiàn)代應(yīng)用程序都是使用第三方開源軟件構(gòu)建的,一個(gè)庫中的單個(gè)缺陷或調(diào)整可以連帶到所有使用該代碼的應(yīng)用程序;這也就意味著,這些不斷的變化對(duì)軟件安全會(huì)產(chǎn)生直接影響。
幾乎所有存儲(chǔ)庫都包含具有至少一個(gè)漏洞的庫。Veracode 首席研究官 Chris Eng 解釋稱:“當(dāng)今絕大多數(shù)應(yīng)用程序都使用開源代碼。庫的安全性可能會(huì)迅速發(fā)生變化,因此保持應(yīng)用程序中內(nèi)容的最新清單至關(guān)重要。我們發(fā)現(xiàn),一旦開發(fā)人員選擇了一個(gè)庫,他們就很少更新它。隨著供應(yīng)商面臨越來越多的對(duì)其供應(yīng)鏈安全性的審查,根本無法證明‘set it and forget it’的心態(tài)是合理的。至關(guān)重要的是,開發(fā)人員必須讓這些組件保持最新狀態(tài),并在發(fā)現(xiàn)新漏洞時(shí)迅速做出響應(yīng)。”
此外,盡管軟件環(huán)境是動(dòng)態(tài)的,但開發(fā)人員在將開源庫納入軟件應(yīng)用程序后,往往不會(huì)更新它們。而缺乏對(duì)易受攻擊的庫與他們的應(yīng)用程序之間關(guān)系的上下文理解,也可能會(huì)造成一些限制。報(bào)告指出,缺乏信息的開發(fā)者將需要七個(gè)多月的時(shí)間來修復(fù) 50% 的缺陷;但當(dāng)他們有了正確的信息和指導(dǎo)時(shí),時(shí)間則會(huì)大幅減少至三周。
且當(dāng)發(fā)現(xiàn)存在漏洞的庫時(shí),他們可以迅速做出反應(yīng),在一小時(shí)內(nèi)解決 17% 的缺陷,在一周內(nèi)解決 25% 的缺陷。因此,當(dāng)及時(shí)提供準(zhǔn)確的信息時(shí),開發(fā)人員可以適當(dāng)?shù)卮_定安全的優(yōu)先次序,并快速修補(bǔ)漏洞。
其他主要發(fā)現(xiàn)包括:
-
92% 的開源庫缺陷可以通過更新修復(fù),69% 的更新只是較小的版本更改或更??;
-
即使一個(gè)開源庫的更新產(chǎn)生了額外的更新,只要其中近三分之二是次要的版本更改,那么即使是最復(fù)雜的應(yīng)用程序也不太可能破壞其功能;
-
接受調(diào)查的開發(fā)人員中只有 52% 有選擇第三方庫的正式流程,而超過四分之一的人不確定,甚至不知道是否有正式流程;
-
選擇 library 時(shí),“Security”僅排在第三位,而“Functionality”和“Licensing”分別占據(jù)了第一和第二位。