InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

Docker 所有版本都中招,重大漏洞允许攻击者访问主机文件系统

  • 2019-05-31
  • 本文字数:1661 字

    阅读完需:约 5 分钟

Docker所有版本都中招,重大漏洞允许攻击者访问主机文件系统

毫不夸张的说,所有的 Docker 版本都存在同一个漏洞,这个漏洞可以让攻击者获得主机服务器上所有路径的读写访问权限。据了解,之所以会出现该漏洞,主要是因为 Docker 软件处理某些符号链接的方式,而这些符号链接中往往会包含有到其他目录或文件的路径的文件。


事件回溯

研究员 Aleksa Sarai 发现,在某些情况下,攻击者可以在路径解析时间和操作时间之间的短时间窗口将自己的符号链接插入到路径中。这是 TOCTOU 问题的一个变体,特别是“docker cp”命令,它可以将文件从主机复制到容器,或从容器复制到主机。


Sarai 表示,“这次攻击的基本前提是 FollowSymlinkInScope 遭受了相当根本的 TOCTOU 攻击。FollowSymlinkInScope 的目的是获取给定路径并安全解析,就好像进程位于容器内部一样。完整路径被解析之后,路径会被传递,同时会进行一些操作(例如,在’docker cp’的情况下,它会在创建流式传输到客户端的存档时打开)。”


“如果攻击者在解析之后、操作之前,向路径添加符号链接组件,那么主机上的符号链接路径组件就会被解析为 root。如果正好是在‘docker cp’的情况下,攻击者就可以对主机上的所有路径进行读写访问。”


研究人员认为针对 Docker 的这种攻击可能会持续几年时间。Sarai 针对这一漏洞开发了利用代码,并表示:潜在的攻击场景可能来自云平台,“最可能受到影响的是托管云,因为它允许配置文件复制到正在运行的容器中,也允许从容器中读取文件。”


虽然这个漏洞只有针对“docker cp”的攻击代码,但它是最容易被攻击的端点。另外还有一个值得注意的点,如果选择了一条路径,扩展了其中的所有符号链接,并假设该路径是安全的,那么这是一种非常危险的行为。

如何修复

“这个 Docker 漏洞虽然看起来很严重,但对大多数企业来说未必是紧急情况。” Capsule8 产品开发副总裁 Kelly Shortridge 表示:“Docker 的这个 TOCTOU 漏洞允许攻击者不仅在容器内,而且在主机上违反数据完整性和机密性。除了禁止在任何正在运行的容器上使用 docker cp 实用程序或使用攻击保护产品之外,利用 docker cp 的 Docker 用户很容易受到攻击,但仅限于动机足够强的攻击者,他们有意愿与 docker cp 竞争。”


据了解,Sarai 已经提交了针对该漏洞的修复建议,其中包括在使用文件系统时暂停容器。


这个问题最完整的解决方案是修改 chrootarchive,这样所有的存档操作都将以根目录作为容器 rootfs 进行 (而不是父目录,因为父目录是由攻击者控制的,所以导致了这个漏洞)。不过,要对 Docker 核心部分做更改几乎是不可能完成的事情。


退而求其次,我们选择了在使用文件系统时暂停容器。这种方法能够阻止最基本的攻击,但是在某些攻击场景下无法发挥作用,例如 shared volume mounts。


不过,截止到目前还没有关于 Docker 官方何时修复漏洞的消息。

网友支招

Docker 的这个漏洞公布之后,引发了网友的广泛讨论,大家各抒己见,纷纷为解决该漏洞献计献策。


有网友建议:“至少在某些情况下,符号链接攻击是可以通过验证路径的布尔函数来避免的。如果路径不受符号链接攻击,返回 true,否则返回 false。不受符号链接攻击意味着遍历路径,检查每个目录的权限,确保其不允许任何人创建符号链接。如果路径是相对的,则将当前工作目录作为前缀,以便进行检查。如果路径包含符号链接,那么我们必须验证符号链接目标的实际父目录,且不允许替换该目标。其实,我们只要把路径规范化就可以了,但是这种做法是不可取的,因为软件必须保证已给出的路径不变,而符号链接抽象是属于用户的,应该被尊重。”


也有网友建议:“在 syscall 系列中使用 open + O_PATH + *,它可以用来获得一个已解析目录的句柄,用户可以操作该目录而不会对该句柄上的不同操作进行重新遍历。或者也可以临时加入容器的 mount 命名空间以获取源句柄,不过这种方法很难真正实现,因为 goroutines 无法很好地处理每个线程的操作。”


对于 Docker 的这个漏洞,您有何解决方法?欢迎在下方留言讨论!


参考链接:https://duo.com/decipher/docker-bug-allows-root-access-to-host-file-system


https://news.ycombinator.com/item?id=20031403


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2019-05-31 09:1512540
用户头像

发布了 497 篇内容, 共 295.9 次阅读, 收获喜欢 1880 次。

关注

评论 1 条评论

发布
用户头像
还是得用 企业级产品 有保障。有专家研究如何破解。
2019-05-31 19:06
回复
没有更多了
发现更多内容

springboot自动配置原理

喝水不抬头

架构训练营 - 模块四作业

Sam

架构实战营

支撑MVP,架构师需要做什么

agnostic

MVP

怎样做新人培训

Joseph295

2023-02-11:给你两个整数 m 和 n 。构造一个 m x n 的网格,其中每个单元格最开始是白色, 请你用 红、绿、蓝 三种颜色为每个单元格涂色。所有单元格都需要被涂色, 涂色方案需要满足:

福大大架构师每日一题

算法 rust 福大大

ThreadLocal源码分析及避坑指南

喝水不抬头

NodeJS 实战系列:DevOps 尚未解决的问题

光毅

DevOps nodejs

使用开源实时监控系统 HertzBeat 5分钟搞定对 Mysql 数据库监控告警

TanCloud探云

Java 数据库 GitHub 开源 数据库监控

2023年金三银四必问的 1400 道 Java 面试题及答案整理,让你面试少走99%的弯路!

架构师之道

编程 程序员 java面试

2023最新Python阅读书籍推荐

kcodez

Python

软件测试/测试开发 | Web自动化之Selenium安装

测试人

软件测试 自动化测试 测试开发 Web自动化测试 selenium

【SpringBoot】SpringBoot常用注解

No8g攻城狮

Spring Boot 2 #面试

湖仓一体电商项目(二十):业务实现之编写写入DM层业务代码

Lansonli

湖仓一体电商项目

大家心心念念的RocketMQ5.x入门手册来喽

中间件兴趣圈

RocketMQ rocketmq5

开源ChatGPT要来了;软件2.0智能革命;GLM、Diffusion模型大加速

OneFlow

人工智能 深度学习

运维训练营第十三课作业

好吃不贵

Python 发展趋势:与 Rust 深度融合、更易于编写 Web 应用

Python猫

Python

四点原因,Zoom裁员15%,视频会议甜蜜期结束

B Impact

软件测试/测试开发 | Web测试方法与技术之CSS讲解

测试人

软件测试 自动化测试 测试开发 Web自动化测试 web测试

极客时间架构训练营模块七-王者荣耀商城异地多活架构设计

张Dave

软件测试/测试开发 | Web测试方法与技术实战演练

测试人

软件测试 自动化测试 测试开发 Web自动化测试

New Bing 内测,革搜索的命

冯骐

openai GPT ChatGPT New Bing 对话模型

软件测试/测试开发 | SeleniumIDE用例录制

测试人

软件测试 自动化测试 测试开发 Web自动化测试 selenium

软件测试/测试开发 | Selenium 测试用例编写

测试人

软件测试 自动化测试 测试开发 Web自动化测试 selenium

IPIDEA的使用方式

石臻臻的杂货铺

Python IPIDEA

ChatGPT十问十答 | 图解ChatGPT

涛哥 数字产品和业务架构

人工智能 ChatGPT

如何做总架构师

agnostic

总架构

Dromara HertzBeat 开源社区新晋两位 Committer

TanCloud探云

Java GitHub 开源 后端 开源社区

设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解

C++后台开发

数据结构 设计模式 后端开发 Linux服务器开发 C++开发

免费的苹果手机投屏到电脑mac软件AIrserver7

茶色酒

AIrserver7

状态机设计举例

timerring

FPGA

  • 扫码添加小助手
    领取最新资料包
Docker所有版本都中招,重大漏洞允许攻击者访问主机文件系统_安全_田晓旭_InfoQ精选文章