
Preuve de concept CVE-2025-61301 démontrant le déni d'analyse dans CAPEv2 via un fork de processus récursif qui déclenche les limites BSON MongoDB et les erreurs de sérialisation orjson, provoquant des rapports de comportement de malware incomplets.
Une vulnérabilité de haute sévérité de type déni d'analyse affecte reporting/mongodb.py et reporting/jsondump.py dans CAPEv2 (commit 52e4b43, le 17 mai 2025) permet à des attaquants pouvant soumettre des échantillons de provoquer des rapports d'analyse comportementale incomplets ou manquants en générant des données comportementales profondément imbriquées ou de taille excessive qui déclenchent les limites BSON de MongoDB ou des erreurs de récursion d'orjson lorsque l'échantillon s'exécute dans le sandbox.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HLa cause racine de cette vulnérabilité réside dans la gestion par CAPEv2 des rapports de comportement volumineux et profondément imbriqués générés lors de l'analyse dynamique de malwares.
Limite de taille des documents BSON MongoDB :
CAPEv2 utilise MongoDB pour stocker les rapports d'analyse, qui ont une limite de taille de document BSON de 16 Mo [1].
Lorsque les rapports dépassent cette taille, souvent en raison d'arbres de processus étendus, d'appels API ou de données récursives, la base de données rejette l'insertion, ce qui provoque l'échec de la génération du rapport.
Limite de profondeur d'imbrication MongoDB :
MongoDB impose également une profondeur d'imbrication maximale de 100 niveaux par document BSON.
Les comportements récursifs de malwares peuvent facilement dépasser cette limite, entraînant des échecs d'insertion même lorsque la taille du document est inférieure à 16 Mo.
Limites de sérialisation JSON Python :
CAPEv2 utilise la bibliothèque orjson de Python pour sérialiser les résultats en JSON.
Les structures profondément imbriquées ou récursives font atteindre les limites de récursion de Python au sérialiseur, entraînant des échecs de sérialisation et l'abandon de la génération du rapport [2].
Élagage et gestion des erreurs :
CAPEv2 tente d'atténuer ces problèmes en élaguant progressivement de grandes parties du rapport (suppression de nœuds enfants ou de sous-arbres entiers de processus).
Cependant, cela est insuffisant lorsque la complexité du comportement dépasse les seuils d'élagage, entraînant des échecs répétés de sauvegarde du rapport.
Il s'agit d'une vulnérabilité de déni d'analyse dans CAPEv2 qui peut empêcher le moteur d'analyse dynamique de capturer ou de rapporter l'activité comportementale. L'exploitation permet aux adversaires de contourner la détection comportementale et de produire des rapports d'analyse incomplets ou manquants.
Dans les pipelines qui dépendent de CAPEv2 pour le triage ou l'enrichissement du renseignement sur les menaces, cette faille peut entraîner :
CAPEv2 — dépôt : https://github.com/kevoreilly/CAPEv2
Informations sur le commit / build concerné
52e4b43a2cb508d3483819042cf8e4d8348f3a05[email protected])masterenzok/updates-01Le tableau suivant présente des preuves provenant de multiples tâches d'analyse, montrant comment l'augmentation de la complexité et de la durée entraîne des échecs MongoDB et de sérialisation, résultant en des rapports de comportement incomplets ou manquants.
| Délai d'attente (s) | Paramètres personnalisés | Durée (s) | Processus enregistrés | Logs BSON (Fichiers / Taille) | Taille de Report.json (Ko) | Erreurs / Avertissements | Statut du comportement |
|---|---|---|---|---|---|---|---|
| 60 | enforce-timeout | 413 | 24 | 25 / 126 Ko | 613 | – | Comportement OK |
| 60 | – | 252 | 38 | 39 / 200 Ko | 923 | – | Comportement OK |
| 60 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 230 | 42 | 43 / 230 Ko | 1054 | – | Comportement OK |
| 100 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 330 | 61 | 62 / 318 Ko | 1482 | – | Comportement OK |
| 100 | – | 277 | 81 | 82 / 493 Ko | 2032 | – | Comportement OK |
| 120 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 340 | 72 | 73 / 383 Ko | 1793 | – | Comportement OK |
| 120 | – | – | 88 | 89 / 475 Ko | 2228 | – | Comportement OK |
| 180 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | 414 | 90 | 91 / 492 Ko | 2356 | MongoDB Code 15 | Aucun comportement |
| 180 | – | 323 | 88 | 89 / 475 Ko | 2228 | – | Comportement OK |
| 200 | – | 413 | 119 | 120 / 645 Ko | 3174 | MongoDB Code 15 | Aucun comportement |
| 200 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout | – | – | 144 / 726 Ko | – | Limite de récursion atteinte, MongoDB Code 15 | Échec du rapport |
| 300 | – | 513 | 146 | 147 / 779 Ko | 3676 | MongoDB Code 15 | Aucun comportement |
| 300 | full-proc-memory-dumps, import-reconstruction-proc-dumps, enforce-timeout, syscall | – | – | 167 / 892 Ko | – | Limite de récursion atteinte, MongoDB Code 15 | Échec du rapport |
Tableau 1 : Résultats d'analyse CAPEv2 montrant la corrélation entre complexité des tâches, taille des rapports et conditions d'échec.
Génère 5 000 processus et effectue un déchiffrement XOR multi‑tour à l'exécution pour simuler un contournement réaliste. Pour des builds personnalisés (différents tours de récursion, longueurs de clé ou volumes de processus), contactez les auteurs pour une version personnalisée.
Exécutez la démo :
poc\vathos_demo.exe <IP> <PORT>