尊敬的用戶:
針對近期暴露的 runc 容器逃逸漏洞,青云 QingCloud 一直在密切觀察和研究,同時(shí)與您同步以下信息并期望獲得您的重視:
什么是 runc
Runc 是一個(gè)根據(jù) OCI (Open Container Initiative) 標(biāo)準(zhǔn)構(gòu)建的并運(yùn)行容器的底層工具,諸如 Docker,Containerd 以及 CRI-O 都以其為底層核心去處理數(shù)據(jù)的格式化和序列化。而 Kubernetes 作為容器調(diào)度管理平臺(tái)基于這些容器運(yùn)行環(huán)境,也受到了此漏洞的影響。
此漏洞(CVE-2019-5736)可能會(huì)造成的影響
引自 runc 團(tuán)隊(duì)的 Aleksa Sarai 的解釋(翻譯稿):“此項(xiàng)安全漏洞允許惡意容器(在最低用戶交互等級下)覆蓋主機(jī) runc 二進(jìn)制文件,這意味著攻擊者將借此獲得在主機(jī)上以 root 層級執(zhí)行代碼的權(quán)限?!?/p>
“具體來講,攻擊者能夠利用一套其可以控制的鏡像創(chuàng)建新的容器,或者是向其能夠訪問的現(xiàn)有容器之內(nèi)添加 docker exec 文件。在這類情況下的任意容器當(dāng)中,該攻擊者都將能夠通過當(dāng)前用戶交互等級以 root 權(quán)限運(yùn)行任意命令(無論命令本身是否由攻擊者所控制)?!?/p>
降低風(fēng)險(xiǎn)以及規(guī)避漏洞的建議
- 嚴(yán)格控制集群的外網(wǎng)訪問權(quán)限
- 不下載和運(yùn)行來歷不明的容器鏡像
- 以 non-0 方式運(yùn)行容器鏡像(在 securityContext 中配置 runAsUser)
apiVersion: v1 kind: Pod metadata: name: run-as-uid-1000 spec: securityContext: runAsUser: 1000 # ...
- 升級 docker 或者 runc
升級 Docker 至 18.06.2,可參考官方文檔(注意:此版本僅兼容 4.x 內(nèi)核,請謹(jǐn)慎升級)
runc 升級參考:
1. 定位 runc 的執(zhí)行文件位置:which docker-runc2. 備份此文件:mv /usr/bin/docker-runc /usr/bin/docker-runc.bak.$(date -Iseconds)3. 獲取對應(yīng) OS 和 docker 版本的 runc 執(zhí)行文件,并復(fù)制到相應(yīng)目錄:cp runc-v18.06.1-amd64 /usr/bin/docker-runc4. 確保 docker-runc 具有可執(zhí)行權(quán)限:chmod +x /usr/bin/docker-runc5. 驗(yàn)證其能否正常工作:docker-runc -v docker run -it –rm ubuntu echo OK
在以上配置升級過程中碰到任何問題,您可聯(lián)系青云客服獲取我們的支持。
青云 QingCloud 平臺(tái)可能受影響的服務(wù)及產(chǎn)品
公有云容器服務(wù):Kubernetes On QingCloud
容器產(chǎn)品:KubeSphere
我們?nèi)萜鲌F(tuán)隊(duì)會(huì)在近期發(fā)布 Kubernetes On QingCloud 以及 KubeSphere 的升級版本進(jìn)行漏洞修復(fù)。