谷歌推出OSS重建項目,以識別軟體包中的隱藏更改

Google 推出了 OSS Rebuild 項目,旨在偵測已發佈在程式碼庫中的現成軟體包中隱藏的變更。 OSS Rebuild 基於可重現建置的概念,旨在檢查程式碼庫中已發布的軟體包與基於聲明版本對應的參考原始程式碼進行重建後獲得的軟體包之間的兼容性。該工具包程式碼使用 Go 語言編寫,並遵循 Apache 2.0 授權進行分發。

目前,OSS Rebuild 支援驗證來自 NPM(JavaScript/TypeScript)、PyPI(Python)和 Crates.io(Rust)倉庫的軟體套件。未來計畫擴展支援的倉庫數量。實際上,該工具包可以識別供應鏈攻擊變種。在供應鏈攻擊中,維護人員的帳戶被盜或在專案內部發生破壞後,會在倉庫中發布惡意更新。同時,主項目原始倉庫中的程式碼仍然正確,惡意更改僅針對已完成的軟體包。

如果可能,系統會使用啟發式演算法並選擇能夠識別套件中提供的構件的參數,自動產生所選套件的可複現建構場景。如果無法自動複現儲存庫中的套件,則可以手動新增建置規格。套件復現後,OSS Rebuild 工具會儲存建置過程的描述,以便後續驗證套件的新版本。此外,也會發布訊息,以便使用 SLSA 框架進行驗證。

驗證特定軟體包版本後,系統會產生認證數據,供其他人評估已驗證的軟體包。驗證可以透過執行命令列實用程式或檢查儲存在獨立雲端儲存中的雜湊值來完成。軟體包驗證基礎設施可以自行部署。 服務器您還可以利用有關谷歌對數千個包裹進行檢查的資訊。

OSS Rebuild 可以防禦的不同攻擊方法的範例包括向 XZ 添加後門、向 Solana 加密貨幣的官方 JavaScript 用戶端注入惡意程式碼以及透過更改檔案的操作處理程序替換更改:

  • 就 XZ 專案而言,倉庫中的程式碼未包含可疑更改,構成後門的惡意元件被植入到測試集中使用的檔案中,用於檢查 XZ 解包器是否正常運作。後門在建置系統層級被激活,XZ 原始碼本身與倉庫中的程式碼相符。啟動後門的 Automake 工具包的 m4 巨集僅包含在最終的檔案中,且與程式碼一起包含在倉庫中。為了偵測此類攻擊,OSS Rebuild 會對軟體包中提供的構件、執行路徑和可疑操作進行動態分析。
  • 由於維護人員的帳戶遭到社會工程和網路釣魚攻擊,導致惡意變更插入到 @solana/web3.js 庫中。一個包含惡意變更的新版本被發佈到 NPM 倉庫。此版本並非在專案的 Git 倉庫中創建,惡意變更僅存在於產生的軟體包中。在這種情況下,防禦措施在於識別軟體包中主倉庫中缺少的程式碼。
  • 更改檔案處理程序儲存庫遭到入侵,導致攻擊者能夠對使用更改檔案追蹤基於 GitHub Actions 的持續整合基礎架構中的檔案和目錄變更的專案發動攻擊。為了防止建置環境被入侵後發生更改替換,OSS Rebuild 在標準化、精簡的建置環境中使用變更和可疑活動追蹤。

來源: opennet.ru