開源軟件安全開始成熟
制定了開源軟件(OSS)策略的公司往往在自我評估的準備度方面表現更好。根據6月21日發布的一項調研結果,這些公司通常也設置有專職團隊負責推動軟件安全。
軟件安全公司Snyk和Linux基金會進行的調查研究表明,制定了OSS安全策略的公司中,70%認為其應用程序開發非常安全或一定程度上安全。相較之下,未制定此類策略的公司中,僅45%認為自己至少一定程度上是安全的。
Snyk開發者關系總監Matt Jarvis表示,開源軟件可為應用開發帶來極大好處,但公司也應認識到其不利的一面并為此做好準備。
“雖然開源是行之有效的創新機制和高質量軟件構建機制,但在某種程度上,開源自身的成功已經為自己招來了禍端,因為其普遍性使其成為了供應鏈攻擊的目標。”Jarvis說道,“公司需要對治理和代碼等開源的運作機制有更深入的了解,并通過采用開發人員優先的安全工具和方法來加強公司的供應鏈管理。”
小公司缺乏OSS策略
報告指出,總體而言,只有大約一半的公司制定了開源安全策略來指導開發人員使用組件和框架,而占比更大的小公司(60%)要么沒有策略,要么不知道自己是否制定了策略。
報告認為,安全經濟學往往會調低初創公司和小公司創建正式策略的優先級。
報告中寫道:“小型組織的IT人員和預算很少,往往優先考慮業務的功能需求,這樣業務才能保持競爭力。缺乏資源和時間是組織沒有實施OSS安全最佳實踐的主要原因。”

《解決開源軟件網絡安全挑戰》
研究發現,不同編程語言也帶來了不同安全考慮。舉個例子,用.NET編寫的應用程序修復缺陷所需的平均時間最長,為148天,其次是JavaScript;而以Go語言編寫的應用程序修復速度最快,通常只需要.NET應用程序三分之一的時間就能修復缺陷,即49天。
JavaScript依賴比比皆是
JavaScript應用程序的依賴項最多,平均每個項目174個,約為依賴項最少的Python應用程序(平均每個項目25個依賴項)的七倍。
Jarvis稱,雖然大型傳遞依賴樹可能會導致漏洞修復路徑迂回,但如果組織有辦法跟蹤項目之間的關系,那么擁有大量依賴未必是劣勢。
“與其他生態系統相比,JavaScript包的范圍往往更小,因此盡管數量更多,但需要審計潛在缺陷的代碼可能更少。”Jarvis說道,“最重要的問題在于了解你用到了哪些依賴項,尤其是作為依賴的依賴引入的那些傳遞依賴,而這歸結為使用恰當的安全工具來掃描。”
然而,數據還表明,不同的語言往往具有不同嚴重程度的缺陷。舉個例子,用Java編寫的項目平均具有超過47個高嚴重性漏洞和28個中等嚴重性漏洞,高出位居第二的JavaScript一大截(分別是18個和21個)。而Python則是低嚴重性漏洞數量最為可觀,平均每個項目20個。
“這一情況存在多種影響因素:項目復雜性、開發人員數量和普及程度都會對漏洞的類型和數量產生影響。”Jarvis稱,“大量開發人員檢視極為普及的項目就可能會暴露出更多漏洞。”
自動化=安全成熟度
盡管識別依賴項中的漏洞十分重要,但大多數設置了OSS安全策略的成熟公司都依賴行業漏洞咨詢(60%)、自動化包漏洞監測(60%),以及來自包維護人員的通知(49%)。
自動化監測是未制定安全策略的公司與安全成熟度高的公司之間存在的最大差距,沒有安全策略的公司中僅38%使用某種自動化監測,而安全成熟的公司這一比例是60%。
Jarvis表示,如果尚未具備,那公司應該添加一套OSS安全策略,作為鞏固自身開發安全的一種方式。即使是輕量級的策略都是個好的開始。
“擁有策略似乎就可以聲稱開發在某種程度上是安全的。我們認為制定策略是合理的安全成熟度起點,因為這表明組織已經意識到潛在問題并已踏上安全旅程。”
Snyk與Linux基金會的調研報告《開源安全狀況》:
https://snyk.io/reports/open-source-security/