用 Composer 安裝 PHP 依賴的網站,請查部署時實際執行的 Composer 版本。開發者於 11 月 10 日公布三項漏洞,並在 11 月 10 日發布 2.2.32、11 月 11 日發布 2.11.2。除了開發電腦,持續整合(CI)、部署映像和主機面板的建置工作也可能各自帶一份 Composer。
按建置環境核對版本
| 問題 | 受影響版本 | 最低修補版本 |
|---|---|---|
| 執行系統命令 | 2.10.0–2.11.1 | 2.11.2 |
| 寫入套件目錄以外 | 1.0 起至低於 2.2.32 2.3.0–2.11.1 |
2.2.32 2.11.2 |
| 私有套件庫憑證外洩 | 2.2.31、2.11.0、2.11.1 | 2.2.32 2.11.2 |
使用目前主線的專案應更新至 2.11.2 或以上。需要留在 2.2 長期支援分支的舊環境應至少更新到 2.2.32。這兩版另外包含安全修正,完整清單可查發行紀錄。
先查哪些建置會接觸外來資料
- 鎖定檔和已安裝套件紀錄(GHSA-jhfp-4ppm-crmm)。如果舊版 Composer 讀取可被外部影響的
composer.lock或已安裝套件紀錄,安裝或更新依賴時可能執行系統命令。要優先檢查會自動安裝外部合併請求、第三方樣板或共用快取的工作。關閉 Composer 腳本和外掛仍無法防住這項漏洞。 - 第三方套件 ZIP(GHSA-w6hj-6587-3jh5)。環境同時具備系統
unzip和 PHP ZIP 擴充時,若 Composer 解壓攻擊者能控制的套件壓縮檔,可能在套件目錄外寫入檔案。先查自架套件庫、鏡像與外部套件來源。 - 私有套件庫憑證(GHSA-x82q-x274-r6pq)。套件庫若在 HTTP 標頭內直接帶憑證,受影響版本安裝依賴時讀到被修改的套件資料,可能把憑證送到外部下載主機。
這三份公告說明了觸發條件,未公布已觀察到的在野事件。若曾用受影響版本處理來源不明的套件資料,保留相關建置紀錄。曾在這類工作帶入私有套件庫憑證的團隊,應查下載紀錄並撤換可能外洩的憑證。
升級後再讓部署工作跑一輪
從部署工作本身確認 Composer 版本,再以已審閱的鎖定檔重建依賴。若有可疑的舊快取,先停用它,從可信來源建立一份新的快取。最後在測試環境確認應用啟動及關鍵頁面正常,再恢復正式部署。
封面為 AI 生成的概念插圖。
