-
1 # cnBeta
-
2 # 安全時刻
幾年前,“開源”還是點點星火,如今已成燎原之勢。在過去的2018年,企業都在積極加強自己在開源方面的實力,IBM大手筆340億美元收購了RedHat,微軟75億美元收購了GitHub。
開源軟體蓬勃發展的同時,安全漏洞風險也在增加。SNYK不僅向500多名開源使用者和維護人員分發了調查報告,同時也監控了SNYK內部監控和保護的數十萬個專案的漏洞資料,並結合外部研究,釋出了2019年開源安全狀況報告。
首先,我們先來看幾個關鍵性結論:
2017年到2018年,包管理工具索引的開源包數量呈爆炸式增長,其中Maven Central增長了102%,PyPI增長了40%,NPM增長了37%,NuGet增長了26%,RubyGems增長了5.6%。
應用程式的漏洞在短短兩年的時間內增加了88%,其中SNYK跟蹤的Rhel、Debian和Ubuntu的漏洞數量,2018年是2017年的四倍多。
調查顯示,37%的開源開發人員在CI期間不會進行任何的安全測試,54%的開發人員不會進行Docker映像的安全測試,而從漏洞出現在開源包中到漏洞修復的時間可能會超過兩年。
調查顯示,81%的調查者認為開發人員應該負責開源安全,68%的調查者認為開發人員應承擔Docker容器映象的安全;但只有十分之三的開源維護人員認為自己應該具備較高的安全知識。
開源應用開源軟體對現代軟體開發產生了深遠的影響,並且這種影響力還在每年遞增。據GitHub報告稱,2018年新使用者的註冊量超過了之前六年的總和,且平臺上建立的新組織和新儲存庫增加了40%。另外,開源軟體同時也推動了語言和平臺的發展,影響了行業增長,Forrester報告稱,開源軟體是業務技術戰略的重要組成部分。
前文我們曾提到,科技公司都在大量使用開源,每個程式語言生態系統中都有越來越多的開源庫被索引,且有的增長率實現了兩位數,甚至是三位數的增長(Maven Central實現了102%的三位數增長。)
開源的使用正走在高速路上,2018年Java包增加了一倍,NPM增加了大約250000個新包。
據Linux基金會報告稱,2018年開源貢獻者提交了超過310億行的程式碼,這些程式碼一旦要在實際的生產環境中使用,那麼擁有、維護和使用此程式碼的人就必須承擔一定的責任,規避風險。
據CVE列表報告顯示,2017年總共有14000+個漏洞,打破了CVE一年內報告的漏洞記錄,而2018年,漏洞數量繼續上升,超過了16000個。
我們在調查中關注了不同生態中不同軟體包的下載數量,同時也關注了這些開源軟體包如何轉化為使用者採用。
根據Python登錄檔顯示,PYPI在2018年的下載量超過140億,相比於2017年報告中的63億,下載量增加了一倍。從下表中我們可以看到在8月份的時候,下載量出現了激增的情況,這是由於LineHaul(PYPI的統計收集服務)出現故障造成的,該故障導致在8月之前大半的下載量丟失。
另外,開源軟體消費也取得了巨大的飛躍,從PYPI中下載python包的數量是原來的兩倍,從NPM下載javascript包的數量更是驚人,達到3170億個。
NPM登錄檔是整個JavaScript生態系統的核心。在過去的幾年中,無論是新增還是下載的軟體包數量都穩步增,僅2018年12月的一個月時間就有300多億次。
而Docker的採用也促進了開源軟體的增長,據悉,Docker公司在2018年每兩週就有超過10億個容器下載,截止到目前,數量約有500億個。僅2018年一年就有超過100萬個新的應用程式新增到Docker Hub中。
風險和影響而伴隨著軟體包數量的增加,是漏洞的增加,前文我們提到了2018年新漏洞數量再創新高,超過16000個。
開源軟體使用的越多,程式碼中自然就包含了更多其他人的程式碼,累積的風險就會越大,因為這些程式碼目前或者是將來可能會包含漏洞。當然,這裡的風險並不單單是指程式碼的安全性,同時也包括了所採用程式碼的許可以及該程式碼是否違反了許可證本身。
在接受調查的受訪者中,43%至少有20個直接依賴關係,這無疑就需要增強對這些引入庫的原始碼的監控。而事實上,只有三分之一的開發人員可以在一天或更少的時間內解決嚴重性漏洞。
“企業應定期使用SCA工具來審計包含軟體資產(如版本控制和配置管理系統)的儲存庫,以確保企業開發和使用的軟體符合安全和法律標準、規則和法規。另外,應用程式開發人員也可以使用SCA工具來檢查他們計劃使用的元件。
如今,沒有開源依賴的情況下寫程式碼幾乎是不可能完成的任務,所以正確跟蹤所依賴的庫就成為了一個難題。採取何種措施才能既消除漏洞,同時還能保持依賴項之間的相容性?
NPM、Maven和Ruby中的大多數依賴項都是間接依賴項,由少數明確定義的庫請求。在調查中,Snyk掃描了100多萬個快照專案,發現間接依賴項中的漏洞佔整個漏洞的78%,這說明我們需要進一步增強對依賴樹的洞察,並突出脆弱路徑的細微差別。
開源維護者的安全狀況雖然在大多數開發人員和維護人員都認同在構建產品和編寫程式碼時,安全性是非常重要的,但是對他們而言,在構建開源專案時沒有“教科書式”的規則可供他們參考,因此安全標準可能有很大的不同。
在今年的調查中,大部分使用者(平均每10個使用者中就有6.6個)都將他們的安全技術選擇在中等水平,7%的受訪者認為目前的安全技術水平較低。
相應的專業知識排名,2019年的排名發生了一些變化,尤其是High和Low,其中High佔據了30%,Medium佔據了63%,而low佔據了7%,而在2017年,High只佔了17%,low佔了26%。
在調查過程中,我們還發現了維護人員通常都會將時間和經歷放在專案的功能性方面,而往往忽視了安全性。
安全審計安全審計作為程式碼審查的一部分,其中需要雙方確保遵循安全程式碼最佳實踐,或者採取另一種方式,即透過執行不同的安全審計變體,如靜態或動態應用程式安全測試。
無論是手動審計還是自動審計,它們都是檢測和減少應用程式中漏洞的重要組成部分,並且應該在開發階段儘可能早地定期執行,以降低後期暴露和資料洩露的風險。
去年,有44%的受訪者表示他們從未進行過安全審計,而今年,這一數字要低得多,只有26%的使用者表示他們沒有審計原始碼。與去年的報告相比,今年重複審計也呈現出了積極的趨勢,以季度和年度為單位,有10%的使用者會經常的審計程式碼。
回覆列表
開源元件已成為當今許多軟體應用程式的基礎組成部分,這也使得其在安全性方面受到越來越嚴格的審查。
根據開源管理專家 WhiteSource 釋出的一份新報告,可知 2019 年公開的開源軟體漏洞數增加到了 6000 多個,增速接近 50% 。
慶幸的是,有超過 85% 的開源漏洞已被披露,且提供了相應的修復程式。
遺憾的是,開源軟體的漏洞資訊並沒有集中在一處釋出,而是分散在數百種資源中。有時索引的編制並不正確,導致搜尋特定資料成為了一項艱鉅的挑戰。
根據 WhiteSource 的資料庫,在國家漏洞資料庫(NVD)之外報告的所有開源漏洞中,只有 29% 最終被登記在冊。
此外研究人員比較了 2019 年漏洞排名前七的程式語言,然後將之與過去十年的數量進行了比較,結果發現歷史基礎最好的 C 語言佔有最高的漏洞百分比。
PHP 的相對漏洞數量也大幅增加,但沒有跡象表明其流行度有同樣的提升。儘管 Python 在開源社群中的普及率持續上升,但其漏洞百分比仍相對較低。
報告還考慮了通用漏洞評分系統(CVSS)的資料,是否是衡量補漏優先順序的最佳標準。
過去幾年中,CVSS 已進行了多次更新,以期達成為可對所有組織和行業提供支援的客觀可衡量標準。
然而在此過程中,CVSS 也改變了高嚴重性漏洞的定義。這意味著在 CVSS v2 標準下被定為 7.6 的漏洞,在 CVSS v3.0 標準下可能被評為 9.8 。
對於各個開源軟體的開發團隊來說,這意味著他們面臨著更多的高嚴重性漏洞問題,導致現有超有 55% 的使用者被高嚴重性或嚴重性問題所困擾。