
Концепт CVE-2025-61301, демонстрирующий отказ в анализе в CAPEv2 через рекурсивное разветвление процессов, вызывающее ограничения BSON MongoDB и ошибки сериализации orjson, что приводит к неполным отчетам о поведении вредоносных программ.
Уязвимость высокой степени серьезности, приводящая к отказу в анализе, затрагивает reporting/mongodb.py и reporting/jsondump.py в CAPEv2 (коммит 52e4b43, 17 мая 2025 г.) и позволяет злоумышленникам, которые могут отправлять образцы, вызывать неполные или отсутствующие отчеты о поведенческом анализе, генерируя глубоко вложенные или чрезмерно большие данные о поведении, которые приводят к срабатыванию ограничений BSON в MongoDB или ошибок рекурсии в orjson при выполнении образца в песочнице.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HОсновная причина этой уязвимости заключается в обработке CAPEv2 больших и глубоко вложенных отчетов о поведении, формируемых в ходе динамического анализа вредоносных программ.
Лимит размера BSON-документа MongoDB:
CAPEv2 использует MongoDB для хранения отчетов об анализе, для которых действует лимит размера BSON-документа 16 МБ [1].
Когда отчеты превышают этот размер, часто из-за обширных деревьев процессов, API-вызовов или рекурсивных данных, база данных отклоняет вставку, что приводит к сбою формирования отчета.
Лимит глубины вложенности MongoDB:
MongoDB также применяет максимальную глубину вложенности 100 уровней на один BSON-документ.
Рекурсивное поведение вредоносных программ может легко превысить этот лимит, что приводит к сбоям вставки даже при размере документа менее 16 МБ.
Лимиты сериализации JSON в Python:
CAPEv2 использует Python-библиотеку orjson для сериализации результатов в JSON.
Глубоко вложенные или рекурсивные структуры приводят к достижению пределов рекурсии Python в сериализаторе, что вызывает сбои сериализации и прерывание формирования отчета [2].
Обрезка и обработка ошибок:
CAPEv2 пытается смягчить эти проблемы, постепенно обрезая большие части отчета (удаляя дочерние узлы или целые поддеревья процессов).
Однако этого недостаточно, когда сложность поведения превышает пороги обрезки, что приводит к повторным сбоям сохранения отчета.
Это уязвимость класса «отказ в анализе» в CAPEv2, которая может привести к тому, что механизм динамического анализа не сможет перехватывать или сообщать о поведенческой активности. Эксплуатация позволяет злоумышленникам обходить поведенческое обнаружение и создавать неполные или отсутствующие отчеты об анализе.
В конвейерах, которые полагаются на CAPEv2 для триажа или обогащения данными об угрозах, этот недостаток может привести к:
CAPEv2 — репозиторий: https://github.com/kevoreilly/CAPEv2
Сведения о соответствующем коммите / сборке
52e4b43a2cb508d3483819042cf8e4d8348f3a05[email protected])masterenzok/updates-01В следующей таблице представлены доказательства по нескольким заданиям анализа, показывающие, как рост сложности и длительности приводит к сбоям MongoDB и сериализации, что в результате дает неполные или отсутствующие отчеты о поведении.
| 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 | – | Поведение в норме |
| 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 Code 15 | Нет поведения |
| 180 | – | 323 | 88 | 89 / 475 KB | 2228 | – | Поведение в норме |
| 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 |
Таблица 1: Результаты анализа CAPEv2, показывающие корреляцию между сложностью задачи, размером отчета и условиями сбоя.
Порождает 5 000 процессов и выполняет многораундовое XOR-дешифрование во время выполнения, чтобы имитировать реалистичный обход. Для нестандартных сборок (другое количество раундов рекурсии, длины ключей или объемы процессов) свяжитесь с авторами для получения индивидуальной версии.
Запустите демо:
poc\vathos_demo.exe <IP> <PORT>
Убедитесь, что на указанном IP/порту запущен слушатель (например, nc, ncat, Metasploit или любой C2-слушатель), чтобы наблюдать попытки подключения. В правильно работающей песочнице попытка подключения была бы видна; при описанных условиях отказа в анализе подключение может не появиться в отчетах CAPEv2.
180+ секундВарианты для изменения:
full-proc-memory-dumps / без негоimport-reconstruction-proc-dumps / без негоstore_compressed = yes и store_compressed = noУбедитесь, что MongoDB и orjson используют стандартные ограничения для этих тестов.
По мере увеличения глубины и сложности дерева процессов могут возникать следующие сбои формирования отчетов:
orjsonCAPEv2 может:
Рисунок 1 — В журналах бэкенда видны предупреждения JSON dump, ошибки orjson/сериализации и записи MongoDB OperationFailure

Рисунок 2 — Панель управления: failed_analysis

Рисунок 3 — Вкладка «Поведение»: «Sorry! No behavior.»

| – |
| – |
| 167 / 892 KB |
| – |
| Recursion limit reached, MongoDB Code 15 |
| Сбой формирования отчета |