Twistlock 的安全研究人員 Ariel Zelivansky 披露了 Kubernetes kubectl 複製命令的一個目錄遍歷漏洞。

出現漏洞的是命令 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 函數提取時,鏈接將導致在符號鏈接的路徑中創建或修改所需文件。

攻擊者可能會採用以下方式利用該漏洞:

  • 用戶在不知情的情況下下載帶有錯誤 tar 的惡意容器鏡像,攻擊者可以將這樣的鏡像推送到任何註冊表(例如 Docker Hub),以獲得他控制或依賴於域名仿冒的流行鏡像。
  • 攻擊者利用另一個漏洞攻擊正在運行的容器,或者在某些情況下,他可能擁有對容器的合法訪問權限。然後攻擊者植入惡意 tar 替換鏡像中的原始 tar。

在 Ariel 向 Kubernetes 和 OpenShift 安全團隊報告後,該漏洞已經實官方確認,並且收錄爲 CVE-2019-1002101。

全國最大“同性交友”社區瞭解一下

聲明:該文觀點僅代表作者本人,搜狐號系信息發佈平臺,搜狐僅提供信息存儲空間服務。
相关文章