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, 内存安全, 反取证, 垃圾回收, 堆喷射, 安全测试, 安全评估, 悬挂指针, 攻击性安全, 暴力破解, 漏洞验证, 缓存中毒, 逆向工具