查看原文
其他

Docker 所有最新版本中招!允许攻击者获得主机 root 访问权限

云技术 2022-01-05

The following article is from OpenShift开源社区 Author 董俊波 翻译


Docker的所有当前版本都有的最新漏洞,这个漏洞导致攻击者可以获得宿主机的所有路径读写访问权限。这个弱点是因为docker软件竞争关系(RaceCondition)导致的,本周已经出了修复补丁,但是还没有被集成进系统。


这个Bug是docker软件本身操作宿主机的一些符号链接文件导致的,这些符号链接文件可以访问其他的目录和文件。研究者Aleksa Sarai发现在一些场景下,攻击者可以在极端的一个窗口时间–路径被解析出来,还没有被打开的时候,插入自己的符号链接到一个路径。这是一个检查时间到使用时间(TOCTOU)攻击变体。特别是在使用docker cp命令拷贝文件到容器里或者从容器里拷贝文件出来。


Sarai在他的关于这个问题的咨询提到,“此次攻击的基本前提是FollowSymlinkInScope遭受了相当常规的TOCTOU攻击。 FollowSymlinkInScope的目的是让进程感觉像在容器里,获取给定路径并安全地解析。完整路径被解析出来之后,解析出来的路径要被传进docker,然后稍后才会被执行。(例如docker cp命令执行是当创建要传输给docker客户端的归档文件)。”


如果攻击者可以在路径解析出来后,未被操作之前的时候将符号链接组件添加到路径,那么攻击者最终可能会以root用户身份解析主机上的符号链接路径组件。在“docker cp”的情况下,这使攻击者可以对主机上的任何路径进行读写访问。"


Sarai向Docker安全团队通报了漏洞,并在与他们沟通过之后,即使没有可用的补丁的情况下,双方同意公开披露这个漏洞,以便让客户知道这个漏洞的存在。 Sarai讲研究人员意识到这种攻击几年前可能已经让Docker遭受了攻击。他为漏洞开发了漏洞攻击代码,并表示整个云平台都可能是潜在的攻击场景。


Sarai电子邮件如此写到,“这种攻击最有可能的发生的情况,是云中的主机,允许你(例如)将配置文件复制到正在运行的容器中或从容器内读取文件(如通过”docker cp“)的时候。”


“但是应该注意的是,虽然这个漏洞仅仅利用”docker cp“代码,但这是因为它是我首先发现的。这里有一个更基本的问题 —扩展所有符号链接获取路径的方法是根本不安全的,却以为这样做是安全的。“


“由于有人怀疑像这样的攻击可能会持续一段时间,因此他们觉得公开发布攻击告诉大家是合理的。”


凯莉·肖特里奇,专注于容器安全的Capsule8公司的开发副总。她说容器漏洞,虽然严重,但对大多数企业而言并不一定是紧急的事情。


凯莉讲到,“Docker中的这个TOCTOU弱点允许攻击者,不仅在容器内,而且在宿主机上访问完整和机密的数据。除了禁止任何正在运行的容器上运行docker cp命令或者采用攻击防护产品之外,Docker用户利用docker cp命令也是需要禁止使用的,因为这样做也是很容易受到攻击,但是仅仅会发生在有充足精力竞争者,愿意参与docker cp竞速的场景。


Sarai 已经提交了一个关于漏洞的建议解决办法:涉及文件系统操作的时候,都要暂停容器。


Sarai在他的 pull request on Github提到 "这个漏洞最完整的解决办法是修改chrootarchive,这样所有的归档操作都将用根作为容器的根文件系统(而不是父目录,由于父目录被攻击者控制,而导致漏洞产生)。不幸的是更改这个docker的核心部分技术是不可能的(压缩解压缩接口有很多拷贝和实现需要修改,才能操作新的root协议)。


因此,我们选择下一个最佳选项—在我们操作文件系统期间暂停容器。这不是一个完美的解决办法(你可以想像一些攻击场景如共享卷挂载),这个解决办法效果不太好,但是却有用,可以组织大部分的常规攻击。


Sarai讲他还没有收到任何Docker官方关于什么时候把修复盒进docker代码的回应,并且docker官方对关于何时修复这个漏洞的问题不做任何回应。


我确信这些是他们将尽快合并进docker代码的,但是因为有人怀疑这样的攻击可能还要持续一段时间,因此docker官方觉得把这个问题公布于众让大家有所防范会更好,而不是漫长等待修复中,却被攻击好。


备注:

1、TOCTOU解释:代码先检查某个前置条件(例如认证),然后基于这个前置条件进行某项操作,但是在检查和操作的时间间隔内条件却可能被改变,如果代码的操作与安全相关,那么就很可能产生漏洞。这种安全问题也被称做TOCTTOU(time of check and the time of use)

2、FollowSymlinkInScope 一个docker源码中的类。

3、 Race Condition中文翻译是竞争条件,是指多个进程或者线程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关的现象。换句话说,就是线程或进程之间访问数据的先后顺序决定了数据修改的结果,这种现象在多线程编程中是经常见到的。


↓↓ 点击"阅读原文" 【加入云技术社区】

相关阅读:

Docker Hub 19万用户敏感数据泄露:包含GitHub令牌

谷歌G Suite漏洞:部分密码明文存储长达十四年

iLnkP2P 爆严重漏洞:全球 200 万物联网设备受影响

谷歌研究员:软件技术无法解决“幽灵”芯片漏洞

思科服务器重大漏洞:无需密码就能获取管理员权限

全球200000台交换机受影响,中国有14000台;黑客利用思科漏洞攻击俄罗斯和伊朗的基础设施

RightScale 2019年云状况调查报告:35% 的云支出被浪费「附50页PDF下载」

2018年云计算九大趋势热词:Serverless、混合云、多云、中台、边缘计算等「附下载」

更多文章请关注


文章好看点这里[在看]👇

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存