在Composer中發現一個漏洞,該漏洞危害了Packagist PHP存儲庫

幾天前 新聞爆出,一個嚴重漏洞已被發現 en 的依賴管理器 作曲家 (CVE-2021-29472),允許您在處理具有特殊格式的URL值的軟件包時在系統上運行任意命令,該URL值確定了下載源代碼的方向。

該問題在GitDriver,SvnDriver和HgDriver組件中表現出來 與Git,Subversion和Mercurial源代碼控制系統一起使用。 該漏洞已在Composer版本1.10.22和2.0.13中修復。

特別值得一提的是,Composer的默認Packagist軟件包存儲庫(其中包含306.000個PHP開發人員軟件包,每月提供超過1.400億次下載)。

在PHP生態系統中,Composer是管理和安裝軟件依賴項的主要工具。 世界各地的開發團隊都使用它來簡化升級過程,並確保應用程序在所有環境和版本中都能輕鬆運行。

實驗表明,如果有關於此問題的信息,攻擊者可以控制Packagist基礎結構並攔截維護者的憑據,或將軟件包的下載重定向到第三方服務器,從而安排帶有更改的軟件包變體的交付。惡意用戶在依賴項安裝過程中替換後門程序。

對最終用戶的危害是有限的 由於composer.json的內容通常由用戶定義,並且在訪問第三方存儲庫時會傳遞到源的鏈接,而第三方存儲庫通常是可靠的。 主要的打擊落在Packagist.org儲存庫和Private Packagist服務上, 調用Composer並傳輸從用戶那裡接收到的數據。 攻擊者可以通過丟棄特製軟件包來在Packagist服務器上運行其代碼。

Packagist團隊在收到通知的12小時內解決了該漏洞 的脆弱性。 研究人員於22月27日私下通知Packagist開發人員,該問題已在當天修復。 28月XNUMX日發布了帶有該漏洞修復程序的Composer公開更新,並於XNUMX月XNUMX日披露了詳細信息。 對Packagist服務器上的日誌進行的審核未發現與該漏洞相關的任何可疑活動。

參數注入錯誤是一類非常有趣的錯誤,通常在代碼審查期間被忽略,而在黑匣子交互中則被完全忽略。

該問題是由URL驗證代碼中的錯誤引起的 在根composer.json文件和源下載鏈接中。 自2011年XNUMX月以來,該錯誤已存在於代碼中。Packagist使用特殊的層來管理代碼下載,而不必綁定到特定的源代碼控制系統,該系統通過調用帶有命令行參數的“ fromShellCommandline”來執行。

問題的核心是ProcessExecutor方法允許您在URL中指定任何其他調用參數。 GitDriver.php,SvnDriver.php和HgDriver.php驅動程序中缺少這樣的轉義。 “ git ls-remote”命令不支持在路徑後指定其他參數,這阻礙了GitDriver.php攻擊。

通過將“ –config”參數傳遞給“ hq”實用程序,有可能對HgDriver.php進行攻擊,該實用程序允許通過操縱“ alias.identify”配置來組織任何命令的執行。

通過提交具有與Packagist相似的URL的測試包,研究人員確保發布該測試包後,其服務器從AWS上的其中一個Packagist服務器接收到HTTP請求,該請求包含當前目錄中的文件列表。

應當指出,維護者並未在包裝專家的公共場合中發現任何事先利用此漏洞的跡象。

最後,如果您有興趣了解更多信息,可以查閱詳細信息。 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。