
CVE-2025-61301の概念実証。CAPEv2の再帰的プロセスフォークによる分析拒否を実証し、MongoDB BSON制限とorjsonシリアライゼーションエラーをトリガーして、不完全なマルウェア動作レポートを引き起こす。
**高深刻度(High-Severity)**の解析妨害(Denial-of-analysis)脆弱性が、CAPEv2(コミット 52e4b43、2025-05-17)の reporting/mongodb.py および reporting/jsondump.py に影響します。この脆弱性により、サンプルを提出できる攻撃者は、深くネストされた、または過大なサイズの挙動データを生成して、サンドボックス内でサンプルが実行された際に MongoDB の BSON 制限や orjson の再帰エラーを誘発させ、不完全または欠落した挙動解析レポートを引き起こすことができます。
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:Hこの脆弱性の根本原因は、動的マルウェア解析中に生成される大規模かつ深くネストされた挙動レポートに対する CAPEv2 の処理にあります。
MongoDB BSON ドキュメントサイズ制限:
CAPEv2 は解析レポートの保存に MongoDB を使用しており、16 MB の BSON ドキュメントサイズ制限 [1] があります。
レポートがこのサイズを超えると(多くの場合、広範なプロセスツリー、API コール、または再帰的データが原因)、データベースは挿入を拒否し、レポート生成が失敗します。
MongoDB ネスト深度制限:
MongoDB はまた、BSON ドキュメントあたり最大 100 レベルのネスト深度制限を強制します。
再帰的なマルウェアの挙動はこれを容易に超える可能性があり、ドキュメントサイズが 16 MB 未満であっても挿入失敗を引き起こします。
Python JSON シリアライゼーション制限:
CAPEv2 は結果を JSON にシリアライズするために Python の orjson ライブラリに依存しています。
深くネストされた、または再帰的な構造は、シリアライザが Python の再帰制限に達する原因となり、シリアライゼーション失敗とレポート生成の中止を引き起こします [2]。
プルーニングとエラー処理:
CAPEv2 は、レポートの大部分を段階的にプルーニング(子ノードまたはプロセスサブツリー全体の削除)することで、これらの問題を軽減しようと試みます。
しかし、挙動の複雑さがプルーニングのしきい値を超えた場合には不十分であり、レポート保存の失敗が繰り返し発生します。
これは CAPEv2 における解析妨害(denial-of-analysis)脆弱性であり、動的解析エンジンが挙動アクティビティを捕捉またはレポートできなくなる可能性があります。悪用により、攻撃者は挙動検知をバイパスし、不完全または欠落した解析レポートを生成できます。
トリアージや脅威インテリジェンスの強化を CAPEv2 に依存するパイプラインでは、この欠陥により以下が発生する可能性があります:
CAPEv2 — リポジトリ: https://github.com/kevoreilly/CAPEv2
関連コミット / ビルド情報
52e4b43a2cb508d3483819042cf8e4d8348f3a05[email protected])masterenzok/updates-01以下のテーブルは、複数の解析タスクからの証拠を示しており、複雑さと実行時間の増加が MongoDB およびシリアライゼーションの失敗を引き起こし、不完全または欠落した挙動レポートをもたらすことを示しています。
表 1: タスクの複雑さ、レポートサイズ、失敗条件の相関を示す CAPEv2 解析結果。
5,000 個のプロセスを生成し、実行時に複数ラウンドの XOR 復号を実行して、現実的な回避動作をエミュレートします。カスタムビルド(再帰ラウンド数、鍵長、プロセス数の異なるバージョン)については、カスタム版の提供について作者にお問い合わせください。
デモの実行:
poc\vathos_demo.exe <IP> <PORT>
接続試行を観測するために、指定された IP/PORT でリスナー(例:nc、ncat、Metasploit、または任意の C2 リスナー)が実行されていることを確認してください。正常に機能するサンドボックスでは接続試行が確認できますが、前述の解析妨害条件下では、その接続は CAPEv2 レポートに表示されない可能性があります。
180+ 秒変更可能なオプション:
full-proc-memory-dumps あり / なしimport-reconstruction-proc-dumps あり / なしstore_compressed = yes および store_compressed = noこれらのテストでは、MongoDB と orjson が デフォルトの制限 を使用していることを確認してください。
プロセスツリーの深さと複雑さが増加すると、以下のようなレポート失敗が発生する可能性があります:
orjson 再帰制限 到達CAPEv2 は以下の状態になる可能性があります:
図 1 - バックエンドログは、JSON ダンプ警告、orjson/シリアライゼーションエラー、MongoDB OperationFailure エントリを示しています

図 2 - ダッシュボード: failed_analysis

図 3 - ビヘイビアタブ: 「Sorry! No behavior.」

| Timeout (sec) | Custom Settings | Duration (sec) | Logged Processes | BSON Logs (Files / Size) | Report.json Size (KB) | Errors / Warnings | Behavior Status |
|---|
| 60 | enforce-timeout | 413 | 24 | 25 / 126 KB | 613 | – | 挙動 OK |
| 60 | – | 252 | 38 | 39 / 200 KB | 923 | – | 挙動 OK |
| 60 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 230 | 42 | 43 / 230 KB | 1054 | – | 挙動 OK |
| 100 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 330 | 61 | 62 / 318 KB | 1482 | – | 挙動 OK |
| 100 | – | 277 | 81 | 82 / 493 KB | 2032 | – | 挙動 OK |
| 120 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 340 | 72 | 73 / 383 KB | 1793 | – | 挙動 OK |
| 120 | – | – | 88 | 89 / 475 KB | 2228 | – | 挙動 OK |
| 180 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 414 | 90 | 91 / 492 KB | 2356 | MongoDB Code 15 | 挙動なし |
| 180 | – | 323 | 88 | 89 / 475 KB | 2228 | – | 挙動 OK |
| 200 | – | 413 | 119 | 120 / 645 KB | 3174 | MongoDB Code 15 | 挙動なし |
| 200 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout | – | – | 144 / 726 KB | – | Recursion limit reached, MongoDB Code 15 | レポート失敗 |
| 300 | – | 513 | 146 | 147 / 779 KB | 3676 | MongoDB Code 15 | 挙動なし |
| 300 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | – | – | 167 / 892 KB | – | Recursion limit reached, MongoDB Code 15 | レポート失敗 |