编辑 | 张婵runC 是 Docker,Kubernetes 等依赖容器的应用程序的底层容器运行时。此次爆出的严重安全漏洞可使***者以 root 身份在主机上执行任何命令。

容器的安全性一直是容器技术的一个短板。关于容器最大的安全隐患是***者可以使用恶意程序感染容器,更严重时可以***主机系统。

2 月 11 日,安全研究员 Adam Iwaniuk 和 BorysPopławski 发现了容器运行时 runC 的一个安全漏洞,这个漏洞可以让上述情况发生。Aleksa Sarai,SUSE 的容器高级软件工程师同时也是 runC 的维护者,纰漏了这个漏洞(CVE-2019-5736)。

漏洞详情

runC 是一个开源命令行工具,用于运行容器,是 Docker,Kubernetes 等依赖容器的应用程序的底层容器运行时。runC 由 Docker 公司开发,现在已作为 OCI 规范被广泛使用。如果你正在使用容器,那么有很大的可能是在 runC 上运行它们。

此次爆出的漏洞允许恶意容器覆盖主机上的 RunC 二进制文件,以在主机上获取 root 级别的代码执行,让***者能够以 root 身份运行任何命令。

***方式是将容器中的目标二进制文件替换为返回的 runC 二进制文件,***者可以通过附加特权容器(将其连接到终端)或使用恶意镜像启动并使其自行执行。

但是 Linux 内核通常不允许在 runC 执行过程中主机上的 runC 二进制文件被覆盖。

这时候***者可以使用 O_PATH 标志打开/ proc / self / exe的文件描述符,然后继续通过/ proc / self / fd / <nr>重新打开二进制文件O_WRONLY并在一个单独进程中的繁忙 loop 里尝试写入。Sarai 解释说,最终,当 runC 二进制文件退出时***就成功了。

结果可能会比你想象的还糟。红帽的容器技术产品经理 Scott McCarty 警告大家:

runC 和 Docker 中安全漏洞(CVE-2019-5736)的披露说明了许多 IT 管理员和 CxO 面临着糟糕的情况。容器代表向共享系统的转变,其中来自不同用户的应用程序都在同一 Linux 主机上运行。利用此漏洞意,恶意代码可能会肆意蔓延,不仅影响单个容器,还会影响整个容器主机,最终会破坏主机上运行的成百上千个容器。像这种影响各种互连生产系统的级联漏洞可能会成为企业 IT 的世界末日场景...... 而这正是这个漏洞可能产生的结果。

及时打补丁

除了 runC,Sarai 在报告还说明了这个漏洞还可能会影响到 LXC 和 Apache Mesos。所以,如果你正在运行任何类型的容器,需要尽快打补丁。Sarai 已经 push 了一个 git 提交来修复这个漏洞:

https://github.com/opencontainers/runc/commit/0a8e4117e7f715d5fbeef398405813ce8e88558b

Docker 刚刚发布的 18.09.2 版本(https://github.com/docker/docker-ce/tree/v18.09.2)也修复了该漏洞。

Linux 发行版 Debian 和 Ubuntu 正在修复该漏洞。AWS 和 Google Cloud 已发布安全通知,建议客户更新各种受影响服务的容器。

大多数(如果不是全部)云容器系统都容易受到这种潜在***。 例如,AWS 表示,现在已有一个适用于亚马逊 Linux 的补丁,但仍在为亚马逊 ECS,EKS 和 AWS Fargate 推出补丁。

McCarty 说这不是第一个主要的容器运行时安全漏洞,也不会是最后一个。

就像去年 Spectre/Meltdown 代表了安全研究从软件架构向处理器架构转变一样,我们应该期待 runC 这样的低级别容器运行时和 Docker 这样的容器引擎现在也会受到研究人员和潜在恶意行为者的额外关注。

参考链接:

https://www.theregister.co.uk/2019/02/11/docker_container_flaw/

https://www.zdnet.com/article/doomsday-docker-security-hole-uncovered/




©著作权归作者所有:来自51CTO博客作者mob604756ef1373的原创作品,如需转载,请注明出处,否则将追究法律责任

每一份赞赏源于懂得

赞赏

0人进行了赞赏支持

更多相关文章

  1. Java和HTML有什么区别?哪个更重要?
  2. 最新2018年全球DevOps薪资报告:行业和团队选择指南
  3. “驯服云野兽”:自节点而上,Kubernetes安全总攻略
  4. 网站需要更换服务器应该怎么做?
  5. 04. SpringCloud实战项目-安装Docker
  6. 【OCP最新题库解析(052)--题11】Which is true about the (ADR)
  7. 容器 - Web服务示例(6)
  8. 【OCP最新题库解析(052)--题4】Which four are true about the t
  9. 【OCP最新题库解析(052)--题12】 Your database is using AMM

随机推荐

  1. linux下的/dev/shm/ 以及与swap目录的区
  2. linux时间管理 之 jiffies
  3. Linux下cfsetospeed和cfsetispeed函数
  4. Python和asyncio:封闭的命名管道始终可供
  5. Linux基础之无线网卡配置连接测试相关操
  6. 人邮社专访刘遄老师:不做技术的搬运工
  7. linux下搭建oracle 12c客户端
  8. linux解决端口号被占用
  9. linux中常用时间和字符串之间相互转化
  10. Linux下CPU显示信息解释