近期,Kubernetes儀表盤和外部IP代理接連被發現存在安全問題。針對這兩個漏洞,Kubernetes發佈了相應的補丁版本供會受漏洞影響的用戶解決問題。本文將更深刻解讀這兩個安全漏洞的原理、會對您的Kubernetes部署形成的影響以及相應的應對之策。node
經過kubernetes儀表盤訪問自定義TLS證書api
Kubernetes儀表盤漏洞(CVE-2018-18264)會影響v1.10.0或更早的儀表盤版本。由於這一漏洞,用戶能夠「跳過」登陸過程,假設配置的服務賬戶,最後得到儀表盤所使用的自定義TLS證書。若是您已將Kubernetes儀表盤配置爲須要登陸並將其配置爲使用自定義TLS證書,那麼這一漏洞會影響到您,您須要及時注意。安全
該漏洞的運做原理服務器
此漏洞能夠分爲兩部分來解釋。網絡
第一個是,由於登錄時用戶能夠選擇「跳過」這一選項,那麼任何用戶均可以繞過登陸過程,該過程在v1.10.0或更早版本中始終默認啓用。這樣一來,用戶就徹底跳過登陸過程並能使用儀表盤配置的服務賬戶。代理
第二個是,使用儀表盤配置的服務賬戶,必須最低限度地有權限訪問自定義TLS證書(以secret的形式存儲)。未經身份驗證的登陸,加上儀表板使用配置的服務賬戶來檢索這些secret的能力,組合在一塊兒的結果就是這一安全問題。server
使用儀表盤v1.10.1補丁時,默認狀況下將再也不啓用「跳過」選項,而且會禁用儀表盤在UI中檢索和顯示它的功能。blog
該漏洞對Rancher 1.6.x和2.x意味着什麼?ip
在Rancher 2.x中,默認狀況下不會啓用Kubernetes儀表盤,由於Rancher 2.0用戶界面可用做替代方案。若您不會使用到儀表盤代碼庫,則不受此漏洞的影響。若是您更改了默認設置、在Rancher管理的任何Kubernetes集羣之上部署了Kubernetes儀表盤,請務必使用Kubernetes官方提供的指南及補丁修復這一漏洞。資源
若是你使用的是Rancher 1.6.x,則徹底無需擔憂。在Rancher 1.6.x中,Kubernetes儀表盤做爲每一個Kubernetes集羣環境的一部分包含在內;可是,1.6.x部署不受影響,由於Rancher Server充當了Kubernetes儀表盤的身份驗證受權和代理。它不利用默認的Kubernetes儀表盤登陸機制。此外,Rancher部署的Kubernetes儀表盤不使用任何自定義TLS證書。
Kubernetes API服務器外部IP地址代理漏洞
下面讓咱們來探討Kubernetes公告所描述的第二個漏洞。
Kubernetes API服務器使用節點、node或服務代理API,將請求代理到pod或節點。經過直接修改podIP或nodeIP,能夠將代理請求定向到任何IP。API服務器老是被部署在某網絡中的,利用這個漏洞就訪問該網絡中的任何可用IP了。儘管自從v1.10發佈以來,Kubernetes已經在很大程度上增長了檢查以緩解這個問題,但最近才發現有一條路徑的問題並無被徹底解決——將代理指向本地地址到運行API服務器的主機。
該漏洞的運做原理
經過使用Kubernetes API,用戶可使用節點代理、pod代理或服務代理API請求與pod或節點的鏈接。Kubernetes接受此請求,找到podIP或nodeIP的關聯IP,並最終將該請求轉發到該IP。這些一般由Kubernetes自動分配。可是,集羣管理員(或具備相似「超級用戶」權限的不一樣角色)能夠更新資源的podIP或nodeIP字段以指向任意IP。
這在很大程度上不是問題,由於「普通」用戶沒法更改資源的podIP或nodeIP。podIP和nodeIP字段位於pod和節點資源的狀態子資源中。爲了更新狀態子資源,必須專門授予RBAC規則。默認狀況下,除了集羣管理員和內部Kubernetes組件(例如kubelet、controller-manager、scheduler)以外,沒有Kubernetes角色能夠訪問狀態子資源。想要利用此漏洞,首先得擁有對集羣的高級別訪問權限。
這一次Kubernetes官方發佈的修復,是肯定攻擊向量能夠存在於與集羣分開管理控制面板的設置中。在這種狀況下,集羣管理員是不能訪問運行API服務器的主機的。這種狀況存在於您從雲提供商處得到的託管Kubernetes服務中。在這種狀況下,集羣管理員能夠經過將podIP / nodeIP修改成本地地址(如127.0.0.1)來訪問API服務器的本地地址。今天發佈的修復將阻止代理到本地地址。
這對Rancher用戶意味着什麼?
Rancher託管集羣的默認權限,僅容許集羣全部者和成員更改podIP或nodeIP字段。將該權限提供給其餘用戶時,必須假定容許用戶可以徹底訪問集羣中的任何節點。全部其餘默認角色(例如項目全部者/成員)都無權訪問這些字段。今天發佈的修復程序所適用的部署的Kubernete集羣,是其控制面板網絡與應用程序使用的網絡不一樣的。在Rancher 1.6.x或2.x中建立的Kubernete集羣,均默認集羣管理員具備對控制面板節點的徹底訪問權限。若是您正在使用Rancher 2.x,而且正在使用託管雲提供商(例如EKS、GKE、AKS),請與他們覈實安全性是否存在問題,由於控制面板是歸雲提供商全部。
咱們始終但願能確保Rancher用戶可以在最短期內使用到最新的安全修復程序和相應補丁,Kubernetes版本v1.10.十二、v1.11.6和v1.12.4解決了這兩個安全漏洞,這三個版本的Kubernetes將可在Rancher 版本v2.1.5和v2.0.10中使用。若是你是Rancher v1.6.x版本的用戶,則無需作任何更新,由於標準的v1.6.x安裝不受此次安全漏洞影響。
您還能夠經過下述兩個連接瞭解到Kubernetes官方針對這兩個漏洞的相應討論:
https://discuss.kubernetes.io/t/security-release-of-dashboard-v1-10-1-cve-2018-18264/4069