Kubernetes 官方又發現了一處 kubectl cp 命令相關的目錄遍歷漏洞。
該漏洞可以使 kubectl cp 命令啟用目錄遍歷,使得惡意容器可以替換或創建用戶工作站上的文件。漏洞屬於客戶端缺陷,需要利用用戶交互,惡意用戶可能創建或覆蓋 kubectl cp 操作的目標目錄之外的文件。
受影響版本:
這是近段時間在 Kubernetes kubectl cp 命令中發現的第三個相關問題了,此前我們報導過這一命令漏洞:
kubectl cp 命令允許在容器和用戶計算機之間複製文件。要從容器中複製文件,Kubernetes 調用容器內的`tar`二進位文件,以創建或解壓 tar 包。
對 tar 的操作依賴於 CMD/CP/cp.go,其中的函數`copyFromPod`實現了從容器中複製文件的過程,它通過遠程 exec(`&exec.DefaultRemoteExecutor`)調用容器中的 tar,然後在函數`untarAll`中解壓用戶機器上的結果。此函數使用「archive/tar」 Go 包根據結果 tar 頭進行 tar 解析,最後將文件寫入目標目錄。
這個過程中,如果容器上的`tar`二進位文件是惡意的,那麼它可以運行任意代碼並輸出惡意結果,這將最終導致典型的目錄遍歷攻擊,允許惡意容器在複製時將任何文件寫入用戶計算機上的任何路徑。
雖然此前已經引入了`cp.go:clean`函數來避免這個目錄遍歷,但是 Ariel 發現其實可以創建和跟蹤來自 tar 頭的符號鏈接,攻擊者可以製作一個惡意 tar,其中包含一個帶有幾乎任何路徑的符號鏈接的頭,以及一個與符號鏈接同名的目錄內文件的後續頭。當通過 cp untar 函數提取時,鏈接將導致在符號鏈接的路徑中創建或修改所需文件。
此問題已經修復,kubectl cp 命令在執行 untar 過程中對所有子文件的目標路徑將執行更嚴格的校驗,禁止所有在 cp 目標路徑外的解壓后拷貝動作。
用戶可以通過升級 kubectl 來修復該漏洞:
詳情查看:
[admin
]