官术网_书友最值得收藏!

4.2.3 Kubelet未授權訪問

在一個Kubernetes集群中,Kubelet是主要的“節點代理”,運行在集群的每個節點上。它負責向API Server注冊所在節點。

與Kubernetes API Server類似,Kubelet同樣運行著API服務(默認在10250端口),集群中其他組件可以通過調用API來改變集群狀態,比如啟動和停止Pod。既然同樣有API服務,那么也就會存在未授權訪問的問題。如果未授權用戶能夠訪問甚至向某個節點上的Kubelet下發命令,那么他就很可能控制整個集群。

Kubelet的配置文件是/var/lib/kubelet/config.yaml。一般來說,我們在安裝Kubernetes時會將--anonymous-auth設置為false,并在authorization中選擇mode為Webhook。前一選項禁止匿名用戶訪問,后一選項則使Kubelet通過API Server進行授權(即使匿名用戶能夠訪問,也幾乎不具備任何權限)。

然而,假如--anonymous-auth被設置為true,且authorization.mode被設置為AlwaysAllow,這就十分危險了。

在這種情況下,攻擊者能夠做非常多的事情,例如可列出正在運行的Pod,如圖4-5所示。

圖4-5 列出正在運行的Pod

攻擊者還可以對任意Pod執行命令,從而提升權限。一種思路是:對Kubernetes API Server的Pod執行讀取敏感憑證的命令,進而讀取憑證并獲得高權限身份,然后利用該身份與Kubernetes API Server交互并創建新的Pod,從而逃逸出容器。具體過程見4.3節。

主站蜘蛛池模板: 大冶市| 岳阳市| 江华| 巴林右旗| 福清市| 万州区| 沿河| 宾阳县| 阳谷县| 宜宾县| 德兴市| 彭泽县| 乐平市| 西乡县| 壶关县| 东乌珠穆沁旗| 临江市| 海丰县| 富民县| 大埔县| 凤冈县| 嘉兴市| 岳普湖县| 攀枝花市| 桐城市| 萨嘎县| 三门峡市| 彭阳县| 洛浦县| 澄江县| 祥云县| 手游| 如东县| 华池县| 正蓝旗| 乐亭县| 辛集市| 澄江县| 贺州市| 浮梁县| 静乐县|