CVE-2025-14847 | CVSS 8.7 (高) | 認証不要のメモリ情報漏洩
📖 完全なドキュメント • 🔬 技術分析 • ⚡ クイックコマンド
MongoBleed は、MongoDB のネットワークトランスポート層における重大なメモリ情報漏洩脆弱性であり、認証されていないリモート攻撃者が、資格情報やユーザー操作なしに機密ヒープメモリを外部に持ち出すことを可能にします。
| カテゴリ | 説明 |
|---|
| 攻撃タイプ | リモート、認証不要のメモリ情報漏洩 |
| 根本原因 | Zlib 展開が実際のデータ長ではなく、割り当てられたバッファサイズを返す |
| 漏洩するデータ | データベースパスワード、APIキー、セッショントークン、AWS 認証情報、内部サーバー状態 |
| 深刻度 | CVSS 8.7 (高) – ネットワーク経由でアクセス可能、認証不要 |
| 悪用状況 | 2025年12月28日以降、実環境での悪用が確認済み |
| ブランチ | 脆弱バージョン | 修正バージョン | 対応 |
|---|---|---|---|
| 8.2.x | 8.2.0 → 8.2.2 | 8.2.3 | 直ちにアップグレード |
| 8.0.x | 8.0.0 → 8.0.16 | 8.0.17 | 直ちにアップグレード |
| 7.0.x | 7.0.0 → 7.0.27 | 7.0.28 | 直ちにアップグレード |
| 6.0.x | 6.0.0 → 6.0.26 | 6.0.27 | 直ちにアップグレード |
| 5.0.x | 5.0.0 → 5.0.31 | 5.0.32 | 直ちにアップグレード |
| 4.4.x | 4.4.0 → 4.4.29 | 4.4.30 | 直ちにアップグレード |
| ≤4.2.x | 全バージョン | なし | ⚠️ EOL – サポート対象バージョンに移行 |
| 項目 | 詳細 |
|---|---|
| 脆弱なもの | zlib 圧縮を使用する MongoDB サーバーのネットワークトランスポート層 |
| 深刻度 | 高 (CVSS 8.7/7.5) |
| 影響 | 初期化されていないヒープメモリの認証不要リモート漏洩 |
| なぜ重要か | 漏洩した断片にはデータベースパスワード、AWS 秘密鍵、内部サーバー状態が含まれる |
| エクスプロイト状況 | 公開された Proof-of-Concept (PoC) "mongobleed" が検証され、流通中 |
| 本日の対策 | 直ちに修正済みバージョンにアップグレードするか、zlib 圧縮を無効化する |
この脆弱性は MongoDB のネットワークトランスポート層 (message_compressor_zlib.cpp) に存在し、zlib 展開ロジックの重大な欠陥により、認証されていない攻撃者がサーバーの機密メモリを漏洩させることを可能にします。
// 脆弱なコード(修正前)
counterHitDecompress(input.length(), output.length());
return {output.length()}; // ❌ 割り当てられたバッファサイズを返す
// 修正後のコード
counterHitDecompress(input.length(), output.length());
return length; // ✅ 実際の展開データ長を返す
┌─────────────────────────────────────────────────────────────────────────────┐
│ MongoBleed 攻撃ベクトル │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 攻撃者 脆弱な MongoDB │
│ │ │ │
│ │ 1. OP_COMPRESSED メッセージを送信 │ │
│ │ uncompressedSize: 8192 (偽装) │ │
│ │ 実際のデータ: 約100バイト │ │
│ │────────────────────────────────────> │
│ │ │ │
│ │ 2. 8192バイトのバッファを割り当て │
│ │ 3. 約100バイトを展開 │
│ │ 4. バグ: buffer.length() = 8192 を返す │
│ │ 5. BSONパーサーが初期化されていないメモリを読む│
│ │ │ │
│ │ 6. フィールド名として漏洩メモリを含むエラーレスポンス │
│ │<──────────────────────────────────── │
│ │ │ │
│ 🔓 漏洩データ: │ │
│ - APIキー、パスワード、トークン │
│ - MongoDB 内部状態 │
│ - WiredTiger ストレージ設定 │
│ - システム /proc 情報 │
│ - クライアント接続データ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
| 日付 | イベント |
|---|---|
| 2025年12月15日 | 脆弱性を特定、内部チケット SERVER-115508 |
| 2025年12月19日 | 修正リリース、CVE-2025-14847 公開 |
| 2025年12月24日 | MongoDB Atlas フリート修正完了 |
| 2025年12月26日 | 公開 PoC "mongobleed" リリース |
| 2025年12月28日 | 実環境での悪用を確認 |
🔬 技術分析を見る → – 脆弱性の構造、エクスプロイト構築、検出方法の詳細
mongobleed-exploit-CVE-2025-14847/
├── exploit/ # 🔴 エクスプロイトラボ
│ ├── docker-compose.yml # 脆弱なMongoDB + 修正済みMongoDBインスタンス
│ ├── mongobleed.py # メモリ漏洩エクスプロイト PoC
│ ├── init/init-mongo.js # 機密テストデータ
│ ├── test-exploit.sh # ラボテストスクリプト
│ └── README.md # ラボドキュメント
│
├── scanner/ # 🌐 ネットワークスキャナー
│ ├── mongobleed_scanner.py # IP/ドメイン脆弱性スキャナー
│ ├── sample-targets.txt # サンプルターゲットファイル
│ └── README.md # スキャナードキュメント
│
├── code-scan/ # 📂 コードスキャナー
│ ├── main.py # CLI エントリポイント
│ ├── scanners/ # Docker, Python, インフラストラクチャスキャナー
│ ├── models/ # Finding, Vulnerability モデル
│ ├── integrations/ # Phoenix Security アップロード
│ └── README.md # コードスキャナードキュメント
│
└── original-exploit/ # 📚 オリジナル PoC リファレンス
cd exploit
# ラボを起動(脆弱 + 修正済みインスタンス)
docker-compose up -d
sleep 10
# 脆弱インスタンスをテスト(メモリ漏洩が発生するはず)
python3 mongobleed.py --host localhost --port 27017
# 修正済みインスタンスをテスト(メモリ漏洩が発生しないはず)
python3 mongobleed.py --host localhost --port 27018
# ラボ全体のテスト
./test-exploit.sh
cd scanner
# 単一ホストをスキャン
python3 mongobleed_scanner.py 192.168.1.100
# ネットワークレンジをスキャン
python3 mongobleed_scanner.py 192.168.1.0/24
# ファイルからスキャン
python3 mongobleed_scanner.py @sample-targets.txt --json --output results.json
cd code-scan
# 脆弱なMongoDBバージョンをプロジェクトからスキャン
python3 main.py scan /path/to/project
# スキャンしてPhoenixにアップロード
python3 main.py scan /path/to/project --upload-phoenix
# テストを実行
python3 main.py test
# === エクスプロイトラボ ===
# ラボを起動
cd exploit && docker-compose up -d && sleep 10
# エクスプロイトを実行(脆弱インスタンス)
python3 exploit/mongobleed.py --host localhost --port 27017
# エクスプロイトを実行(修正済みインスタンス - 漏洩がないことを確認)
python3 exploit/mongobleed.py --host localhost --port 27018
# === ネットワークスキャナー ===
# ローカルラボをスキャン
python3 scanner/mongobleed_scanner.py localhost:27017 localhost:27018
# ネットワークをスキャン
python3 scanner/mongobleed_scanner.py 192.168.1.0/24 --threads 20
# === コードスキャナー ===
# カレントディレクトリをスキャン
python3 code-scan/main.py scan .
# JSON出力でスキャン
python3 code-scan/main.py scan /path/to/project --json --output results.json
# スキャンしてPhoenixにアップロード
python3 code-scan/main.py scan /path/to/project --upload-phoenix
[*] mongobleed - CVE-2025-14847 MongoDB Memory Leak
[*] Target: localhost:27017
[*] Scanning offsets 20-8192...
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: MONGOBLEED_PRIVATE_KEY_DATA_123...
[!] TARGET IS VULNERABLE TO CVE-2025-14847
[*] Total leaked: 8748 bytes
[*] Unique fragments: 42
[!] Potential secrets detected:
• RSA Private Key
• Lab Secret
[*] Scanning 254 targets with 10 threads...
[1/254] 192.168.1.10:27017 - 8.2.2 [VULNERABLE - CONFIRMED]
[2/254] 192.168.1.11:27017 - 8.2.3 [SAFE]
SUMMARY:
----------------------------------------
Total targets scanned: 254
Reachable hosts: 12
MongoDB instances: 8
VULNERABLE: 3
================================================================================
MONGOBLEED CODE SCANNER REPORT - CVE-2025-14847
================================================================================
🚨 VULNERABLE MONGODB VERSIONS DETECTED
1. [email protected]
File: /project/docker-compose.yml
Type: docker-compose
Reason: Version 8.2.2 is in vulnerable range [8.2.0 - 8.2.2]
✅ Upgrade to: 8.2.3
CVE: CVE-2025-14847
| 優先順位 | アクション | 詳細 |
|---|---|---|
| 🔴 1 | MongoDB のアップグレード | 修正済みバージョン (8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32, 4.4.30) に更新 |
| 🟠 2 | zlib の無効化 | mongod --setParameter networkMessageCompressors=snappy,zstd |
| 🟡 3 | ネットワーク分離 | ポート27017をファイアウォールで遮断し、VPN/プライベートネットワークを使用 |
| 🔵 4 | 認証情報のローテーション | 漏洩した可能性がある場合、すべてのデータベースパスワード、APIキー、トークンをローテーション |
すべてのスキャナーは、Phoenix Security プラットフォームへの検出結果のアップロードをサポートしています:
# 設定ファイルの作成
python3 code-scan/main.py create-config
cp .phoenix.config.TEMPLATE .phoenix.config
# 認証情報を編集
# [phoenix]
# client_id = your_client_id
# client_secret = your_client_secret
# api_base_url = https://api.securityphoenix.cloud
# スキャンしてアップロード
python3 code-scan/main.py scan /path/to/project --upload-phoenix
⚠️ 重要: このツールキットは、許可されたセキュリティテストおよび研究目的でのみ提供されています。
| ドキュメント | 説明 |
|---|---|
| 📖 DOCUMENTATION.md | セットアップ、使用方法、修正を含む完全なプロジェクトドキュメント |
| 🔬 TECHNICAL_ANALYSIS.md | 脆弱性の構造、エクスプロイトメカニズム、検出の詳細 |
| ⚡ QUICK_COMMANDS.md | すべてのツールのコピペ対応コマンド |
| ツール | ドキュメント | 説明 |
|---|---|---|
| 🔴 エクスプロイトラボ | exploit/README.md | Docker ベースの脆弱/修正済み MongoDB ラボ |
| 🌐 ネットワークスキャナー | scanner/README.md | IP/CIDR 脆弱性スキャナー |
| 📂 コードスキャナー | code-scan/README.md | 脆弱なバージョン用コードベーススキャナー |
許可されたセキュリティテストのみに使用。責任を持って使用してください。
最終更新日: 2025年12月