Aller au contenu

CVE-2025-25249 : débordement de tampon de tas et RCE dans Fortinet FortiOS cw_acd

HTS

HERMES THREAT SCORE ET RISQUE PÉRIMÉTRIQUE

Cible : Fortinet FortiOS cw_acd démon CAPWAP (UDP 5246 / Fabric)
Confiance : 99%
98 / 100
CRITIQUE

Mesure la pertinence opérationnelle réelle, la militarisation de l'exploit et la posture de menace active.

Décomposition des dimensions
Exploitabilité 20 / 20
Activité de menace 20 / 20
Militarisation 20 / 20
Exposition 19 / 20
Prévalence 20 / 20
Impact 20 / 20
Maturité de l'exploit 20 / 20
Potentiel d'attaque en chaîne 20 / 20
⚖️ Divergence & Justification opérationnelle

Hermes rehausse la CVE-2025-25249 à 98 (CRITIQUE). Contrairement aux vulnérabilités d'interface web administratives cantonnées derrière des listes de contrôle d'accès, le démon cw_acd écoute sur le port UDP 5246 exposé sur le périmètre. Des groupes étatiques exploitent activement cette faille en conditions réelles pour déposer le backdoor PivotC2 et établir des canaux de rebond persistants vers les intranets d'entreprise.

🕸️ Graphe de connaissances connecté & Provenance

CVE-2025-25249: Fortinet FortiOS cw_acd CAPWAP Heap Buffer Overflow RCEVULNÉRABILITÉ

Nœuds connectés : 1
Relations sortantes actives
→ affectsCOMPOSANTFortinet FortiOS Gateway
98% VERY_HIGH

Software platform affected by security vulnerabilities and agentic attack patterns.

🔍 Pourquoi cette relation ? (Preuves & Provenance)

“Confirmed security vulnerability in Fortinet FortiOS Gateway documented in Hermes dossier.”

Preuves vérifiées associées :

ParamètreSpécification techniqueImpact opérationnel
Identifiant CVECVE-2025-25249Identifiant mondial de la faille
Avis éditeurFG-IR-25-084Bulletin officiel Fortinet PSIRT
Score CVSS v3.19.8 (Critique)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Score FIRST EPSS0,76 % (53,11ᵉ percentile)Accélération marquée post-inscription KEV
Statut CISA KEVAjoutée le 9 septembre 2026Directive fédérale contraignante BOD 26-04
Démon vulnérableProcessus cw_acd (contrôleur sans fil CAPWAP)Port UDP 5246 / interfaces Fabric
AuthentificationAucune (exploitation à distance pré-authentifiée)Attaque directe par voie réseau
Implant observéPivotC2 (cheval de Troie Node.js)Shell interactif, tunnels proxy, vol de secrets

La faille affecte l’ensemble des branches majeures de FortiOS et des produits d’infrastructure associés :

  • FortiOS 7.6 : versions 7.6.0 à 7.6.3 (corrigé en 7.6.4 et ultérieure) ;
  • FortiOS 7.4 : versions 7.4.0 à 7.4.8 (corrigé en 7.4.9 et ultérieure) ;
  • FortiOS 7.2 : versions 7.2.0 à 7.2.11 (corrigé en 7.2.12 et ultérieure) ;
  • FortiOS 7.0 : versions 7.0.0 à 7.0.17 (corrigé en 7.0.18 et ultérieure) ;
  • FortiOS 6.4 : versions 6.4.0 à 6.4.16 (corrigé en 6.4.17 et ultérieure) ;
  • FortiSwitchManager 7.2 : versions 7.2.0 à 7.2.6 (corrigé en 7.2.7 et ultérieure) ;
  • FortiSwitchManager 7.0 : versions 7.0.0 à 7.0.5 (corrigé en 7.0.6 et ultérieure) ;
  • FortiSASE : versions 23.4, 24.1, 24.2 (corrigé en 24.3 et ultérieure).

La vulnérabilité découle d’une violation de limite lors d’une copie mémoire (CWE-122) au sein du parseur du protocole CAPWAP dans le démon cw_acd.

Chaîne d'exploitation du débordement de tas CVE-2025-25249 sur cw_acd :
┌─────────────────────────────────────────────────────────────┐
│ 1. Attaquant distant non authentifié │
└──────────────────────────────┬──────────────────────────────┘
│ Paquet UDP CAPWAP malveillant (Port 5246)
▼
┌─────────────────────────────────────────────────────────────┐
│ 2. Écouteur réseau du démon cw_acd │
│ • Réception du message de contrôle CAPWAP │
│ • Extraction du champ de longueur TLV non validé │
└──────────────────────────────┬──────────────────────────────┘
│ Copie mémoire non bornée (malloc(0x200))
▼
┌─────────────────────────────────────────────────────────────┐
│ 3. Écrasement du tas mémoire (CWE-122 / CWE-787) │
│ • memcpy() copie une charge excédentaire (> 512 octets) │
│ • Écrasement des métadonnées du tas et pointeurs │
└──────────────────────────────┬──────────────────────────────┘
│ Détournement de flot d'instructions
▼
┌─────────────────────────────────────────────────────────────┐
│ 4. Exécution de code avec privilèges root sur FortiOS │
│ • Déploiement de l'implant PivotC2 │
│ • Établissement d'un tunnel chiffré vers l'infrastructure C2│
└─────────────────────────────────────────────────────────────┘

Le binaire cw_acd prend en charge l’encapsulation CAPWAP (Control and Provisioning of Wireless Access Points). Lors de l’analyse des paquets reçus :

  1. Le démon alloue une mémoire tampon de taille fixe sur le tas (512 octets, 0x200) pour stocker les fragments de message reconstitués ;
  2. Lors du décodage des éléments de type TLV (Type-Length-Value), la routine extrait un entier non signé de 16 bits indiquant la longueur du champ ;
  3. Le parseur omet de vérifier que cette longueur reste strictement inférieure à l’espace résiduel dans le tampon alloué ;
  4. Une fonction memcpy() copie jusqu’à 65 535 octets depuis le socket UDP vers l’allocation de 512 octets, écrasant les blocs adjacents du gestionnaire de tas glibc (arena) ainsi que les pointeurs de fonction.

Grâce à une préparation méthodique du tas (heap grooming) via une séquence de paquets UDP préliminaires, les attaquants positionnent des adresses contrôlées sur les tables de pointeurs. Lors de la restitution de la fonction de rappel, l’exécution bascule vers la charge utile malveillante (shellcode), conférant un accès root interactif immédiat sur le pare-feu.


3. Cyber renseignement et militarisation en conditions réelles (PivotC2)

Section intitulée « 3. Cyber renseignement et militarisation en conditions réelles (PivotC2) »

Les équipes de veille sur les menaces confirment que la CVE-2025-25249 fait l’objet d’exploitations ciblées pour implanter le malware PivotC2 :

  1. Dépôt de PivotC2 : un cheval de Troie d’accès distant modulaire basé sur Node.js déposé dans les systèmes de fichiers temporaires en mémoire vive (/data/ ou /tmp/).
  2. Tunneling inverse et proxy : pivotC2 ouvre une liaison chiffrée sortante (WebSocket/TLS) vers les serveurs de commandement des attaquants, court-circuitant le filtrage périmétrique entrant.
  3. Exfiltration des secrets de configuration : le malware extrait les sauvegardes de configuration du FortiGate, incluant les clés pré-partagées IPsec, les condensats de mots de passe d’administration et les règles de routage.
  4. Rebond vers les contrôleurs de domaine : les attaquants profitent de la position stratégique du pare-feu pour mener des attaques de mouvement latéral sur les segments internes sensibles.

Cette méthodologie d’intrusion s’inscrit dans la lignée des compromissions périmétriques documentées sur Cisco Secure FMC CVE-2026-20079 et Ivanti EPMM CVE-2026-1281.


4. Triage forensique et indicateurs de compromission (IoC)

Section intitulée « 4. Triage forensique et indicateurs de compromission (IoC) »

Les analystes de réponse à incident doivent scruter les journaux d’erreurs et les tables de processus pour déceler les traces de compromission.

Fenêtre de terminal
# 1. Vérifier les plantages de cw_acd consécutifs au débordement de tas
diagnose debug crashlog read | grep -A 5 -B 2 "cw_acd"
# 2. Identifier les processus anormaux ou instances Node.js suspectes
diagnose sys process pidof cw_acd
fnsysctl ps -ef | grep -iE "(node|pivot|sh|bash|python)"
# 3. Vérifier les sockets réseau ouverts sur le port UDP 5246
diagnose netlink socket-list | grep 5246
# 4. Filtrer les événements système récents
execute log filter category 1
execute log display

Artefacts de plantage et mémoire

  • Mentions répétées de Signal 11 (Segmentation fault) dans le binaire cw_acd dans le journal crashlog.
  • Présence de fichiers de vidage mémoire inattendus sur la mémoire flash ou le disque RAM.

Traces de persistance et malwares

  • Fichiers exécutables non identifiés dans /tmp/, /data/ ou /var/.
  • Scripts automatiques configurés sous config system auto-script sans validation administrative préalable.
  • Flux sortants persistants initiés depuis l’IP du pare-feu vers des adresses distantes inconnues sur les ports TCP 443/8443.

suricata_cve_2025_25249.rules
alert udp $EXTERNAL_NET any -> $HOME_NET 5246 ( \
msg:"HERMES CODEX - Débordement de tampon de tas cw_acd Fortinet FortiOS (CVE-2025-25249)"; \
flow:to_server; \
byte_test:1,>,0x00,0; \
content:"|00 00|"; offset:2; depth:2; \
byte_test:2,>,1024,4; \
classtype:attempted-admin; \
sid:202525249; rev:1; \
)

  1. Mettre à niveau le firmware FortiOS : Téléchargez et installez les versions officielles corrigées :

    • FortiOS 7.6 : passer à la version 7.6.4 ou ultérieure ;
    • FortiOS 7.4 : passer à la version 7.4.9 ou ultérieure ;
    • FortiOS 7.2 : passer à la version 7.2.12 ou ultérieure ;
    • FortiOS 7.0 : passer à la version 7.0.18 ou ultérieure ;
    • FortiOS 6.4 : passer à la version 6.4.17 ou ultérieure ;
    • FortiSwitchManager : passer aux versions 7.2.7 ou 7.0.6.
  2. Mesure d’atténuation temporaire (désactivation de la fabric sur le WAN) : Si l’application immédiate du firmware s’avère impossible, supprimez l’accès fabric et capwap sur toutes les interfaces exposées sur Internet :

    Fenêtre de terminal
    config system interface
    edit "wan1"
    unset allowaccess fabric
    unset allowaccess capwap
    next
    end
  3. Auditer les journaux pour détecter PivotC2 : Exécutez diagnose debug crashlog read pour vérifier si le processus cw_acd a planté avant la mise à jour. Inspectez les dossiers /data/ et /tmp/.

  4. Renouvellement des clés et secrets : Réinitialisez les mots de passe d’administration locale, les jetons API FortiManager et les clés pré-partagées des tunnels IPsec si une intrusion préalable est suspectée.