云原生生态周报 Vol. 7 Docker 再爆 CVE

业界要闻

  1. Docker 基础镜像 Alpine 爆出提权漏洞(CVE-2019-5021):该CVE影响自 Alpine Linux 3.3 版本开始的所有 Docker 镜像。该漏洞的机制在于 Alpine 的 root 用户包含一个空密码,这可能会导致攻击者获得 root 权限,进而造成攻击。报告中称:受影响范围是 Alpine Linux Docker 镜像 3.3、3.4、3.5、3.6、3.7、3.8、3.9、edge 等全部版本。目前,整个容器技术生态中很多项目的基础镜像层都在采用Alpine。在漏洞披露后,Alpine 最新版已经修复了该问题,用户可以使用3.9.4版本来规避风险。这里也可以参考一些开源项目更换其他基础镜像,例如 kubernetes-csi 项目的这个PR
  2. Docker 项目本身爆出严重漏洞,攻击者可以直接访问宿主机文件系统CVE-2018-15664 5 月 29 日,来自 SUSE 的 Linux 工程师 Aleksa Sarai 汇报了这个漏洞。他指出,在某些情况下,攻击者可以在 docker cp 进行文件路径解析和执行文件操作之间的短时间窗口将自己的符号链接(symlink)插入到路径中,从而在容器中以 root 的身份直接拿到宿主机文件的符号链接,在 docker cp 的场景下,这等同于直接拿到了宿主机任意文件的读写权限。可以看到,这个漏洞是 TOCTOU 攻击的一个典型变体,利用了 Linux 操作文件时候的竞争状态(race condition)。虽然它有可能影响所有 Docker 版本, Docker 官方出台了补丁计划,会在后续版本包含相应修复补丁此次漏洞的攻击前提是攻击者拥有docker cp命令的使用权限,阿里云容器服务集群默认开启了基于RBAC的访问控制,非法用户是没有cp命令在容器内的访问权限的。作为用户,最安全的方法是禁止在多租环境下启用 docker cp 操作,并且将 Docker Daemon 通过 apparmor 等手段进行限制。万幸的是,这个漏洞的利用方法是非常复杂的,需要构造出上述文件竞态才能产生作用。更多详细内容,请参见阿里专家的CVE-2018-15664漏洞分析报告

上游重要进展

  1. Kubernetes 从 v1.15 开始将采用 go module 来进行包管理相比于原来的 Godeps,go module 在打包、编译等多个环节上有着明显的速度优势,并且能够在任意操作系统上方便的复现依赖包。更重要的是,go module 本身的设计使得 Kubernetes 自身被其他项目引用变得更加容易,这也是 Kubernetes 项目向框架化演进的又一个重要体现。
  2. Envoy正在Redis Proxy中实现request mirror功能,用于对请求做镜像。该功能可以指定只对固定百分比的流量做镜像,且可以将read相关的请求给过滤掉。
  3. Envoy正增加路由debug的功能。通过这一功能,可掌握所发起的一个调用能否正常地路由出去,以及路由到了哪个集群。虽然社区已经提供了route table checker这一工具,但该工具只能用于检查静态路由,对于通过xDS下发的动态路由则无能为力,路由debug功能正是瞄准动态路由的。
  4. Knative 社区正在探索stateful-serverless,实验性项目由lightbend公司开发(著名产品akka),期望在knative中建立一个有状态的服务,主要依赖akka cluster加一个持久化的数据库,可以将请求分配给固定的容器。演示视频:演示了一个计数器服务,另附 KubeCon 上的演讲视频
  5. Eventing Security Requirements: 针对事件在数据平面的安全性的需求,knative提出了概要设计,主要定义事件处理的 3 个安全策略边界及对应的安全策略:

    • 事件提供者到事件源(Event Source), 通过身份认证及授权
    • 事件流量入口(Ingress)到 Broker,通过 Token 与 Broker进行认证。
    • Trigger 到消费服务。由消费服务(函数)对持有 Token 的 Trigger 进行认证。
  6. Istio 将结束对 1.0 版本的支持,请尽快升级:根据Istio社区的支持政策,在最新LTS发布后的三个月内,会继续支持上一个LTS版本。Istio 1.1于3月19日发布,因此社区对1.0的支持将于2019年6月19日结束。此后,将停止在1.0版本中支持安全问题和关键错误的修复,因此建议用户尽快升级到最新版本的Istio。https://istio.io/blog/2019/announcing-1.0-eol/

开源项目推荐

  1. Cilium:一个 Kubernetes Network Policy 的优秀实现。Cilium 是一款适用于容器间通信的网络策略软件。依靠Linux的核心能力--柏克莱封包过滤器(Berkeley Packet Filter,缩写 BPF) 在安全性和隔离性上有表现出色。目前作为Kubernetes的addons存在,体现出很强的安全可视性和强制执行的能力。

本周阅读推荐

  1. Kubernetes 中 Informer 的使用简介: Informer 是编写 Kubernetes 自定义控制器的过程中会经常使用到的一个概念,也是自定义控制器通过 WATCH 机制获取 Kubernetes API 对象的主要手段。不过,你是否也经常对Informer 以及相关的 Reflector、Delta FIFO Queue、Local Store、WorkQueue 这些概念困惑不已呢?这篇博客通过简单易懂的语言对 Informer 的工作原理做了一个通俗易懂的解读,推荐你学习一下。
  2. Service Mesh发展趋势:云原生中流砥柱: 介绍ServiceMesh最新的产品动态,分析其发展趋势和未来走向;结合蚂蚁的上云实践,阐述在云原生背景下Service Mesh的核心价值,和对云原生落地的关键作用。

本周报由阿里巴巴容器平台联合蚂蚁金服共同发布

本周作者:至简、张磊、宋净超、林育智、大虎、王夕宁

上一篇:Knative 初体验:Eventing Hello World


下一篇:沉淀九年,一文看清阿里云原生大事件