
Mongobleed Detector CVE-2025-14847
CVE-2025-14847(MongoBleed)— MongoDB メモリリーク脆弱性のプロフェッショナルなスキャナーです。
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
CVE-2025-14847(MongoBleed) は、MongoDB の zlib 圧縮処理における重大なメモリリーク脆弱性です。
圧縮メッセージ(zlib を使用した OP_COMPRESSED)の処理時に、MongoDB はクライアントから提供された uncompressedSize フィールドに基づいてバッファを割り当てます。悪意のあるクライアントは実際のデータよりも大きなサイズを指定することで、MongoDB に以前の操作の機密データを含む未初期化のヒープメモリを返させることができます。
| ブランチ | 脆弱なバージョン | 修正済みバージョン |
|---|---|---|
| 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 | 全バージョン | EOL(修正パッチなし) |
追加パッケージは不要です。スキャナーは Python の標準ライブラリのみを使用します。
# デフォルトポート (27017)
python scanner.py -t 192.168.1.100
# カスタムポート
python scanner.py -t 192.168.1.100:27018
# カンマ区切り
python scanner.py -t 192.168.1.100,192.168.1.101:27018,db.example.com
# targets.txt(1行1ターゲット、# でコメント)
# 192.168.1.100
# 192.168.1.101:27018
# mongodb.example.com
python scanner.py -f targets.txt
# プレーンテキスト
python scanner.py -t 192.168.1.100 -o report.txt
# JSON(詳細)
python scanner.py -t 192.168.1.100 -o report.json
# CSV(表計算)
python scanner.py -t 192.168.1.100 -o report.csv
| オプション | 説明 |
|---|---|
-t, --targets | カンマ区切りのターゲット(ホストまたはホスト:ポート) |
-f, --file | ターゲットを記述したファイル(1行1エントリ) |
-o, --output | エクスポートファイル(.txt, .json, .csv) |
-q, --quiet | サマリーのみ表示 |
-v, --version | バージョン表示 |
-h, --help | ヘルプ表示 |
| 記号 | ステータス | 説明 |
|---|---|---|
[!] | VULNERABLE(脆弱) | 脆弱性が確認されました。直ちに対応が必要です。 |
[?!] | POSSIBLY VULNERABLE(脆弱の可能性) | バージョン推測による判定。手動確認が必要です。 |
[+] | SAFE(安全) | 修正済みバージョンです。 |
[~] | MITIGATED(緩和済み) | 脆弱なバージョンですが zlib が無効化されています。 |
[?] | UNKNOWN(不明) | ステータスを判定できませんでした。 |
[-] | UNREACHABLE(到達不能) | 接続に失敗しました。 |
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
| LEGAL: Authorized security testing only. Obtain permission |
| before scanning systems you do not own. |
+================================================================+
[*] Loaded 4 target(s)
SCAN RESULTS:
----------------------------------------------------------------------
[!] 192.168.1.100:27017 VULNERABLE v8.0.16 zlib:ON -> Update to 8.0.17
[?!] 192.168.1.101:27018 POSSIBLY VULNERABLE v~8.2.x zlib:ON -> Check version, update to 8.2.3
[+] 192.168.1.102:27017 SAFE v8.0.17 zlib:ON
[~] 192.168.1.103:27017 MITIGATED v8.0.16 zlib:OFF (zlib disabled)
======================================================================
SCAN SUMMARY
======================================================================
Total targets scanned: 4
Reachable: 4
Unreachable: 0
----------------------------------------------------------------------
[!] VULNERABLE: 1
[?!] POSSIBLY VULN: 1 (version estimated, needs verification)
[+] SAFE (patched): 1
[~] MITIGATED: 1 (vulnerable version but zlib disabled)
[?] UNKNOWN: 0
======================================================================
VULNERABLE TARGETS REQUIRING IMMEDIATE ACTION:
----------------------------------------------------------------------
192.168.1.100:27017 v8.0.16 zlib:ON -> Upgrade to 8.0.17
v8.0.16 — 検出された正確なバージョンv~8.2.x — ワイヤプロトコルによる推定(~ は推定を示します)推定が行われるのは、MongoDB 8.2以降でバージョンコマンドに認証が必要な場合です。スキャナーはワイヤプロトコルバージョンマッピングにフォールバックします。
1. TCP 接続
└── MongoDB ポートに接続
2. バージョン検出
├── 'hello' コマンド送信(ワイヤバージョン取得、認証不要)
└── 'buildInfo' コマンド送信(正確なバージョン取得、認証が必要な場合あり)
3. 圧縮確認
└── zlib 圧縮メッセージ送信、サーバーが受け入れるか確認
4. 評価
└── バージョン + zlib ステータスを脆弱性データベースと比較
正確なバージョンが取得できない場合(認証が必要)、スキャナーは maxWireVersion から推定します。
| ワイヤバージョン | MongoDB ブランチ |
|---|---|
| 25 | 8.0.x |
| 27 | 8.2.x |
| 21 | 7.0.x |
| 17 | 6.0.x |
| 13 | 5.0.x |
VULNERABLE = (バージョンが脆弱範囲内) かつ (zlib 有効)
MITIGATED = (バージョンが脆弱範囲内) かつ (zlib 無効)
SAFE = (バージョン >= 修正バージョン)
| 現在のバージョン | 更新先バージョン |
|---|---|
| 8.2.0 - 8.2.2 | 8.2.3 以降 |
| 8.0.0 - 8.0.16 | 8.0.17 以降 |
| 7.0.0 - 7.0.27 | 7.0.28 以降 |
| 6.0.0 - 6.0.26 | 6.0.27 以降 |
| 5.0.0 - 5.0.31 | 5.0.32 以降 |
| 4.4.0 - 4.4.29 | 4.4.30 以降 |
# mongod.conf
net:
compression:
compressors: snappy,zstd # 'zlib' を削除
またはコマンドラインから:
mongod --networkMessageCompressors snappy,zstd
THIS TOOL IS PROVIDED FOR AUTHORIZED SECURITY TESTING ONLY.
You must obtain proper authorization before scanning any systems
you do not own or have explicit written permission to test.
Unauthorized access to computer systems is illegal.
The authors assume no liability for misuse of this tool.
| コード | 意味 |
|---|---|
| 0 | 全ターゲットが安全または緩和済み |
| 1 | 接続エラーが発生 |
| 2 | 脆弱なターゲットが見つかった |
スクリプト内での使用例:
python scanner.py -t mongodb.example.com
if [ $? -eq 2 ]; then
echo "ALERT: Vulnerable MongoDB detected!"
fi
許可されたセキュリティテストおよび研究目的のみに使用してください。