按 Enter 到主內容區
:::

TWCERT-電子報

:::

容器管理系統Kubernetes(K8S)存弱點,入侵者可擴權操作

發布日期:
字型大小:
  • 發布單位:TWCERT/CC
  • 更新日期:2019-04-03
  • 點閱次數:685
容器管理系統Kubernetes(K8S)存弱點,入侵者可擴權操作

CVE編號

CVE-2018-1002105

內文

●概述:
開源工具K8S初始由Google設計,乃是容器叢集管理系統,Kubernetes本意係舵手(希臘語),能管理Docker等建置的容器,經Darren Shepherd分析指出,其Kubernetes API server因權限配置瑕疵,處理惡意proxy request時,留下TCP連線,無論入侵者是否通過身分驗證,皆能利用既有TLS憑證作掩護,經由該連線接觸後台server,且隨意發送request,即使匿名人士也可擴權操作,達到顯示pod清單、執行指令、取得輸出結果等目的,本項漏洞之CVSS評分9.8,屬嚴重等級,不容輕忽。Linux Foundation已就各版Kubernetes公布升級軟體,唯Kubernetes 1.0.x-1.9.x系列舊版不在維護範圍,須規劃安裝新版,若作業環境無法立即更新,可調整設定,停止「群集API使用權、匿名帳號請求」等危險授權項目。
●編註:
(1)Kubernetes API server漏洞
囿於Kubernetes API server(kube-apiserver)元件設計瑕疵,對使用者角色權限配置不當,故衍生此型態弱點,kube-apiserver為和後台server連線,本身具備TLS憑證,當kube-apiserver處理proxy request時,無法正確回應例外狀況,一旦接收到惡意變造之request格式,遠端攻擊方就能利用既有TLS憑證通過身分檢查,成功與後台建立連線,並循該連線送出任何request,皆可運作。
因K8S所部署之角色基礎存取控制RBAC(Role-Based Access Control)之權限模型,預設規則同意所有用戶(無論身分驗證與否)呼叫API,故源自kube-apiserver網段之API request,只要能觸及群集API server終端,其request均被提升權限,而在RBAC中admin或edit等角色,預設可接受姓名空白用戶,故匿名者亦可控制在pod上對任何節點內kubelet API送出API call,包含exec、attach、portforward等,繼而擴權進行操作,諸如顯示pod清單、執行指令、取得輸出結果。
(2)略述Kubernetes架構
†Cluster:管理下層Node。
†Pod:對Container再次封裝,是Immutable deploy的基本調度單元,確保應用程式有完全相同的執行環境,一個pod包含多個容器,分配專屬IP避免衝突。
†Service:定義 Service,才能讓外部使用者存取Pod。
†API伺服器:關鍵元件,使用Kubernetes API、JSON over HTTP充作內外介面,讓用戶端在節點間配置工作與容器。
†Kubelet:監視pod的狀態,確保每個節點上所有容器都正常,按照控制面板指示來啟動、停止、維護容器。
†容器:容器隸屬於pod,是最低層級,綁定外部IP,Container技術可將一套應用程式所需執行環境打包起來,部署在不同機器上,其中Docker最廣為人知。
(3)升級之外選項
†若所處環境無法及時升級,可優先設定相關組態:
†暫停使用全體群集API server,唯須注意此舉干擾用戶。
†移除所有群集API使用權,尤其是不該有完整權力之用戶。
†移除pod上exec、attach、portforward等操作許可,尤其是不該有完整權力之用戶。
†將kube-apiserver有關參數anonymous-auth設定false,阻止任何匿名請求作業。

影響產品

Kubernetes 1.0.x-1.9.x/ Kubernetes 1.10.0-1.10.10 /Kubernetes 1.11.0-1.11.4 /Kubernetes 1.12.0-1.12.2

解決辦法

(1)Kubernetes 1.10.11,由https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.10.md/#v11011下載。
(2)Kubernetes 1.11.5,由https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md/#v1115下載。
(3)Kubernetes 1.12.3,由https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md/#v1123下載。
(4)Kubernetes 1.13.0-rc.1,由https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md/#v1130-rc1下載。
(5)因Kubernetes 1.0.x-1.9.x不再後續維護,請考慮其它版本。
回頁首