razureink/cve-2026-21509-office_security_bypass_reproduction
GitHub: razureink/cve-2026-21509-office_security_bypass_reproduction
该项目复现了 CVE-2026-21509 Microsoft Office 安全功能绕过漏洞,提供生成可绕过受保护视图的恶意文档的 PoC 脚本。
Stars: 0 | Forks: 0
# CVE-2026-21509 — Microsoft Office 安全功能绕过
- **CVE-2026-21509** 是一个 Microsoft Office 安全功能绕过漏洞
- **CVSS 7.8**,已被 **APT28(俄罗斯黑客组织)** 积极用于针对乌克兰的攻击
- 在安全决策中依赖于不受信任的输入(**CWE-807**)——“破坏 kill bit”
- 允许通过恶意文档绕过**受保护的视图**和 **OLE 缓解措施**
- 影响 **Office 2016、2019、2021、2024、Microsoft 365 Apps**
- 于 **2026 年 1 月** 发布了紧急的带外补丁
## 概述
CVE-2026-21509 是 Microsoft Office 中的一个安全功能绕过漏洞,允许攻击者绕过受保护的视图和 OLE(对象链接与嵌入)缓解措施。该缺陷源于 Office 验证 kill bit 的方式——kill bit 是一种旨在阻止危险 CLSID 的注册表机制。通过提供一个经过篡改 CLSID 的特制 OLE 对象,或者通过操纵激活上下文,攻击者可以诱骗 Office 信任一个本应被阻止的嵌入式控件。
## 技术细节
**根本原因:** CWE-807 — 在安全决策中依赖于不受信任的输入。
对 COM/OLE 对象的 kill bit 检查使用了可以通过文档级覆盖来受攻击者影响的数据。具体而言,某些 Office 文档中的 IDataObject 或 IOleObject 实现可以将 kill bit 查找重定向到攻击者控制的注册表路径,或者提供一个完全绕过阻止列表的 GUID。
**攻击向量:**
1. 一个特制的 RTF 或 DOCX 文件嵌入了一个恶意的 OLE 对象(例如 shell 执行 COM 控件)。
2. 打开时,Office 会在激活 OLE 对象之前查询 kill bit 注册表。
3. 该文档提供一个伪造的 CLSID,或者通过指向非标准注册表位置的 OLE 动词/数据路径条目来篡改查询。
4. 在预期路径中未找到 kill bit,因此 Office 无限制地启动该控件。
5. 该控件执行攻击者提供的代码(例如 MSHTA、PowerShell 或脚本引擎)。
## 受影响版本
| 产品 | 版本 / 构建版本 |
|-----------------------------|------------------------------------|
| Office 2016 | KB5002711 之前的所有版本 |
| Office 2019 | KB5002712 之前的所有版本 |
| Office 2021 | KB5002713 之前的所有版本 |
| Office 2024 | KB5002714 之前的所有版本 |
| Microsoft 365 Apps | 2501 之前的版本(2026 年 1 月) |
## 复现步骤
1. 在 Windows 10/11 x64 测试环境中安装受影响版本的 Microsoft Office(见上表)。
2. 使用提供的 `exploit.py` 生成恶意文档:
python exploit.py --output malicious.doc --payload "calc.exe"
3. 在 Office 中打开生成的文件。**受保护的视图应被绕过**,并且 payload 将被执行。
4. 应用补丁后,同一个文件应该会被阻止——以此确认修复有效。
## 概念验证
此存储库中的 `exploit.py` 脚本会生成一个特制的 RTF/DOC 文件,该文件:
- 嵌入一个 CLSID 设为 `{0002DF01-0000-0000-C000-000000000046}` 的 OLE 对象(DHTML Edit Control —— 一种常被武器化的控件)。
- 篡改 RTF 中的 `\objdata` 和 `\object` 组,以绕过激活期间的 kill bit 查找。
- 可选地捆绑一个在激活时运行的脚本 payload(PowerShell 或 MSHTA)。
**⚠ 警告:** 此 PoC 专为授权的安全测试提供。请勿对您不拥有或未获得明确测试许可的系统使用。
## 缓解措施
- **安装 2026 年 1 月的带外更新** —— 这是唯一的彻底修复方法。
- 审查并强制执行 KB5002711 中提供的**增强型 kill bit 列表**。
- 为 Office 子进程创建启用**攻击面减少 (ASR) 规则**。
- 考虑使用 **Microsoft Defender for Office 365** 来阻止已知的漏洞利用文档。
- 通过**组策略**限制 OLE 对象激活:
`Computer Configuration > Administrative Templates > Microsoft Office
## 参考
- [CVE-2026-21509 — MITRE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-21509)
- [CWE-807:依赖于不受信任的输入](https://cwe.mitre.org/data/definitions/807.html)
- [Microsoft 安全响应中心 — 2026 年 1 月 OOB 版本](https://msrc.microsoft.com/)
- [APT28 / Fancy Bear — 活动概述](https://attack.mitre.org/groups/G0007/)
标签:Go语言工具, OLE对象, 安全特性绕过, 微软Office, 恶意文档, 漏洞复现, 逆向工具