在管理隔离 Linux Docker 容器的工具包中 漏洞(),在某些情况下,如果您能够在系统上启动映像或有权访问正在运行的容器,则允许您从容器访问主机环境。 该问题出现在所有版本的 Docker 中并且仍未修复(已提议,但尚未接受, ,它实现了容器在与FS执行操作时的暂停)。
该漏洞允许在执行“docker cp”命令时将文件从容器提取到主机系统文件系统的任意部分。 文件提取是使用 root 权限执行的,这使得可以读取或写入主机环境中的任何文件,这足以获得对主机系统的控制权(例如,您可以覆盖 /etc/shadow)。
只有当管理员执行“docker cp”命令将文件复制到容器或从容器中复制文件时,才能进行攻击。 因此,攻击者需要以某种方式说服 Docker 管理员需要执行此操作并预测复制时使用的路径。 另一方面,例如,当云服务提供将配置文件复制到使用“docker cp”命令构建的容器中的工具时,就可以进行攻击。
该问题是由于函数应用中的缺陷引起的 ,它根据相对路径计算主文件系统中的绝对路径,同时考虑到容器的放置位置。 在执行“docker cp”命令时,短期 ,其中路径已被验证,但操作尚未执行。 由于复制是在主机系统主文件系统的上下文中执行的,因此在指定的时间段内,您可以设法将链接替换为另一个路径,并启动将数据复制到主文件系统中的任意位置之外的位置。容器。
由于竞争条件发生的时间窗口在准备好的情况下是非常有限的 从容器执行复制操作时,通过循环替换复制操作中使用的路径中的符号链接,成功攻击的可能性不到 1%(在大约 10 秒的尝试后进行成功攻击)使用“docker cp”命令循环连续复制文件)。
通过对容器执行复制操作,您只需几次迭代即可在主机系统上实现可重复的文件覆盖攻击。 攻击的可能性是由于复制到容器时使用了“chrootarchive”概念,根据该概念,archive.go 进程不会将存档提取到容器根目录的 chroot 中,而是提取到容器根目录的 chroot 中。目标路径的父目录,由攻击者控制,并且不会停止容器的执行(chroot用作利用竞争条件的标志)。
来源: opennet.ru
