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