CVE-2026-25940 jsPDF PoC
一个针对 CVE-2026-25940 的概念验证,演示了特制的 AcroForm 单选按钮外观如何在易受攻击的 PDF 查看器(例如 Foxit)中触发嵌入式 JavaScript。该仓库包含一个基于 Node 的生成器和一个浏览器查看器测试框架,用于测试不同的解析路径。
⚠️ 仅在隔离的非生产环境中使用。示例载荷会故意执行 JavaScript,并可能发起网络请求或调用外部程序。请勿在您重视的主机上使用不受信任的查看器打开生成的 PDF。
仓库内容
- poc.js:生成一个包含多个单选按钮选项和不同外观流的恶意 PDF,以展示不同的行为。
- viewer.html:极简查看器测试框架,用于在浏览器中生成 PoC 或加载现有样本,并通过原生方式(iframe)和 PDF.js 进行渲染。
- package.json:声明 Node PoC 所需的 jsPDF 依赖。
前提条件
设置
- 安装依赖:
- (可选)在本地启动查看器服务,以便更干净地加载 HTML/JS:
npx http-server .
# 然后打开 http://localhost:8080/viewer.html
通过 Node 生成 PoC PDF
- 运行生成器:
- 脚本会在项目根目录写入
test.pdf。使用您的目标 PDF 查看器打开它,观察其行为。如果您希望避免出站请求,请保持网络处于阻断状态。
基于浏览器的查看器工作流程
- 直接在浏览器中打开 viewer.html,或通过本地服务器访问。
- 点击 生成 PoC PDF 在浏览器中构建恶意文档,并将其同时加载到 iframe(原生/浏览器处理程序)和 PDF.js 画布中。
- 或者,选择 加载文件 并选择您使用 Node 脚本生成的 PDF。
- 观察控制台/网络活动以获取 JavaScript 执行的证据;某些查看器可能会抑制警报,但仍会运行嵌入的操作。
注意事项
- 载荷针对 Foxit 的行为进行了调优;其他查看器可能会部分缓解或阻止它们。
- 如果您调整载荷,请保持大小相近,以避免改变某些利用链所依赖的对象偏移量。
- 始终在具有受限网络出口的虚拟机或沙箱中进行测试。