エグゼクティブサマリー
2025年12月19日、MongoDB は MongoBleed を公開しました。これは、MongoDB サーバーが zlib 圧縮されたネットワークメッセージを処理する方法における信頼性の問題を悪用し、認証されていない攻撃者が機密性の高いヒープメモリを漏えいさせることを可能にするセキュリティ脆弱性 (CVE-2025-14847) です。この欠陥は認証前に発生するため、攻撃者はデータベースのデフォルトポートへのネットワークアクセス権さえあれば、この脆弱性をトリガーできます。
脅威の主要な詳細は以下の通りです。
- 脆弱性: CVE-2025-14847 は、MongoDB サーバーの zlib 圧縮メッセージ処理における、認証不要の重大なメモリ開示の脆弱性です (CVSS 8.7)。
- 影響: このメモリには、平文の認証情報、API キー、セッショントークン、個人識別情報 (PII) などの機密データが含まれている可能性があります。
- ステータス: 野生 (in the wild) での活発な悪用が確認されています。概念実証 (PoC) エクスプロイトが公開されています。米国サイバーセキュリティ・インフラストラクチャセキュリティ庁 (CISA) は、活発な悪用の証拠に基づき、2025年12月29日 にこの脆弱性を「悪用が確認された脆弱性 (KEV) カタログ」に追加しました。
Cortex Xpanse は、インターネットに公開されている約146,000の脆弱な MongoDB インスタンスを特定しました。
パロアルトネットワークスのお客様は、以下の製品およびサービスを通じて、CVE-2025-14847 に関連するアクティビティからより強力に保護されています。
- Cortex XDR および XSIAM は、多層防御アプローチを使用して、悪用後のアクティビティ (ポストエクスプロイト) に対する保護を支援します。
- Cortex Cloud は、CVE-2025-14847 に対して脆弱なクラウドホスト型リソースの検出を支援します。
- Cortex Xpanse は、パブリックインターネット上に公開されている MongoDB デバイスを特定し、それらの検出結果を防衛担当者にエスカレーションするのを支援します。
また、Unit 42 インシデントレスポンスチームにご相談いただければ、侵害への対処や、リスク低減のためのプロアクティブな評価の提供について支援いたします。
| 取り上げる脆弱性 | CVE-2025-14847 |
CVE-2025-14847 の詳細
MongoBleed 脆弱性は、デフォルトで有効になっている機能である zlib 圧縮されたワイヤープロトコルメッセージを MongoDB が処理する方法に起因しています。通信は OP_COMPRESSED ヘッダーを介して処理されます。このヘッダーは元のメッセージペイロードをラップし、解凍後のデータの予想サイズを指定するフィールドを含んでいます。
攻撃メカニズムの実行は以下の手順で行われます。
- 認証されていない攻撃者が、細工された圧縮メッセージを脆弱な MongoDB サーバーに送信します。
- 攻撃者は OP_COMPRESSED ヘッダー内の uncompressedSize フィールドを操作し、実際の圧縮ペイロードよりも大幅に大きい値に設定します。
- サーバーはこの値の検証に失敗し、攻撃者が指定したサイズに基づいて過大なメモリバッファを割り当てます。このバッファには、以前に処理されたデータの残骸である未初期化のヒープメモリが入ります。
- この漏えいは、MongoDB のエラー処理ロジックによってさらに増幅されます。攻撃者の不正な BSON オブジェクトが null 終端子なしで送信されると、サーバーは null 終端子に遭遇するまでメモリを解析しようとします。解析が最終的に失敗すると、サーバーは元の悪意あるメッセージと漏えいしたヒープメモリの内容の両方を含むエラー応答を返します。
MongoDB Atlas のマネージド顧客には自動的にパッチが適用されましたが、セルフホスト型の MongoDB サーバーには手動でのパッチ適用が必要であることに注意が必要です。
このプロセスにより、攻撃者は不正なリクエストを繰り返し送信することで、サーバーのメモリの大部分を段階的に漏えいさせることが可能になります。
攻撃ベクトルと影響
攻撃ベクトルは完全にリモートであり、認証不要で、ユーザーの操作も必要としません。攻撃者は デフォルトの MongoDB ポート (TCP/27017) へのネットワークアクセス権さえあれば、この欠陥を悪用できます。
主な影響は、機密性の高いデータの損失です。MongoBleed は読み取り専用のメモリ開示の脆弱性に限定されており、リモートコード実行 (RCE) は可能にしませんが、漏えいする可能性のある情報の戦略的な重要性は甚大です。攻撃者は漏えいしたシークレット情報を利用して、さらなるシステム侵害、データ持ち出し、ラテラルムーブメント (横展開) を行う可能性があります。
この脆弱性は以下の MongoDB バージョンに影響します。
- バージョン 8.2: 8.2.0 – 8.2.2
- バージョン 8.0: 8.0.0 – 8.0.16
- バージョン 7.0: 7.0.0 – 7.0.27
- バージョン 6.0: 6.0.0 – 6.0.26
- バージョン 5.0: 5.0.0 – 5.0.31
- バージョン 4.4: 4.4.0 – 4.4.29
サポート終了 (修正なし):
- すべての v4.2 バージョン
- すべての v4.0 バージョン
- すべての v3.6 バージョン
CVE-2025-14847 を利用した攻撃の現在の範囲
MongoBleed がもたらす脅威は理論上のものではありません。動作する公開 PoC エクスプロイトが2025年12月26日に GitHub で公開されました。セキュリティ研究者は、脆弱性の公開直後に野生 (in the wild) での活発な悪用を観測しました。
活発な悪用に関する公式な確認は2025年12月29日に行われ、米国 CISA が CVE-2025-14847 を KEV カタログに追加し、連邦機関に対して欠陥の修正を義務付けました。
Cortex Xpanse は、インターネットに公開されている約146,000の脆弱な MongoDB インスタンスを特定しており、世界的な攻撃対象領域 (アタックサーフェス) を示す具体的な指標となっています。
暫定的なガイダンス
即時のパッチ適用が困難な場合は、リスクを軽減するために以下の一時的な対策を検討してください。
1. ネットワークセグメンテーション: TCP/27017 ポート上の MongoDB インスタンスへのすべてのインバウンドインターネットアクセスをブロックすることで、露出を減らします。接続は、明示的に信頼されたソースのみにネットワークレベルで制限する必要があります。
2. zlib 圧縮の無効化: 一時的な回避策として、MongoDB 設定内で zlib 圧縮サポートを無効にします。このアクションにより、脆弱なコードパスがトリガーされるのを防ぎます。安全な代替手段には、snappy、zstd、または圧縮の完全無効化が含まれます。
その他の提案や更新情報については、MongoDB が管理する課題トラッカーを参照してください。
Unit 42 マネージドスレットハンティングクエリ
Unit 42 マネージドスレットハンティングチームは、Cortex XDR 内で利用可能なテレメトリを使用して、マネージドサービスのお客様全体でこの CVE を悪用しようとする試みを追跡し続けています。Unit 42 マネージドサービスを利用していない Cortex XDR のお客様も、以下の XQL クエリを使用して悪用の兆候を検索できます。
以下のクエリは、MongoDB サーバーへの多数のネットワーク接続を特定しようとするものです。このクエリの結果は、明示的に悪用を示すものではない可能性がありますが、詳細な調査が必要なシステムを特定するために使用できます。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// Description: High Velocity network connection to MongoDB server may indicate exploitation of MongoBleed (CVE-2025-14847) // Notes: Review the source IP of the requests and the host IP addresses. Validate they are not the same. If the IPs are on the same subnet it may be due to routing or load-balancing configuration. dataset = xdr_data | filter event_type = ENUM.NETWORK | filter lowercase(actor_process_image_name) in ("mongod", "mongod.exe") | filter action_network_is_server = true // Filter for non-RFC1918 IP addresses. To include all IPs (depending on routing configuration it is possible traffic may have the internal IP of a load balancer, proxy, router, or firewall) comment the following line. | filter action_remote_ip not in (null, "") | filter incidr(action_remote_ip, "10.0.0.0/8") != true and // RFC1918 incidr(action_remote_ip, "192.168.0.0/16") != true and // RFC1918 incidr(action_remote_ip, "172.16.0.0/12") != true and // RFC1918 incidr(action_remote_ip, "127.0.0.0/8") != true and // Loopback incidr(action_remote_ip, "169.254.0.0/16") != true and // Link Local incidr(action_remote_ip, "224.0.0.0/4") != true and // Multicast incidr(action_remote_ip, "255.255.255.255/32") != true and // Broadcast incidr(action_remote_ip, "198.18.0.0/15") != true // Reserved | fields _time, agent_hostname, agent_id, actor_effective_username, agent_ip_addresses, agent_external_ip, actor_process_image_name, actor_process_image_path, action_local_ip, action_local_port, action_remote_ip, action_remote_port, action_remote_ip_enrichment, action_network_app_ids, action_network_connection_id, action_network_dpi_fields, action_network_packet_data, action_network_protocol, action_network_session_duration, action_upload, action_download | filter action_network_session_duration <= 5000 | bin _time span = 1m | comp count(_time) as Counter, values(agent_ip_addresses) as agent_ip_addresses, values(agent_external_ip) as agent_external_ip, values(action_local_port) as Local_ports, count_distinct(action_local_port) as Local_port_Count by agent_hostname, action_remote_ip, _time // Identify source IPs with a high volume of connections per Minute. This number can be increased or decreased as needed. The higher the number the greater the chance of malicious activity, while the lower the number the broader the scope/ ability to identify activity. | filter Counter >= 500 |
結論
MongoBleed は「緊急 (Critical)」の深刻度評価を受けていますが、監視されたエンタープライズ環境に対してこれを成功裏に兵器化することは、運用上困難です。悪用されたサーバーからは非構造化されたランダムなデータの断片が返されるため、価値のあるデータを取得するには、攻撃者はサーバーに何千ものリクエストを浴びせる必要があります。
このため、MongoBleed の価値ある悪用は必然的に「目立つ侵入 (Loud intrusion)」となり、標準的なヒューリスティック検知やレート制限制御が適切に設計されていれば、重大なデータ持ち出しが発生するずっと前に検知しブロックできるはずです。
パロアルトネットワークスのお客様は、以下に挙げる当社製品によって、より強力に保護されています。
CVE-2025-14847 に対するパロアルトネットワークス製品の保護
パロアルトネットワークスのお客様は、さまざまな製品による保護とサービスを活用して、この脅威の特定と防御を支援できます。
侵害が疑われる場合や緊急の事案がある場合は、Unit 42 インシデントレスポンスチームにご連絡いただくか、以下にお電話ください。
- 北米 (フリーダイヤル): +1 (866) 486-4842 (866.4.UNIT42)
- 英国: +44.20.3743.3660
- 欧州および中東: +31.20.299.3130
- アジア: +65.6983.8730
- 日本: +81.50.1790.0200
- オーストラリア: +61.2.4062.7950
- インド: 000 800 050 45107
- 韓国: +82.080.467.8774
Cortex XDR および XSIAM
Cortex XDR および XSIAM は、多層防御アプローチを使用して、悪用後のアクティビティ (ポストエクスプロイト) に対する保護を支援します。
Cortex Xpanse
Cortex Xpanse は、パブリックインターネット上に公開されている MongoDB デバイスを特定し、それらの検出結果を防衛担当者にエスカレーションするように設計されています。お客様は、「MongoDB Server」および「Insecure MongoDB Server」のアタックサーフェスルールが有効になっていることを確認することで、このリスクに関するアラートを有効にできます。
Cortex Attack Surface Testing (AST) もまた、無害な PoC チェックを実行することで、公開されている MongoDB インスタンスが悪用に対して脆弱であるかどうかを検証できます。
特定された検出結果は、Threat Response Center または Expander のインシデントビューで確認できます。これらの検出結果は、アタックサーフェスマネジメント (ASM) モジュールを購入された Cortex XSIAM のお客様も利用可能です。
Cortex Cloud
Cortex Cloud は、クラウド環境内に XDR エンドポイントエージェント および サーバーレスエージェント を適切に配置することで、CVE-2025-14847 に対して脆弱なクラウドホスト型リソースの検出を支援します。
MongoDB のマネージドサービス製品は、MongoDB セキュリティエンジニアリングチームによって自動的にパッチが適用されましたが、セルフホスト型のクラウドインスタンスは依然として脆弱な可能性があります。Cortex Cloud は、Amazon Web Services (AWS)、Azure、Google Cloud (GCP) 全体にわたるセルフホスト型 MongoDB インスタンスの検出を提供するように設計されています。これにより、組織はクラウドホスト型資産の可視性を得ることができ、これは MongoBleed のような脅威を軽減するための重要な第一歩となります。
さらに、Cortex Cloud には、公にアクセス可能なセルフホスト型 MongoDB インスタンスを特定し、アラートを発するための専用の検出ルールがあります。
最後に、侵害された MongoDB インスタンスからクラウド ID が漏えいした場合、Cortex Cloud Identity Security は、クラウドプラットフォームのさらなる悪用につながる永続性の獲得や維持に使用される、一般的なアイデンティティベースのポストエクスプロイト手法の検出を支援します。