一个高严重性的分析拒绝漏洞影响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存储分析报告,其BSON文档大小限制为16 MB [1]。
当报告超过此大小时(通常由于广泛的进程树、API调用或递归数据),数据库拒绝插入,导致报告生成失败。
MongoDB嵌套深度限制:
MongoDB还强制执行每个BSON文档最大100级嵌套深度。
递归恶意软件行为很容易超过此限制,导致插入失败,即使文档大小未超过16 MB。
Python JSON序列化限制:
CAPEv2依赖Python的orjson库将结果序列化为JSON。
深度嵌套或递归结构会导致序列化器达到Python的递归限制,从而导致序列化失败和报告生成中止 [2]。
修剪与错误处理:
CAPEv2尝试通过逐步修剪报告的大块内容(删除子节点或整个进程子树)来缓解这些问题。
然而,当行为复杂性超过修剪阈值时,这种做法是不足的,导致反复无法保存报告。
这是CAPEv2中的一个分析拒绝漏洞,可导致动态分析引擎无法捕获或报告行为活动。利用该漏洞可使攻击者绕过行为检测,并生成不完整或缺失的分析报告。
在依赖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-dumpsimport-reconstruction-proc-dumpsstore_compressed = yes 和 store_compressed = no确保MongoDB和orjson在这些测试中使用其默认限制。
随着进程树深度和复杂性的增加,可能会出现报告失败,例如:
orjson递归限制 达到CAPEv2可能:
图1 - 后端日志显示JSON转储警告、orjson/序列化错误和MongoDB OperationFailure条目

图2 - 仪表板:failed_analysis

图3 - 行为标签页:"抱歉!无行为。"

| 超时 (sec) | 自定义设置 | 时长 (sec) | 已记录进程 | BSON日志 (文件数/大小) | 报告.json大小 (KB) | 错误/警告 | 行为状态 |
|---|
| 60 | enforce-timeout | 413 | 24 | 25 / 126 KB | 613 | – | 行为正常 |
| 60 | – | 252 | 38 | 39 / 200 KB | 923 | – | 行为正常 |
| 60 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 230 | 42 | 43 / 230 KB | 1054 | – | 行为正常 |
| 100 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 330 | 61 | 62 / 318 KB | 1482 | – | 行为正常 |
| 100 | – | 277 | 81 | 82 / 493 KB | 2032 | – | 行为正常 |
| 120 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 340 | 72 | 73 / 383 KB | 1793 | – | 行为正常 |
| 120 | – | – | 88 | 89 / 475 KB | 2228 | – | 行为正常 |
| 180 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 414 | 90 | 91 / 492 KB | 2356 | MongoDB 代码15 | 无行为 |
| 180 | – | 323 | 88 | 89 / 475 KB | 2228 | – | 行为正常 |
| 200 | – | 413 | 119 | 120 / 645 KB | 3174 | MongoDB 代码15 | 无行为 |
| 200 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout | – | – | 144 / 726 KB | – | 递归限制已到达,MongoDB 代码15 | 报告失败 |
| 300 | – | 513 | 146 | 147 / 779 KB | 3676 | MongoDB 代码15 | 无行为 |
| 300 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | – | – | 167 / 892 KB | – | 递归限制已到达,MongoDB 代码15 | 报告失败 |