f8al/PoC-CVE-2020-9715
GitHub: f8al/PoC-CVE-2020-9715
一个用于验证 EDR 是否能检测 CVE-2020-9715 利用模式的 PoC 工具。
Stars: 0 | Forks: 0
# CVE-2020-9715 EDR 验证 PoC
Adobe Acrobat Reader DC 的 EScript.api ESObject 缓存中存在使用后释放漏洞。仅供授权的红队 EDR 测试使用。
## 漏洞
Adobe Acrobat Reader DC <= 2020.009.20063。EScript 引擎会缓存数据 ESObject,并保留其原始编码(ANSI 或 Unicode)的键。删除操作始终会构造 Unicode 键,因此以 ANSI 命名的条目永远不会从缓存中清除。当垃圾回收器释放底层对象后,旧的缓存条目会变成悬空指针。
## PoC 的作用
1. 在 PDF 中嵌入一个使用 ANSI 编码命名的数据对象
2. JavaScript 的 `OpenAction` 访问 `dataObjects` 以填充 ESObject 缓存
3. 移除引用并强制进行垃圾回收
4. 使用 `ArrayBuffer` 分配进行堆喷射,以回收被释放的内存
5. 重新访问旧的缓存 ESObject,触发使用后释放
此 PoC 触发该漏洞模式,但**不包含**武器化载荷(无 shellcode,无 ROP 链)。其设计目的是验证您的 EDR 是否能检测到该利用技术。
## 使用方法
```
python generate_poc.py # Generates CVE-2020-9715.pdf
python generate_poc.py -o custom.pdf # Custom output path
```
无外部依赖——仅使用 Python 标准库。
## 测试步骤
1. 在工作站上生成 PDF
2. 将其传输到金像测试机
3. 在 Adobe Acrobat Reader DC 中打开
4. 观察 EDR 行为:
- **通过**:EDR 拦截或告警 JS 堆喷射 + UAF 访问模式
- **失败**:PDF 无干预打开,Reader 可能崩溃
## EDR 检测信号
您的 EDR 应关注以下一项或多项:
- JavaScript 堆喷射模式(`ArrayBuffer` 大量分配)
- 访问 `dataObjects` 后强制垃圾回收并重新访问(UAF 模式)
- 嵌入 JS 中已知的 CVE-2020-9715 特征码
- 可疑的 PDF 结构:`OpenAction` + `EmbeddedFiles` + JavaScript
## 影响版本
- Adobe Acrobat Reader DC <= 2020.009.20063
- Adobe Acrobat Reader 2017 <= 2017.011.30171
- Adobe Acrobat Reader 2015 <= 2015.006.30523
已在 APSB20-48(2020 年 8 月)中修复。
标签:Adobe Acrobat Reader DC, ANSI 编码, ArrayBuffer, CVE-2020-9715, EDR 检测, EDR 验证, EmbeddedFiles, GC 触发, Go语言工具, JavaScript 漏洞, Maven, OpenAction, PDF 漏洞, PoC, UAF, Unicode 编码, Use-After-Free, 内存安全, 反取证, 垃圾回收, 堆喷射, 安全测试, 安全评估, 悬挂指针, 攻击性安全, 暴力破解, 漏洞验证, 缓存中毒, 逆向工具