Runc和CVE-2019-5736

2月11日早上有宣佈關於runc中的容器逃逸漏洞。咱們但願爲Kubernetes用戶提供一些指導,以確保每一個人都安全。node

Runc是什麼?

簡單來講,runc是一個低層工具,它負責大量生成Linux容器。Docker、Containerd和CRI-O等其餘工具位於runc之上,用於處理數據格式化和序列化等問題,但runc是全部這些系統的核心。linux

Kubernetes位於這些工具之上,所以雖然Kubernetes自己的任何部分都不容易受到攻擊,大多數Kubernetes安裝都使用了runc。git

這個漏洞是關於?

雖然完整的細節仍然被禁止以提供人們時間補丁,但粗略的版本是:當在容器內以root(UID 0)運行進程時,該進程能夠利用runc中的錯誤來獲取運行容器的主機的root權限。而後,這容許他們無限制地訪問服務器以及該服務器上的任何其餘容器。github

若是容器內的進程是可信任的(是你知道的東西而不是敵對的)或者沒有以UID 0運行,則不受該漏洞影響。若是已應用適當的政策,SELinux也能夠阻止它。RedHat Enterprise Linux和CentOS都在其軟件包中包含適當的SELinux權限,所以若是啓用SELinux,則應該不受影響。docker

最多見的風險來源是攻擊者-控制器(attacker-controller)容器鏡像,例如來自公共存儲庫的未經審查的鏡像。ubuntu

我該怎麼辦?

與全部安全問題同樣,兩個主要選項是緩解漏洞,或將runc版本升級到包含此修補程序的版本。後端

因爲漏洞須要容器內的UID 0,所以直接緩解是確保全部容器都以非0用戶身份運行。這能夠在容器鏡像中設置,也能夠經過pod規範設置:api

apiVersion: v1
kind: Pod
metadata:
  name: run-as-uid-1000
spec:
  securityContext:
    runAsUser: 1000
  # ...

這也可使用PodSecurityPolicy全局實施:安全

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: non-root
spec:
  privileged: false
  allowPrivilegeEscalation: false
  runAsUser:
    # Require the container to run without root privileges.
    rule: 'MustRunAsNonRoot'

考慮到在容器內做爲UID 0運行的總體風險,強烈建議設置這樣的政策。服務器

另外一個潛緩解措施是確保全部容器鏡像都通過審查和可信任。這能夠經過本身構建全部鏡像,或者經過審查鏡像的內容而後固定到鏡像版本哈希來實現(image:external/someimage@sha256:7832659873hacdef)。

升級runc一般能夠經過升級你的發行版的軟件包runc,或經過升級你的操做系統鏡像(若是使用不可變鏡像)來完成。這是各類發行版和平臺的已知安全版本列表:

  • Ubuntu - runc 1.0.0~rc4+dfsg1-6ubuntu0.18.10.1
  • Debian - runc 0.1.1+dfsg1-2
  • RedHat Enterprise Linux - docker 1.13.1-91.git07f3374.el7 (if SELinux is disabled)
  • Amazon Linux - docker 18.06.1ce-7.25.amzn1.x86_64
  • CoreOS - 2051.0.0
  • Kops Debian - in progress
  • Docker - 18.09.2

一些平臺還發布了更具體的說明:

Google Container Engine (GKE)

Google發佈了一份包含更多詳細信息的安全公告,但簡而言之,若是你使用默認的GKE節點鏡像,那麼你就是安全的。若是你使用的是Ubuntu節點鏡像,則須要緩解或使用已知安全版本的runc來升級鏡像。

Amazon Elastic Container Service for Kubernetes (EKS)

亞馬遜還發布了一份包含更詳細信息的安全公告。全部EKS用戶都應該緩解問題或升級到新節點鏡像。

Docker

咱們沒有具體確認Docker for Mac和Docker for Windows是易受攻擊的,但彷佛極可能。Docker發佈了18.09.2版本的修復程序,建議你升級到它。這也適用於使用Docker的其餘部署系統。

若是您沒法升級Docker,Rancher團隊已在github.com/rancher/runc-cve上爲許多舊版本提供了修復的後端。

獲取更多信息

若是你對此漏洞如何影響Kubernetes有任何疑問,請經過discuss.kubernetes.io加入咱們的討論。

若是你想與runc團隊取得聯繫,你能夠經過Google網上論壇或Freenode IRC上的#opencontainers與他們聯繫。


KubeCon + CloudNativeCon中國論壇提案徵集(CFP)2月22日截止

KubeCon + CloudNativeCon 論壇讓用戶、開發人員、從業人員匯聚一堂,面對面進行交流合做。與會人員有 Kubernetes、Prometheus 及其餘雲原生計算基金會 (CNCF) 主辦項目的領導,和咱們一同探討雲原生生態系統發展方向。

中國開源峯會提案徵集(CFP)2月22日截止

在中國開源峯會上,與會者將共同合做及共享信息,瞭解最新和最有趣的開源技術,包括Linux、IoT、區塊鏈、AI、網絡等;並得到如何在開源社區中導向和引領的信息。

大會日期:

  • 提案徵集截止日期:太平洋標準時間 2 月 22 日,星期五,晚上 11:59
  • 提案徵集通知日期:2019 年 4 月 8 日
  • 會議日程通告日期:2019 年 4 月 10 日
  • 會議活動舉辦日期:2019 年 6 月 24 至 26 日

提醒:這是一場社區會議。所以,讓咱們儘可能避開公然推銷產品和/或供應商銷售宣傳。

KubeCon + CloudNativeCon + Open Source Summit贊助方案出爐

KubeCon + CloudNativeCon + Open Source Summit多元化獎學金現正接受申請

KubeCon + CloudNativeCon + Open Source Summit即將首次合體落地中國

相關文章
相關標籤/搜索