概要
- MongoBleed(CVE-2025-14847) は2017年以降のほぼ全てのMongoDBバージョンに影響する深刻な脆弱性
- zlib圧縮処理のバグ により、攻撃者が認証なしでヒープメモリの未初期化データを読み取れる
- パッチ済みバージョンあり だが、EOLバージョン(3.6/4.0/4.2)は未対応
- インターネット公開MongoDB が21万台以上確認され、広範囲なリスク
- 対策はアップデートまたはzlib圧縮無効化 が推奨
MongoBleed(CVE-2025-14847)の概要
- MongoBleed はMongoDBの zlib圧縮経路 に存在する重大バグ
- 攻撃者は 認証不要 でデータベースへ接続し、脆弱性を突くことが可能
- 未初期化ヒープメモリ の内容(パスワード、APIキー、顧客データ等)を取得可能
- 2017年5月 のPRでバグが導入され、 2025年12月 に修正
- EOL(サポート終了)バージョンでは パッチ提供なし
技術的な詳細
-
MongoDB独自のTCPプロトコル と BSONフォーマット を利用
-
通信は OP_MSG コマンドのみで行われる設計
-
圧縮通信時 はOP_COMPRESSEDメッセージを使用し、ヘッダ内の uncompressedSize (復元後サイズ)を信頼してバッファを確保
-
実際のデータより大きなuncompressedSizeを指定すると、 余分なヒープメモリ がバッファに含まれる
- 例:[1KBの実データ | 999KBのヒープガーベジ]
-
バグにより 実際の復元サイズを確認せず、ユーザー入力値をそのまま利用
-
C++実装 のため、バッファには過去の処理で使われた 機密情報 が残留
攻撃手法の流れ
-
攻撃者は 不正なzlib圧縮リクエスト を送信
-
BSONの最初のフィールド(C言語のnull終端文字列)をパース時、 null終端が無い 不正BSONを送り込む
-
サーバは バッファ内のヒープガーベジ までスキャンし、最初のnullバイトまでをフィールド名として認識
-
エラーレスポンスに 無効なフィールド名 を含めて返却 → 攻撃者は 漏洩データ を取得可能
- 例:{ "ok": 0, "errmsg": "invalid BSON field name 'a | password: 123'", ... }
-
攻撃者はこれを 自動化・多量実行 し、ヒープ全体を探索可能
影響範囲・リスク
- 認証前処理 で発生するため、 公開DBは即危険
- Shodan によると、 21万台以上 のMongoDBがインターネット上で公開状態
- ユーザー情報、パスワード、APIキー、設定情報、顧客データ等 あらゆる機密情報 が漏洩するリスク
対策・緩和策
- MongoDB最新版へアップデート (8.0.17以降等)を推奨
- zlibネットワーク圧縮の無効化 も有効な暫定策
- EOLバージョン は修正対象外のため、 早急な移行 が必要
タイムライン
- 2017年6月1日 :バグを含むコミットがマージ
- 2025年12月17日 :修正コード作成
- 2025年12月19日 :CVE公開、Atlasクラウドパッチ適用
- 2025年12月22日 :パブリックリポジトリに修正マージ
- 2025年12月24日 :公式パッチアナウンス、「Atlas全DBパッチ済み」発表
参考情報・検知ツール
- 公式CVE情報 https://nvd.nist.gov/vuln/detail/CVE-2025-14847
- バグ導入PR https://github.com/mongodb/mongo/pull/1152
- 修正コミット https://github.com/mongodb/mongo/commit/505b660a14698bd2b5233bd94da3917b585c5728#diff-e5f6e2daef81ce1c3c4e9f7d992bd6ff9946b3b4d98a601e4d9573e5ef0cb07dR77
- 攻撃検知・解説記事 https://www.ox.security/blog/attackers-could-exploit-zlib-to-exfiltrate-data-cve-2025-14847/ https://blog.ecapuano.com/p/hunting-mongobleed-cve-2025-14847
- PoC・検知ツール https://github.com/joe-desimone/mongobleed https://github.com/Neo23x0/mongobleed-detector
総括
- MongoBleedはHeartbleed級のデータ漏洩バグ
- 認証前に発生し、攻撃が極めて容易
- インターネット公開DBは即時対策必須
- パッチ適用またはzlib圧縮無効化が最優先
- EOLバージョン利用者は早急な移行・閉鎖推奨