2月11日早上有宣布关于runc中的容器逃逸漏洞。咱们但愿为Kubernetes用户提供一些指导,以确保每一个人都安全。node
简单来讲,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,或经过升级你的操做系统镜像(若是使用不可变镜像)来完成。这是各类发行版和平台的已知安全版本列表:
一些平台还发布了更具体的说明:
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) 主办项目的领导,和咱们一同探讨云原生生态系统发展方向。
在中国开源峰会上,与会者将共同合做及共享信息,了解最新和最有趣的开源技术,包括Linux、IoT、区块链、AI、网络等;并得到如何在开源社区中导向和引领的信息。
大会日期:
提醒:这是一场社区会议。所以,让咱们尽可能避开公然推销产品和/或供应商销售宣传。
KubeCon + CloudNativeCon + Open Source Summit赞助方案出炉