Notepad 出可利用 0day!Docker 所有版本受 0day 影响
字数 1721 2025-08-18 11:38:41
Notepad 0day 与 Docker 竞争条件漏洞深度分析
一、Notepad 0day 漏洞分析
1.1 漏洞概述
- 发现者: 谷歌 Project Zero 研究员 Tavis Ormandy
- 漏洞类型: 内存损坏漏洞 (Memory Corruption)
- 影响范围: 微软 Notepad 文本编辑器
- 严重性: 可导致远程代码执行 (RCE)
1.2 技术细节
- 研究员已开发出"真正的利用代码",能够在 Notepad 中弹出 shell
- 漏洞利用涉及 Windows Command Prompt
- 具体触发方式尚未公开,但已确认存在多个可导致 Notepad 崩溃的内存损坏漏洞
1.3 时间线
- 2019年5月报告给微软
- 微软有90天的补丁发布期限
- 漏洞详情将在补丁发布或90天期限后公开
1.4 缓解措施
- 暂时无公开的缓解方案
- 建议用户关注微软官方补丁更新
- 可考虑使用替代文本编辑器
二、Docker 竞争条件漏洞 (CVE-2018-15664)
2.1 漏洞概述
- 发现者: SUSE Linux GmbH 高级软件工程师 Aleksa Sarai
- 漏洞类型: TOCTOU (Time-of-Check Time-of-Use) 竞争条件漏洞
- 影响范围: 所有 Docker 版本
- 严重性: 可导致主机文件系统任意读写
2.2 技术细节
2.2.1 漏洞原理
- 漏洞存在于
FollowSymlinkInScope函数中 - 基本攻击前提:
- 系统解析资源路径
- 在解析后但操作前的窗口期,攻击者可修改路径
- 通过添加符号链接组件,以 root 身份在主机上解析符号链接路径
2.2.2 攻击场景
- 在
docker cp命令执行时:- 攻击者可读取并写入主机上的任何路径
- 需要容器内 root 权限或控制镜像构建过程
2.2.3 技术背景
- 该漏洞是2014年发现的
docker cp安全漏洞的延续 - 之前未分配 CVE 编号,因认为通过 docker.sock 的攻击无效
2.3 漏洞利用
2.3.1 PoC 脚本
Sarai 发布了两个概念验证脚本:
-
run_read.sh (读取权限)
- 成功率 <1%,但10秒内可获取主机读取权限
- 包含一个Docker镜像,其中有二进制文件循环交换"/"和空目录的符号链接
-
run_write.sh (写入权限)
- 成功率更高,因Docker的"chrootachive"概念
- 可快速覆写主机文件系统
2.3.2 利用条件
- 需要获取 sudo 权限
- 可修改脚本攻击敏感文件如
/etc/shadow
2.4 缓解措施
2.4.1 临时方案
- 禁止在运行容器时使用
docker cp命令 - 使用 AppArmor 限制 Docker 守护进程
- SELinux 配置可能提供部分保护(未验证)
2.4.2 长期方案
- 修改
chrootarchive使文件操作在安全环境中运行 - 在使用文件系统时暂停容器(不完全防护)
- Linux 内核补丁增强安全解析 rootfs 路径的能力
2.5 修复状态
- 补丁已提交但仍在代码审计过程中
- 漏洞公开已获得 Docker 安全团队同意
三、安全建议
3.1 针对Notepad用户
- 关注微软官方安全公告
- 避免打开不可信的文本文件
- 考虑使用替代编辑器如 Notepad++、VS Code 等
3.2 针对Docker用户
- 限制
docker cp命令的使用 - 实施严格的访问控制:
- 使用非root用户运行容器
- 限制对 docker.sock 的访问
- 加强监控:
- 监控可疑的文件系统操作
- 审计容器活动日志
- 保持Docker环境更新,及时应用安全补丁
四、扩展阅读
五、总结
这两个漏洞展示了不同类型的安全威胁:
- Notepad 0day 展示了常见应用程序中内存损坏漏洞的危险性
- Docker 漏洞则展示了复杂系统设计中竞争条件的风险
管理员和开发者应:
- 保持软件更新
- 实施深度防御策略
- 关注安全研究社区的最新发现