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 函数中
  • 基本攻击前提:
    1. 系统解析资源路径
    2. 在解析后但操作前的窗口期,攻击者可修改路径
    3. 通过添加符号链接组件,以 root 身份在主机上解析符号链接路径

2.2.2 攻击场景

  • docker cp 命令执行时:
    • 攻击者可读取并写入主机上的任何路径
    • 需要容器内 root 权限或控制镜像构建过程

2.2.3 技术背景

  • 该漏洞是2014年发现的 docker cp 安全漏洞的延续
  • 之前未分配 CVE 编号,因认为通过 docker.sock 的攻击无效

2.3 漏洞利用

2.3.1 PoC 脚本

Sarai 发布了两个概念验证脚本:

  1. run_read.sh (读取权限)

    • 成功率 <1%,但10秒内可获取主机读取权限
    • 包含一个Docker镜像,其中有二进制文件循环交换"/"和空目录的符号链接
  2. run_write.sh (写入权限)

    • 成功率更高,因Docker的"chrootachive"概念
    • 可快速覆写主机文件系统

2.3.2 利用条件

  • 需要获取 sudo 权限
  • 可修改脚本攻击敏感文件如 /etc/shadow

2.4 缓解措施

2.4.1 临时方案

  • 禁止在运行容器时使用 docker cp 命令
  • 使用 AppArmor 限制 Docker 守护进程
  • SELinux 配置可能提供部分保护(未验证)

2.4.2 长期方案

  1. 修改 chrootarchive 使文件操作在安全环境中运行
  2. 在使用文件系统时暂停容器(不完全防护)
  3. Linux 内核补丁增强安全解析 rootfs 路径的能力

2.5 修复状态

  • 补丁已提交但仍在代码审计过程中
  • 漏洞公开已获得 Docker 安全团队同意

三、安全建议

3.1 针对Notepad用户

  1. 关注微软官方安全公告
  2. 避免打开不可信的文本文件
  3. 考虑使用替代编辑器如 Notepad++、VS Code 等

3.2 针对Docker用户

  1. 限制 docker cp 命令的使用
  2. 实施严格的访问控制:
    • 使用非root用户运行容器
    • 限制对 docker.sock 的访问
  3. 加强监控:
    • 监控可疑的文件系统操作
    • 审计容器活动日志
  4. 保持Docker环境更新,及时应用安全补丁

四、扩展阅读

  1. BleepingComputer原文
  2. SecurityWeek报道
  3. OSS-Sec邮件列表

五、总结

这两个漏洞展示了不同类型的安全威胁:

  1. Notepad 0day 展示了常见应用程序中内存损坏漏洞的危险性
  2. Docker 漏洞则展示了复杂系统设计中竞争条件的风险

管理员和开发者应:

  • 保持软件更新
  • 实施深度防御策略
  • 关注安全研究社区的最新发现
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环境更新,及时应用安全补丁 四、扩展阅读 BleepingComputer原文 SecurityWeek报道 OSS-Sec邮件列表 五、总结 这两个漏洞展示了不同类型的安全威胁: Notepad 0day 展示了常见应用程序中内存损坏漏洞的危险性 Docker 漏洞则展示了复杂系统设计中竞争条件的风险 管理员和开发者应: 保持软件更新 实施深度防御策略 关注安全研究社区的最新发现