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

原文链接:

https://duo.com/decipher/docker-bug-allows-root-access-to-host-file-system#d-nav-drawer

composer 完整路径才能访问_Docker 漏洞:允许攻击者获得主机 root 访问权限相关推荐

  1. composer 完整路径才能访问_一份完整的运营方案策划思路,拿走不谢(精华版)

    摘要:某某XX,核心业务产品"草图"手机壳个性化定制小程序: 产品还在增长阶段,各类渠道都有投放(线下门店合作.朋友圈广告.OPPO应用市场投放)等,但目前遇到用户转化低及留存难等 ...

  2. composer 完整路径才能访问_Win7系统IIS,无法访问ASP,提示错误 '80004005'

    Win7系统安装设置好IIS后,无法访问ASP,提示"Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' [Microsoft] ...

  3. linux 访问虚拟磁盘,详解Linux物理主机Host访问虚拟机

    微软的Windows也许已不再是主流,在当今社会Linux越来越成为主流,你是Linux系统的应用者么?本文为你详细介绍Linux物理主机Host访问虚拟机(KVM)的硬盘镜像,为你在学习Linux物 ...

  4. Linux Netfilter 防火墙模块爆新漏洞,攻击者可获取root权限

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全 ...

  5. linux ls 命令 路径,使用ls命令在Linux中使用完整路径列出文件

    许多人会发现,这是重复的问题,但我已经经历了所有问题,然后问及这个主题,但没有为我工作.使用ls命令在Linux中使用完整路径列出文件 我想打印使用ls命令的特定文件格式的完整路径名到目前为止,我发现 ...

  6. Bash脚本获取自身完整路径的可靠方法

    本文翻译自:Reliable way for a Bash script to get the full path to itself [duplicate] This question alread ...

  7. 如何获取文件的完整路径?

    有没有一种简单的方法可以打印file.txt的完整路径? file.txt = /nfs/an/disks/jj/home/dir/file.txt <command> dir> & ...

  8. Mac OS X:在标题栏上显示目录完整路径

    众所周知mac的finder是不带路径显示的,你进入某个文件夹只会显示当前文件夹的名字而已.虽然你可以在finder的菜单栏中点"显示"-"显示路径栏"把路径栏 ...

  9. android system读写权限设置,当然需要root访问权限才能写入Android的system目录

    扎根的Android设备有时必须编辑build.prop文件以调整诸如hsdpa,显示的型号名称或许多其他内容的设置,通常必须在带有来回文件推送的计算机上或通过设备上的cli来完成.Build.pro ...

  10. 如何从文件的完整路径获取目录?

    获取文件所在目录的最简单方法是什么? 我正在使用它来设置工作目录. string filename = @"C:\MyDirectory\MyFile.bat"; 在这个例子中,我 ...

最新文章

  1. python heap_python topN max heap,使用heapq还是自己实现?
  2. 2021-01-07 Python Opencv转换颜色空间 RGB转为HSV
  3. 2021-03-10 模板扩展类调用模板基类成员函数
  4. 专访 Unity 技术总监 Mark Schoennagel、杨栋:基于 Unity 制作影视动画的几点建议!
  5. enum类型的标签内容根据语言的取法
  6. Phoenix命令及语法
  7. 20道必须掌握的C++面试题
  8. 读史知今、以史为鉴 【技术商业化】
  9. 如何选择适合的伺服电机?
  10. SETCPU超频使用教程
  11. virtualbox win10 共享文件夹
  12. SharePoint Project导入(mpp文件导入)
  13. RxSwift学习(四)--- RxSwift 高阶函数
  14. 上海七宝惊现海宝美眉
  15. 将指定的计数添加到该信号量中会导致其超过最大计数
  16. 第14/15周作业---郭志康
  17. 根据word模板(书签)创建导出word
  18. html表单直接发送邮件,html表单匿名发送电子邮件
  19. windows文本转语音调用
  20. Xbox手柄转子马达的控制运用机制原理

热门文章

  1. Python3入门机器学习经典算法与应用 第3章 Numpy数组的合并与分割
  2. 20191116每日一句
  3. 从leap的手掌发出射线,射线碰撞到物体,用红色的小球表示碰撞点,并把碰撞点用linerenderer渲染出来
  4. 181011词霸扇贝有道每日一句
  5. Atitit 验证码功能修复总结文档原有的tp5里面的验证码不知怎么有问题了,试图在tp5框架内修复无果。。使用了新的验证码组件 “lifei6671/php-captcha“: “0.
  6. Atitit 人工智能体系树 常用技术 2. 知识图谱 知识处理系统 2 知识发现 知识图谱 1. 1.NLP 2 自然语言处理文本处理 1.1. 语言理解 分词 2 抽取 (压缩文
  7. Atitit mq读取队列信息 范例 目录 1.1. 读取原理与主要流程 1 1.2. 范例项目 C:\0wkspc\MqDemoPrj 1 1.3. 范例代码 1 1.1.读取原理与主要流程
  8. Atitit 查找算法 艾提拉大总结 目录 1. 查找算法分类 1 1.1. 简单查找算法之折半查找、插值查找、斐波那契查找 1 1.2. 按照数据结构查找法分类 hash 表 1 2. 第8章查找
  9. Atitit 数据库映射到redis存储的模式 1. 常规 每条db记录映射一个redis记录 1 1.1. 表名:主键为key ,记录序列化为json为val 1 2. 每个字段映射一个redi
  10. Atitit 编程语言的类型系统 目录 1.2. 动态类型语言(Dynamically Typed Language): 1 1.3. 静态类型语言(Statically Typed Languag