美国时间2019年2月11日晚,runc通过oss-security邮件列表披露了runc容器逃逸漏洞CVE-2019-5736的详情。runc是Docker、CRI-O、Containerd、Kubernetes等底层的容器运行时,此次安全漏洞无可避免地会影响大多数Docker与Kubernetes用户,也因此为整个业界高度关注。

漏洞披露后,Docker在第一时间发布了两个版本18.06.2和18.09.2,这两个版本都可以修复runc漏洞。Rancher Labs极速响应,Rancher Kubernetes管理平台和RancherOS操作系统均在不到一天时间内紧急更新,是业界第一个紧急发布新版本支持Docker补丁版本的平台,并持严谨态度在oss-security邮件列表披露漏洞后的五小时内连夜邮件通知所有Rancher用户此次漏洞的详情及应对之策。

更值得一提的是,尽管Docker发布了修复版本,但因为不是所有用户都能轻易将生产环境中的Docker版本升至最新,Rancher帮忙将修复程序反向移植到所有版本的Docker并提供给用户。且目前Docker官方提供的修复版本并不支持3.x内核(只兼容4.x内核),而runc的开发者特意向Rancher提交了支持3.x内核的PR,目前PR已合并,Rancher提供的方案现已可以支持3.x内核。

runc安全漏洞事件背景

runc是一个根据OCI(Open Container Initiative)标准创建并运行容器的CLI tool,目前Docker引擎内部也是基于runc构建的。2019年2月11日,研究人员通过oss-security邮件列表披露了runc容器逃逸漏洞的详情,根据OpenWall的规定EXP会在7天后也就是2019年2月18日公开。

此漏洞允许以root身份运行的容器以特权用户身份在主机上执行任意代码。这意味着容器可能会破坏Docker主机(覆盖Runc CLI),而所需要的只是能够使用root来运行容器。攻击者可以使用受感染的Docker镜像或对未受感染的正在运行的容器运行exec命令。

Rancher在12号当天已通过公众号文章详细分析了漏洞详情和用户的应对之策。相信目前大部分用户已经对漏洞已经有了初步的了解,甚至在Github上已经有人提交了EXP代码。Rancher在第一时间完成了补丁修复,并向企业用户推送的修复方案。同时在我们也收到了大量来自社区用户在后台的提问,为了疏解种种谜团,这篇后续文章,我们将选取大家重点关注的一些热点疑问进行进一步的解答。

热点问题

非特权容器也能发起攻击吗?

答案是肯定的,Rancher安全团队在第一时间做了一些测试,即使运行容器时不使用privileged参数,一样可以发起攻击。因为这个漏洞核心要素在于,容器内的用户是否对runc有访问权限, 容器内默认是root用户,只是这个root是受限制的root,但是它是具有对runc的访问权限,所以一定可以发起攻击。

主机上不用root用户启动容器可以避免攻击吗?

答案是无法避免,如上一个问题分析,它和容器内的用户有关,至于在主机上以什么用户启动无关。Rancher安全团队在Ubuntu系统上做了测试,即使使用ubuntu用户启动容器, 依然可以完成对runc的替换。

更新官方Docker的注意事项

Docker也在第一时间发布了两个版本18.06.2和18.09.2,这两个版本都可以修复runc漏洞,但是你需要注意的是他们都只兼容4.x内核,如果你的系统依然使用的3.x内核, 请谨慎使用,因为它基本不会起作用,甚至可能导致额外的问题。

Ubuntu 14.04 customers using a 3.13 kernel will need to upgrade to a supported Ubuntu 4.x kernel

参考两个版本的RN:

  • https://docs.docker.com/engin...
  • https://docs.docker.com/engin...

Kubernetes用户怎么办?

使用K8s的用户都很清楚,K8s并不能兼容太高的Docker版本,所以更新官方Docker版本是很难的一件事,为此K8s官方特意发表了一篇Blog:https://kubernetes.io/blog/20... 。 主要思想就是,不要在容器中使用root,它推荐的方案是使用PodSecurityPolicy。当然很多用户修改PodSecurityPolicy后可能会引发各种问题,所以它也推荐用户更新Docker。 同时它也提到,不能更新Docker的用户,可以使用Rancher提供的方案,Rancher为每个版本都移植了补丁:

If you are unable to upgrade Docker, the Rancher team has provided backports of the fix for many older versions at github.com/rancher/runc-cve.

如何使用Rancher提供的补丁?

如上一个问题提到的,用户可以直接访问https://github.com/rancher/ru... 来获取方案,值得一提的是Rancher为3.x和4.x内核用户都提供了补丁版本。

To install, find the runc for you docker version, for example Docker 17.06.2 for amd64 will be runc-v17.06.2-amd64.

For Linux 3.x kernels use the binaries that end with no-memfd_create. Then replace the docker-runc on your host with the patched one.

如何正确使用EXP?

首先不建议大家广泛传播EXP,因为它每暴露一次,就为整体环境增加了一丝风险,我们可以研究学习但是不要恶意传播。 我们在后台看到有些人问到,他们使用了某些EXP代码,攻击没有成功,想知道是不是自己的系统是安全的,不用考虑升级。 Rancher安全团队也查看了一些外部公开的EXP,有些EXP是不完整的,它可能只能在某些环境上起作用。 比如利用libseccomp的EXP,就无法在静态编译的runc上起作用,我们使用了一些公开的EXP就无法在RancherOS上完成攻击。 虽然不同版本的Docker都使用runc,但是不同的操作系统使用runc的方式不同,有的使用static runc,有的使用dynamic runc。 所以不能以某些公开的EXP的执行结果为标准,来判断自己系统是否存在漏洞。

守护用户的K8S之路

Rancher Kubernetes平台拥有着超过一亿次下载量,我们深知安全问题对于用户而言的重要性,更遑论那些通过Rancher平台在生产环境中运行Docker及Kubernetes的数千万用户。

2018年年底Kubernetes被爆出的首个严重安全漏洞CVE-2018-1002105,就是由Rancher Labs联合创始人及首席架构师Darren Shepherd发现的。

2019年1月Kubernetes被爆出仪表盘和外部IP代理安全漏洞时,Rancher Labs也是第一时间向用户响应,确保了所有Rancher 2.x和1.6.x的用户都完全不被漏洞影响。

负责、可靠、快速响应、以用户为中心,是Rancher始终不变的初心;在每一次业界出现问题时,严谨踏实为用户提供相应的应对之策,也是Rancher一如既往的行事之道。未来,Rancher也将一如既往支持与守护在用户的K8S之路左右,确保大家安全、稳妥、无虞地继续前进❤️

runc容器逃逸漏洞最强后续:应对之策汇总与热点疑问解答相关推荐

  1. 新近爆出的runC容器逃逸漏洞,用户如何面对?

    runC是一个根据OCI(Open Container Initiative)标准创建并运行容器的CLI工具,目前Docker引擎内部也是基于runc构建的. 2019年2月11日,研究人员通过oss ...

  2. Docker逃逸--runc容器逃逸漏洞(CVE-2019-5736)

     漏洞简述: 攻击者可以通过特定的容器镜像或者exec操作可以获取到宿主机的runc执行时的文件句柄并修改掉runc的二进制文件,从而获取到宿主机的root执行权限. 利用条件: Docker版本 & ...

  3. 宿主机进程挂载到容器内_迄今为止最严重的容器逃逸漏洞:Docker cp命令漏洞分析(CVE201914271)...

    摘要 在过去几年中,我们在各种容器平台(包括Docker.Podman和Kubernetes)中发现了copy(cp)命令中存在多个漏洞.其中,迄今为止最严重的的一个漏洞是在今年7月被发现和披露的.然 ...

  4. 容器 root权限运行_【漏洞通告】Containerd容器逃逸漏洞通告 (CVE202015257)

    2020年12月1日,Containerd发布更新,修复了一个可造成容器逃逸的漏洞CVE-2020-15257,并公开了相关说明.通过受影响的API接口,攻击者可以利用该漏洞以root权限执行代码,实 ...

  5. 发现一款容器逃逸漏洞利用神器!

    有在关注容器逃逸漏洞,最近在github上发现了一款零依赖Docker/K8s渗透工具包,集成了多个漏洞PoC/EXP,可轻松逃脱容器并接管K8s集群. CDK- 零依赖Docker/K8s渗透工具包 ...

  6. [漏洞分析] CVE-2022-0492 容器逃逸漏洞分析

    CVE-2022-0492 容器逃逸分析 文章目录 CVE-2022-0492 容器逃逸分析 漏洞简介 环境搭建 漏洞原理与相关知识 漏洞发生点 cgroup 简介 cgroup 使用 release ...

  7. 容器安全风险and容器逃逸漏洞实践

    本文博客地址:https://security.blog.csdn.net/article/details/128966455 一.Docker存在的安全风险 1.1.Docker镜像存在的风险 不安 ...

  8. 这个容器逃逸 exploit 获得首届年度谷歌云平台大奖10万美元

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 谷歌将首届年度谷歌云平台 (GCP) 大奖颁给在谷歌 Cloud Shell 中找到多个漏洞的荷兰研究员 Wouter ter Maa ...

  9. Runc容器运行过程及容器逃逸原理

    原文链接:https://ethantang.top/posts/runc-container/ 在每一个Kubernetes节点中,运行着kubelet,负责为Pod创建销毁容器,kubelet预定 ...

最新文章

  1. s-systemtap工具使用图谱(持续更新)
  2. 清华大学提出APDrawingGAN,人脸照片秒变艺术肖像画
  3. 从OpenAI看深度学习研究前沿
  4. 使用Core Audio实现VoIP通用音频模块
  5. c#使用Stopwatch来计算时间间隔
  6. Eclipse 运行Openfire源码(Windows)
  7. ubuntu安装 ftpd server(vsftpd)
  8. java合并两个有序链表_JS实现的合并两个有序链表算法示例
  9. 浅谈网站内容应该做给谁看?
  10. C# 图解教程 第四章 类的基本概念
  11. TokenInsight:BTC多头比例延续上升,人气保持高位
  12. 如何用html制作彩虹,用 CSS 制作彩虹
  13. python人脸识别代码_一行Python代码搞定人脸识别
  14. 测试创新——用户体验测试(UAT)
  15. 霍尔传感器学习使用心得
  16. 精通RPM之--制作篇(上) 原作:雨亦奇 赵建利
  17. 向武 清华大学 计算机,哥哥保送弟弟全市第二 双胞胎如何同时上清华?
  18. oracle截取6位,Oracle函数获取IDCARD中年龄
  19. ios从打包到上架全过程
  20. 数字化转型的失败原因及成功之道

热门文章

  1. ASP.NET的票据工具类FormsAuthenticationTicket
  2. vue的Virtual Dom实现- snabbdom解密
  3. AngularJS实现原理
  4. 比較++和+的运算符优先级
  5. firebird——Spring hibernate 集成连接配置
  6. assign和always的使用
  7. 《笑谈银行IT》—畅谈“银行IT系统”
  8. 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | 单位脉冲序列 δ(n) 傅里叶变换 )
  9. 【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行原理分析
  10. [POJ 3345] Bribing FIPA