
スキャン終了 PoC CVE-2024-4367
⚠️ 重大なセキュリティツール | CVE-2024-4367(CVSS 9.8)を検出 - PDF.js リモートコード実行脆弱性
あらゆるWebサイトで動作 - 設定不要
CVE-2024-4367は、PDF.js(バージョン < 4.2.67)における重大な脆弱性で、悪意のあるPDFファイルを介して任意のJavaScript実行を可能にします。このスキャナーは、あらゆるWebサイト上の脆弱なPDF.jsインスタンスを自動的に検出します。
PDF.jsには、PDFファイルに埋め込まれたJavaScriptが適切にサンドボックス化されずに実行される欠陥があり、攻撃者は以下を実行できます:
F12を押してDevToolsを開く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
# 任意のWebサイトを開いてスクリプトを実行
<embed>要素<object> dataタグ?pdf=, ?file=, ?src=).pdfを受け付けるファイル入力フィールド┌─────────────────────────────────────────────────────────────┐
│ スキャンプロセスの流れ │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 📚 スクリプトの読み込み │
│ ├─ 外部スクリプト(すべての<script src="">) │
│ └─ インラインスクリプト(すべての<script>タグ) │
│ │
│ 2. 🔍 PDF.jsバージョンの抽出 │
│ ├─ コード内のパターンマッチング │
│ ├─ Package.json検出 │
│ └─ Node_modulesパスの解析 │
│ │
│ 3. 🎯 脆弱性の特定 │
│ ├─ version < 4.2.67 ? → VULNERABLE │
│ └─ version = 2.16.105 ? → VULNERABLE │
│ │
│ 4. 🖼️ ビューアの特定 │
│ ├─ DOM要素のスキャン │
│ └─ 属性の検出 │
│ │
│ 5. ⚡ PoCの生成 │
│ ├─ テストPDFの作成 │
│ └─ ダウンロードリンクの提供 │
│ │
│ 6. 📊 結果の表示 │
│ ├─ 視覚的なオーバーレイ │
│ ├─ コンソールレポート │
│ └─ グローバル変数への保存 │
│ │
└─────────────────────────────────────────────────────────────┘
╔═══════════════════════════════════════════════════════════════════════════════════╗
║ CVE-2024-4367 - UNIVERSAL PDF.js SCANNER ║
║ Detects vulnerable PDF.js versions and potential exploitation ║
╚═══════════════════════════════════════════════════════════════════════════════════╝
📚 PHASE 1: Scanning JavaScript Bundles for PDF.js
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[+] Found 42 external scripts
[+] Found 12 inline scripts
[1/42] Analyzing: vendor.bundle.js
→ PDF.js indicator found: pdfjs-dist
✅ PDF.js version found: 2.16.105
🚨 VULNERABLE to CVE-2024-4367!
🎯 PHASE 4: Identifying Exploitation Vectors
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚠️ URL parameter accepts PDF: file=/documents/report.pdf
⚠️ PDF upload form found
█████████████████████████████████████████████████████████████████████████████████
FINAL SCAN REPORT
█████████████████████████████████████████████████████████████████████████████████
🚨 CRITICAL VULNERABILITY CONFIRMED!
CVE: CVE-2024-4367
CVSS: 9.8 (CRITICAL)
Impact: Arbitrary JavaScript Execution
┌─────────────────────────────────────────────────────────────┐
│ CVE-2024-4367 SCAN RESULTS │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 📍 Target: example.com │
│ 📦 PDF.js: 2.16.105 │
│ 🎯 Vulnerable: YES │
│ 📄 Viewers: 3 │
│ ⚡ Vectors: 2 │
│ ━━━━━━━━━━━━━━━━━━━━━━━ │
│ 🔴 CRITICAL - Upgrade Required │
└─────────────────────────────────────────────────────────────┘
# 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でJavaScriptを無効化 | 簡単 | ✅ 完全修正 |
| 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