据外媒报道,谷歌 Project Zero 研究员 Tavis Ormandy 刚刚在微软 Notepad 文本编辑器中发现了一个代码执行漏洞。另一厢,SUSE Linux GmbH公司的高级软件工程师 Aleksa Sarai 发现了一个未修复竞争条件漏洞影响所有的 Docker 版本且已发布 PoC。
神秘的 Notepad 0day
谷歌研究员 Tavis Ormandy 表示已将这个 0day 告知微软,后者有90天的补丁发布期限。该漏洞的详情尚未公开,可能会在90天之后或者微软推出修复方案但不到90天时发布。
Ormandy 目前仅表示该漏洞是内存损坏漏洞,他发布截屏说明了如何设法“在 Notepad 中弹出一个 shell”。从截图可明显看出该漏洞已被用于攻击 Windows Command Prompt。
有人猜测如何触发该漏洞,不过 Ormandy 并未说明任何信息。然而他澄清表示已经开发出“真正的利用代码”。
0day 收购公司 Zerodium 的创始人 Chaouki Bekrar 在推特上表示,这并非唯一一个可用于导致 Notepad 崩溃的内存损坏漏洞。
Ormandy 多年来在流行软件中发现了很多漏洞,包括微软的 Malware Protection Engine、uTorrent、Grammarly、Keeper、Ghostcript、LastPass、Kaspersky Antivirus 和思科 WebEx等。
影响所有 Docker 版本的 0day
发现该漏洞的SUSE Linux GmbH公司的高级软件工程师 Aleksa Sarai 表示该 0day 漏洞 (CVE-2018-15664)是他在2014年曾发现并协助修复的某些“docker cp”安全漏洞的延续,但这些老旧漏洞并未被分配 CVE 编号,因为当时认为使用 docker.sock 访问权限的攻击并非有效的安全漏洞。
Sarai 指出,这个影响所有Docker 版本的攻击的基本前提是,FllowSymlinkInScope 遭受了最基本的 TOCTOU 攻击(即 time-to-check-time-to-use 攻击。黑客可利用窗口期在解析资源路径之后但在分配的程序开始在资源上操作之前修改路径)。FllowSymlinkInScope 的目的是获取一个既定路径并以安全的方式将其解析,就像该进程是在容器内那样。完整路径被解析后,被解析的路径传递了一个比特位,之后在另外一个比特位上操作(在 docker cp 情况下,在创建流式传输到客户端的文档时打开)。如果攻击者能够在路径解析之后但在操作之前添加一个符号链接组件,那么就能以 root 身份在主机上解析符号链接路径组件。在“docker cp”情况下,它将导致任何人读取并写入主机任何路径的访问权限。
Sarai 表示,目前并未针对此类攻击的有效保护措施(除了在运行容器时不允许 docker cp,但这样做只对通过 FllowSymlinkInScope 的特定攻击起作用)。除非已经通过 AppArmor限制了 Docker 守护进程,否则可影响主机文件系统。他表示尚未验证在Fedora/CentOS/RHEL默认的 SELinux 配置下是否也可以利用该漏洞。
Sarai 指出,其中一种缓解措施是修改‘chrootarchive’以便文档操作在安全的环境中运行,而root即为容器‘rootfs’,但这涉及到更改 Docker 的核心部分,因此不可行。另外一种是在使用文件系统时暂停容器,但这并无法阻止所有的攻击,它只是针对更为基础的攻击的防御措施。
Sarai 已提交补丁但仍在代码审计过程中。他公开该漏洞详情时获得了 Docker 安全团队的同意。
PoC
Sarai 发布了两个 PoC 脚本,分别为读写权限创建。它们均包括一个 Docker 镜像,其中包含一个简单的二进制用于将一个符号链接 RENAME_EXCHANGE 为“/”和循环中的空目录,希望以此实现竞争条件。在这这两份脚本中,用户都试图将文件复制到路径或者从包含该符号链接的路径中复制文件。
在 run_read.sh 情况下,Sarai 表示实现竞争条件的成功率不到1%,但他表示攻击脚本改进后可提高效率。然而,小于1%的成功率意味着,以 root 权限获取对主机的读取权限仅需10秒钟。
./run_read.sh &>/dev/null & ; sleep 10s ; pkill -9 run.sh chmod 0644 ex*/out # to fix up permissions for grep grep 'SUCCESS' ex*/out | wc -l # managed to get it from the host 2 grep 'FAILED' ex*/out | wc -l # got the file from the container 334
然而,run_write.sh 脚本经过很少的迭代次数就可覆写主机文件系统,这是因为 Dcoker 内部有一个“chrootachive”的概念,文档是从 chroot 中提取的。然而,Docker 并没有 chroot 到容器的“/”(否则会导致利用无效)中,而是chroot 到受攻击者控制的文档目标的父目录中。结果,它可导致攻击者的成功率提升(chroot 实现竞争条件后,实际上就保证了攻击成功)。
这些脚本都要求获取 sudo 权限,这样做的目的只是为了在“/”中创建“标志文件”。感兴趣的读者可修改这些脚本攻击 /etc/ shadow。
Sarai 表示,为了更好地解决这个问题,他正在着手推出一些 Linux 内核补丁,以增强安全解析 rootfs 中的路径的能力。不过目前仍在审计过程中。
推荐阅读
又是 0day!macOS X Gatekeeper 绕过详情和 PoC遭公开
2个0day! 果不食言,她放出更危险的 Windows 0day PoC及利用说明
3个0day!她又放出3个 Windows 0day PoC还承诺再放俩!
原文链接
https://www.securityweek.com/google-researcher-finds-code-execution-vulnerability-notepad
https://seclists.org/oss-sec/2019/q2/131
本文由奇安信代码卫士编译,不代表奇安信观点,转载请注明“转自奇安信代码卫士 www.codesafe.cn”。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)