【獨家】K8S漏洞報告|近期bug fix解讀&1.11主要bug fix彙總

雲容器大師發表於2018-12-12

內容提要:

1. 高危漏洞CVE-2018-1002105深度解讀

2. 11/19--12/11 bug fix彙總分析

3. 1.11重要bug fix解讀

4. 1.9重要bug fix解讀

在本週的跟蹤分析中,以1.11版本為例,共有24條bug fix,其中8條與Kubernetes核心內容相關。

另外,近期公佈了一條高危漏洞,本文會對此進行具體分析。

由於社群目前已經停止維護1.9版本,建議大家儘快升級1.11。本文也將開始持續更新1.11版本bug fix解讀,並停止更新1.9。

1  嚴重漏洞CVE-2018-1002105

深入解讀

背景

近日kubernetes被爆出高位特權升級漏洞(CVE-2018-1002105),通過特製的網路請求,任何使用者都可以通過Kubernetes應用程式程式設計介面(API)伺服器與後端伺服器建立連線。一旦建立,攻擊者就可以通過網路連線直接向該後端傳送任意請求。

攻擊步驟

具體攻擊步驟如下:

  1. 傳送第一個請求,通過kube-apiserver建立一個錯誤的websocket請求(例如請求體中缺少必要的欄位),去呼叫kubelet的api(例如exec pod),使kubelet的api返回非101(StatusSwitchingProtocals)錯誤碼(例如:400)。

  2. 傳送第二個請求,通過kube-apiserver訪問kubelet另一個越權的api(例如list pods),便可以繞過kube-apiserver的認證鑑權,獲取同一個kubelet所有租戶的pod資訊。

攻擊原理

攻擊原理是:

 

  1.  kube-apiserver傳送的websocket的請求轉到kubelet,kubelet把錯誤資訊返回給kube-apiserver後認為該請求已經結束了,因為kube-apiserver並沒有判斷kubelet的返回碼,只做透傳,kube-apiserver仍然儲存著這個連線。

  2. 第二個請求,在kube-apiserver中直接複用第一個請求的連線,然後構造一個越權的api直接訪問kubelet,此時kube-apiserver之前請求的長連線還在,直接透傳,而kubelet認為是一個新的請求,直接響應返回結果給客戶端,導致kube-apiserver中的認證鑑權失效。

修復版本

好在目前並未發現針對該漏洞的實際應用,社群也已經在所有維護的版本緊急修復了這個漏洞,包括:

v1.10 v1.11 v1.12 v1.13
v1.10.11 v1.11.5 v1.12.3 v1.13.0

具體修復方法可以參考

https://github.com/kubernetes/kubernetes/pull/71412

簡單來說就是,在kube-apiserver端增加第一個請求的返回碼判斷邏輯,如果返回碼不是101,則直接請求失敗,關閉連線。

驗證方法

雖然目前還沒有發現針對該漏洞的應用,但是現在這個漏洞已經發布出來,很多人都掌握了這個漏洞的攻擊方法,所以趕快驗證下自己的環境有沒有問題,有問題就趕快修復吧。

https://github.com/gravitational/cve-2018-1002105/blob/master/main.go

大家下載下來,編包,然後配置好環境上的kubeconfig檔案,執行二進位制,如果當前環境還有這個漏洞,則會返回:

Testing for unauthenticated access...

Testing for privilege escalation...

> API is vulnerable to CVE-2018-1002105

如果沒有漏洞,執行結果中不會出現最後一行。

2  近期bug fix資料分析

本週更新近期(11/9-12/11)1.11版本的bug-fix資料及分析。

在關注的時間段內,1.11版本有24條bug-fix,其分佈情況如圖所示:

從上圖可以看出,這段時間更新的bug fix乾貨滿滿,apiserver相關的就有4條,另外還有kubelet/scheduler/controller等核心元件相關內容。

從嚴重程度來看,除了前文提到的高危漏洞外,還有8條比較嚴重的bug fix,需要大家重點關注。

Bug fix嚴重程度統計,2及以下的bug fix有15個,嚴重程度為3的bug fix有8個,需要重點關注。

3  1.11重要bug fix解讀

由於社群目前已停止維護1.9和1.10版本,建議大家儘快升級到1.11版本,本週也將開始更新1.11版本bug fix解讀。

1.11.1版本重要bug fix解讀資訊:

4  1.9 重要bug fix解讀

1.9.9-1.9.10重要bug fix解讀:

相關文章