
Vulnerabilità Alta (7.5) - CAPEv2 reporting/mongodb.py e reporting/jsondump.py consentono denial-of-analysis quando documenti di comportamento profondamente annidati o sovradimensionati innescano errori di serializzazione orjson o i limiti di dimensione/annidamento BSON di MongoDB, causando report di analisi troncati o mancanti.
Una vulnerabilità di gravità alta di negazione dell'analisi interessa reporting/mongodb.py e reporting/jsondump.py in CAPEv2 (commit 52e4b43, del 2025-05-17) e consente agli attaccanti che possono inviare campioni di causare report di analisi comportamentale incompleti o mancanti, generando dati comportamentali eccessivamente annidati o sovradimensionati che attivano i limiti BSON di MongoDB o errori di ricorsione di orjson quando il campione viene eseguito nella sandbox.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HLa causa principale di questa vulnerabilità risiede nella gestione da parte di CAPEv2 di report comportamentali grandi e profondamente annidati generati durante l'analisi dinamica dei malware.
Limite di dimensione dei documenti BSON di MongoDB:
CAPEv2 utilizza MongoDB per memorizzare i report di analisi, che hanno un limite di dimensione dei documenti BSON di 16 MB [1].
Quando i report superano questa dimensione, spesso a causa di alberi di processi estesi, chiamate API o dati ricorsivi, il database rifiuta l'inserimento, causando il fallimento della generazione del report.
Limite di profondità di annidamento di MongoDB:
MongoDB impone anche una profondità massima di annidamento di 100 livelli per documento BSON.
I comportamenti malware ricorsivi possono superare facilmente questo limite, portando a fallimenti di inserimento anche quando la dimensione del documento è inferiore a 16 MB.
Limiti di serializzazione JSON in Python:
CAPEv2 si affida alla libreria orjson di Python per serializzare i risultati in JSON.
Le strutture profondamente annidate o ricorsive fanno sì che il serializzatore raggiunga i limiti di ricorsione di Python, causando errori di serializzazione e l'interruzione della generazione del report [2].
Potatura e gestione degli errori:
CAPEv2 tenta di mitigare questi problemi potando progressivamente grandi porzioni del report (rimuovendo nodi figli o interi sottoalberi di processi).
Tuttavia, ciò non è sufficiente quando la complessità del comportamento supera le soglie di potatura, provocando ripetuti fallimenti nel salvataggio del report.
Questa è una vulnerabilità di negazione dell'analisi in CAPEv2 che può causare il mancato rilevamento o la mancata registrazione dell'attività comportamentale da parte del motore di analisi dinamica. Lo sfruttamento consente agli avversari di bypassare il rilevamento comportamentale e produrre report di analisi incompleti o mancanti.
Nelle pipeline che dipendono da CAPEv2 per il triage o l'arricchimento dell'intelligence sulle minacce, questa falla può portare a:
CAPEv2 — repository: https://github.com/kevoreilly/CAPEv2
Informazioni su commit / build rilevanti
52e4b43a2cb508d3483819042cf8e4d8348f3a05[email protected])masterenzok/updates-01La seguente tabella presenta le evidenze di più task di analisi, mostrando come l'aumento della complessità e della durata porti a fallimenti di MongoDB e della serializzazione, con conseguenti report comportamentali incompleti o mancanti.
Tabella 1: Risultati delle analisi CAPEv2 che mostrano la correlazione tra complessità del task, dimensione del report e condizioni di errore.
Genera 5.000 processi ed esegue una decrittazione XOR multi-round a runtime per emulare un'evasione realistica. Per build personalizzate (diversi round di ricorsione, lunghezze delle chiavi o volumi di processi), contattare gli autori per una versione personalizzata.
Esegui la demo:
poc\vathos_demo.exe <IP> <PORT>
Assicurati che un listener sia in esecuzione sull'IP/PORT specificato (ad es. nc, ncat, Metasploit o qualsiasi listener C2) per osservare i tentativi di connessione. In una sandbox funzionante, il tentativo di connessione sarebbe visibile; nelle condizioni di negazione dell'analisi descritte, la connessione potrebbe non apparire nei report di CAPEv2.
180+ secondiOpzioni da variare:
full-proc-memory-dumpsimport-reconstruction-proc-dumpsstore_compressed = yes e store_compressed = noAssicurarsi che MongoDB e orjson utilizzino i loro limiti predefiniti per questi test.
Con l'aumentare della profondità e della complessità dell'albero dei processi, possono verificarsi errori di generazione dei report come:
orjson raggiuntoCAPEv2 potrebbe:
Figura 1 - I log di backend mostrano avvisi di dump JSON, errori orjson/serializzazione e voci MongoDB OperationFailure

Figura 2 - Dashboard: failed_analysis

Figura 3 - Scheda Comportamento: "Sorry! No behavior."

| Timeout (sec) | Impostazioni personalizzate | Durata (sec) | Processi registrati | Log BSON (File / Dimensioni) | Dimensioni Report.json (KB) | Errori / Avvisi | Stato del comportamento |
|---|
| 60 | enforce-timeout | 413 | 24 | 25 / 126 KB | 613 | – | Comportamento OK |
| 60 | – | 252 | 38 | 39 / 200 KB | 923 | – | Comportamento OK |
| 60 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 230 | 42 | 43 / 230 KB | 1054 | – | Comportamento OK |
| 100 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 330 | 61 | 62 / 318 KB | 1482 | – | Comportamento OK |
| 100 | – | 277 | 81 | 82 / 493 KB | 2032 | – | Comportamento OK |
| 120 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 340 | 72 | 73 / 383 KB | 1793 | – | Comportamento OK |
| 120 | – | – | 88 | 89 / 475 KB | 2228 | – | Comportamento OK |
| 180 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 414 | 90 | 91 / 492 KB | 2356 | MongoDB Code 15 | Nessun comportamento |
| 180 | – | 323 | 88 | 89 / 475 KB | 2228 | – | Comportamento OK |
| 200 | – | 413 | 119 | 120 / 645 KB | 3174 | MongoDB Code 15 | Nessun comportamento |
| 200 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout | – | – | 144 / 726 KB | – | Recursion limit reached, MongoDB Code 15 | Generazione report fallita |
| 300 | – | 513 | 146 | 147 / 779 KB | 3676 | MongoDB Code 15 | Nessun comportamento |
| 300 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | – | – | 167 / 892 KB | – | Recursion limit reached, MongoDB Code 15 | Generazione report fallita |