À retenir
- Le XXE permet de lire des fichiers locaux sur le serveur ciblé.
- C'est une faille qui a longtemps figuré dans le Top 10 de l'OWASP (référence mondiale en cybersécurité).
- Elle provient d'une mauvaise configuration des outils qui lisent le XML.
Le XXE est une vulnérabilité informatique qui permet à un pirate de manipuler la manière dont un serveur traite les fichiers XML. En insérant des références vers des sources externes (comme des fichiers sur le serveur ou des adresses web) dans le code XML, l'attaquant force l'application à divulguer des données confidentielles ou à accéder à des réseaux privés normalement inaccessibles.
Étymologie
Acronyme de XML External Entity (Entité externe XML). Le terme provient du langage XML, où une "entité" est une sorte de raccourci ou de variable, et "externe" signifie que la valeur de cette variable est récupérée en dehors du document lui-même.
Exemples d'usage
- L'inclusion d'une ligne de code dans un fichier XML pour forcer le serveur à afficher le contenu du fichier confidentiel
/etc/passwd(contenant la liste des utilisateurs sous Linux). - L'envoi d'un fichier SVG malveillant (qui est en réalité du XML) sur un site pour scanner les ports du réseau interne de l'entreprise.
Cas d'usage
Cette faille se rencontre principalement dans le développement web, lors de l'importation de documents (fichiers Office .docx, images .svg), dans la communication entre serveurs via des API utilisant le protocole SOAP ou dans le traitement de flux RSS/Atom.
Bonnes pratiques
La recommandation principale est de désactiver systématiquement la résolution des entités externes et des DTD (Document Type Definitions) dans la configuration du parseur XML utilisé par l'application. Il est également conseillé de privilégier le format JSON, moins complexe et moins risqué, pour l'échange de données.
Synonymes
Antonymes
Conseil
Si vous développez une application, vérifiez toujours la documentation de votre bibliothèque de lecture XML (comme libxml2 pour PHP ou DocumentBuilderFactory en Java) : beaucoup ont désormais des options de sécurité activées par défaut, mais les anciennes versions nécessitent un verrouillage manuel.
Questions fréquentes
Pourquoi le XML est-il dangereux ?
Le XML n'est pas dangereux en soi, mais ses fonctionnalités avancées permettent d'appeler des ressources extérieures, ce que les pirates détournent pour voler des données.
Le format JSON est-il sensible au XXE ?
Non, le format JSON ne gère pas les entités externes par conception, ce qui le rend naturellement immunisé contre ce type d'attaque spécifique.