日前哈佛商學院、哈佛創新科學實驗室、Linux 基金會、OpenSSF (開源安全基金會) 聯合研究撰寫的《免費和開源軟體普查 III》釋出,此次研究以前兩次研究為基礎,研究構成現代軟體基石的應用程式級元件。

此次研究分析了 10000 家公司使用的超過 1200 萬條開源軟體使用情況資料,研究團隊與業界合作收集了來自多個平臺的匿名資料,分析包括對生產程式碼庫的自動掃描和對軟體組合的全面人工審查,從而深入瞭解開源軟體的使用情況及其在整個軟體供應鏈中的間接依賴情況。

本次研究發現的特點包括:

  1. 96% 的程式碼庫中都存在開源元件
  2. 雲服務相關的專用包 (也就是非開源) 使用量正在急劇增加
  3. 業界繼續依賴過時的 Python 2 導致面臨安全風險
  4. 自第二次調查以來 Rust 採用率激增 500%,標誌著向記憶體安全程式設計的轉變
  5. 軟體元件缺乏標準化命名增加了安全風險
  6. 一小部分貢獻者推動了主要的開源軟體,帶來了可持續性方面的擔憂

這份報告目前在 Linux 基金會官方網站提供免費下載,有興趣的網友可以檢視報告全文:https://www.linuxfoundation.org/research/census-iii?hsLang=en

單一維護者專案的風險暴露:

研究報告指出,40% 的頂級專案只有 1~2 名開發者並且貢獻了超過 80% 以上的程式碼,貢獻者 / 維護者的高度集中模式代表著潛在的安全隱患。

案例是今年的 XZ Utils 供應鏈投毒事件,駭客透過頻繁為該專案提交程式碼獲得主要維護者的好感和信任,之後成為維護者後開始在專案中投毒,然後感染了大量的下游專案。

OpenSSF 基金會正在努力解決這類挑戰:確保審查的原始碼就是人們正在執行的程式碼。開源軟體的一大優勢就是可以進行廣泛審查,從而尋找有意或無意中包含的漏洞。

然而如果審查的內容不是用於構建最終產品的內容那審查就會變得沒有意義,所以現在 OpenSSF 的工作就包括強化構建和分發流程,確保現實中執行的程式碼就是已經經過審查的程式碼。

Python 2 屬於老生常談的問題:

Python 基金會在 2000 年釋出 Python 2,在 2008 年釋出 Python 3 系列,目前 Python 主要在 Python 3.x 系列上進行更迭。

比較頭疼的是一些行業的 Python 2 使用率為 20%~30%,使用過時版本的 Python 意味著存在安全隱患,但業界暫時也沒有更好的辦法能夠完成新版本更迭。

OpenSSL 認為如果讓新版本升級變得極其容易或許能夠推動開源軟體的新版本採用率,例如在幾乎所有情況下,新版本都應該完全向後相容舊版本,尤其是以前的老版本,儘管這需要開發者付出額外的努力,但這應該是正確的方法。