所有Docker版本都受到未修补的竞争条件问题的影响

作者:   深圳市网安计算机安全检测技术有限公司 2019/05/31 10:06:45 59次阅读 国内
文章来源:http://www.mottoin.com/detail/3997.html

   所有版本的Docker目前都容易受到竞争条件漏洞的影响,这种竞争条件漏洞可能使攻击者对主机系统上的所有文件都具有读写访问权限。目前概念验证代码已经发布。


   该漏洞类似于CVE-2018-15664,它为黑客提供了一个机会窗口,使得黑客可以在解析后、在指定程序开始对资源进行操作之前修改资源路径。这种漏洞被称为检查时间/使用时间”(TOCTOU)竞争状态,这个问题在文件系统中经常出现。


什么是Docker


   Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。


什么是竞争条件


   竞争条件是系统中的一种反常现象,由于现代Linux系统中大量使用并发编程,对资源进行共享,如果产生错误的访问模式,便可能产生内存泄露,系统崩溃,数据破坏,甚至安全问题。竞争条件漏洞就是多个进程访问同一资源时产生的时间或者序列的冲突,并利用这个冲突来对系统进行攻击。一个看起来无害的程序如果被恶意攻击者利用,将发生竞争条件漏洞。


访问主机上的文件


   该漏洞的核心源于FollowSymlinkInScope功能,该功能易受基本TOCTOU攻击。该功能的目的是通过将进程视为在Docker容器内部运行来以安全的方式解析指定路径。


   解析的路径不会立即运行,它会“过一段时间后再运行”。攻击者可以推测这个时间差,并添加一个符号链接路径,该路径可能最终以root权限解析主机。


   这可以通过“docker cp”实用程序实现,该实用程序允许攻击者在容器和本地文件系统之间复制内容。早在2014年就已经发现了类似的错误。


   “据我所知,对这种攻击没有任何有意义的保护方式(除了在运行容器时禁止“docker cp”——但这只对通过FollowSymlinkInScope的特定攻击有所帮助。)除非你通过AppArmor限制了Docker守护进程,然后它可以影响主机文件系统,”Suse高级软件工程师Aleksa Sarai表示。


缓解方案和漏洞利用脚本


   在Hacker News上,研究人员讨论潜在的缓解解决方案,尽管由于背景和目的的不同,解决方案也会不同。


   Sarai提出的缓解措施是修改“chrootarchive”,以便归档操作在一个安全的环境中运行,其中root是容器的“rootfs”。但这涉及到更改Docker的核心部分,因此并不可行。


   另一个缓解方案是在使用文件系统时暂停容器。虽然这并不能阻止所有攻击,但可以防御基本的攻击。目前研究人员已经将补丁提交给了Docker,目前仍在审核中。


   研究人员还创建了两个漏洞利用脚本——一个用于读取,另一个用于写入访问——其中二进制文件通过运行“符号链接的RENAME_EXCHANGE”到“/”以及循环中的空目录来尝试达到竞争条件。这两个脚本的目的是将文件复制到包含修改后的符号链接的路径中或从中复制文件。


   用于从主机系统读取任意内容的攻击代码竞争条件的成功率小于1%。这可能看起来很低,但实际上,但在10秒钟之内利用该代码成功率就会很高。


   使用在主机上写入资源的脚本,可以“在极少的迭代中覆盖主机文件系统”。

指导单位
广东省公安厅网络警察总队 广东省信息安全等级保护协调小组办公室