MongoBleedを簡単に解説
概要
- **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バージョン利用者は早急な移行・閉鎖推奨