資安廠商Imperva發現,Docker存在一項重大漏洞,可讓攻擊者在雲端容器寫入任意檔案。

問題是出在Docker Compose,它可組合多個容器成為一個完整服務。Docker Compose支援眾多開發任務,它是在Docker Engine上的一層,能將數行YAML程式碼變成一個能執行的應用程式。

2025年10月初Imperva在研究Docker Compose對OCI物件的支援時,發現它的高風險路徑遍歷(path traversal)漏洞。該漏洞能讓攻擊者逃出Compose的快取目錄,而在主機系統上寫入任意檔案。這項漏洞編號CVE-2025-62725,風險值CVSS 8.9,已經由Docker團隊修補。

Docker Compose支援把OCI構件(artifact)推送到遠端儲存庫(registry),以便開發人員可在Docker儲存庫中執行Compose專案,再以include:指令在目標主機呼叫Compose參照該構件。在運作過程中,Compose會抓取OCI manifest,下載所有layers及標註(annotation)並在本地的快取目錄中重構出專案。根據這些標註,Compose將檔案寫到本地,甚至可延伸主要專案定義。

但是Compose處理OCI layers時,是完全信任layer標註內的寫入目的地。研究人員解釋,這項漏洞出在Docker Compose pkg/remote/oci.go如函式(如pullComposeFiles、writeComposeFile、writeEnvFile)處理OCI layer標註時,是直接把標註值與本地快取路徑結合起來,而沒有做路徑正規化與邊界檢查。這使得惡意標註可能超出快取目錄,導致Compose把檔案寫在它有權限寫入的任何地方。在OCI構件中的標註寫入指令,像是docker compose ps,或docker compose config,即可讓Compose在本地重構,而觸發漏洞。

研究人員設計了一項概念驗證攻擊手法。攻擊者設立OCI儲存庫來誘使Compose參照包含路徑遍歷layer的有害OCI構件,讓受害者執行Compose指令,在其快取目錄下寫入YAML碎片,得以覆寫~/.ssh/authorized_keys植入攻擊者公鑰取得SSH存取。另外,本手法也可以覆寫其他系統或應用程式檔案,進一步造成RCE或持久性後門。

受此漏洞影響的包括Docker Desktop、Linux standalone Compose、CI/CD runner、雲端開發環境等會解析遠端OCI構件的環境

Docker團隊已經於10月底解決漏洞,在Docker Compose v2.40.2加入正規化和驗證標註路徑的函式,可拒絕在快取目錄外解析,或包含絕對路徑的構件。研究人員強烈建議用戶升級到該版本以後。


 11月5日報導更正說明  內文最後一段提及的「Docker v2.40.2」有誤,正確應為「Docker Compose v2.40.2」。

熱門新聞

Advertisement