共計(jì) 1821 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
如何進(jìn)行 K8S 漏洞 CVE-2019-1002101 解讀,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
kubectl cp 漏洞
近期 kubernetes 的 kubectl cp 命令發(fā)現(xiàn)安全問題(CVE-2019-1002101),該問題嚴(yán)重程度比較高,建議將 kubectl 升級到 Kubernetes 1.11.9,1.12.7,1.13.5 或 1.14.0 版本以解決此問題。
kubectl cp 命令允許用戶在容器和主機(jī)之間復(fù)制文件,其基本原理是:
在源地址將文件打包。
打包輸出內(nèi)容作為 stream 流通過網(wǎng)絡(luò)傳遞給目標(biāo)地址。
傳遞路徑包括:apiserver、kubelet、runtime
stream 流在目的地址作為 tar 的輸入,解壓。
具體執(zhí)行過程可以參考 kubernetes/pkg/kubectl/cmd/cp.go 文件中的 copyToPod 和 copyFromPod 兩個(gè)函數(shù)。
在這個(gè)過程中,如果容器中的 tar 二進(jìn)制文件是惡意的,它可以運(yùn)行任何代碼并輸出意外的惡意結(jié)果。當(dāng)調(diào)用 kubectl cp 時(shí),攻擊者可以使用它將文件寫入用戶計(jì)算機(jī)上的任何路徑,僅受本地用戶的系統(tǒng)權(quán)限限制。
目前社區(qū)在 1.11-1.14 版本均修復(fù)了該問題,具體修復(fù)方式可參考:
https://github.com/kubernetes/kubernetes/pull/75037
用戶可以通過 kubectl version –client 命令查看自己使用的 kubectl 版本,并升級到 1.11.9,1.12.7,1.13.5 或 1.14.0 版本以修復(fù)該漏洞。
Kube-proxy IPVS 添加 flag ipvs-strict-arp
首先了解些背景知識。
kube-proxy 的 ipvs 模式會將 clusterIP/externalIP 等綁定到節(jié)點(diǎn)上名為 kube-ipvs0 的 dummy 設(shè)備,以確保節(jié)點(diǎn)上的 ipvs 規(guī)則可以對訪問這些地址的流量作轉(zhuǎn)發(fā)。
在 1.13 版本中,引入一個(gè)操作
echo 1 /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 /proc/sys/net/ipv4/conf/all/arp_announce
以禁止 IPVS 模式下對 kube-ipvs0 dummy 設(shè)備上綁定的 ip 的 ARP 回復(fù),具體可參考 pr #70530,該改動是為了修復(fù) ipvs 模式下 load banlancer 類型 service 不能正常使用的問題(issue:#59976)。
而本次的 buf fix 則是跟前面的改動有關(guān),因?yàn)榍懊娴母膭与m然解決了 loadbalancer 的問題,但是又引入了其他問題:有些 CNI 插件在主機(jī)和容器間的連接會用到 ARP 協(xié)議。因此我們看到有些用戶升級到 1.13 后反饋下面的問題:
issue#72779:kube-proxy v1.13.0 and 1.13.1 brokes services with externalIPs
issue#71555:kube-proxy/IPVS: arpignore and arpannounce break some CNI plugins
而本 bug fix 也很簡單,就是為 kube-proxy 加了一個(gè)啟動參數(shù) ipvs-strict-arp,默認(rèn)為 0,即不改變節(jié)點(diǎn)上的 ARP 配置,如果需要改變,則設(shè)置該參數(shù)值為 1。
不得不說,這只是一個(gè)規(guī)避方案,無論是否使用該參數(shù),kube-proxy ipvs 模式下總有一部分功能受影響。
但是 IPVS 模式本身就有它獨(dú)特的優(yōu)勢,是 iptables 所沒有的,在這些優(yōu)勢的基礎(chǔ)上,一定要 ipvs 實(shí)現(xiàn)原來 iptables 實(shí)現(xiàn)的所有功能似乎也不太合理。
近期 bug fix 數(shù)據(jù)分析
近期在我們關(guān)注的 1.13 版本 (1.13.5 之后) 沒有比較重要的 bug fix 發(fā)布,為數(shù)不多的幾條也都是集群部署、第三方云提供商、e2e 測試相關(guān),不需要太多關(guān)注。
前文提到的 CVE-2019-1002101 漏洞也是在 1.13.5 版本之前已經(jīng)修復(fù)的,上次的 bug fix 已經(jīng)覆蓋到,大家如果有興趣深入研究的話可以根據(jù)本文提供的 pr 鏈接學(xué)習(xí)。
最后我們看下具體數(shù)據(jù):
如下為所有 bug fix 的匯總信息:
看完上述內(nèi)容,你們掌握如何進(jìn)行 K8S 漏洞 CVE-2019-1002101 解讀的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!