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