⁉️XXE
XXE : XML External Entity
Une attaque XXE (XML External Entity) est une vulnérabilité de sécurité qui se produit lorsque des applications traitant des données XML n’implémentent pas correctement la gestion des entités externes. Cette faille peut permettre à un attaquant de lire des fichiers arbitraires sur le système hôte, d’effectuer des requêtes réseau sur des systèmes internes, ou d'exécuter des attaques de type déni de service (DoS).
L'attaque cible le serveur qui traite le fichier XML malveillant et tente de lire des fichiers locaux ou d'accéder à des ressources internes.
Fonctionnement d'une attaque XXE
Injection d'entité externe:
L'attaquant fournit un document XML contenant une définition d'entité externe (DTD) malveillante. Par exemple, il peut inclure une entité qui référence un fichier sensible sur le serveur.
Traitement par le parseur XML:
L'application web ou le service qui traite le document XML n'effectue pas correctement les validations de sécurité et résout les entités externes définies par l'attaquant.
Exploitation de la vulnérabilité:
L'entité externe est résolue, permettant à l'attaquant d'accéder à des ressources locales, d'exfiltrer des données ou de provoquer un déni de service.
Conséquences d'une attaque XXE
Vol de données: L'attaquant peut lire des fichiers sensibles sur le serveur, comme
/etc/passwdsur les systèmes Unix.Accès à des ressources internes: L'attaquant peut utiliser l'application comme un relais pour effectuer des requêtes vers des ressources internes de l'entreprise.
Déni de service (DoS): L'attaquant peut injecter des entités XML qui consomment beaucoup de ressources et bloquent le serveur.
Exfiltration de données: L'attaquant peut exfiltrer des données sensibles à un serveur externe contrôlé par lui.
Prévention des attaques XXE
Désactiver les entités externes:
Configurez les parseurs XML pour désactiver la résolution des entités externes.
Utiliser des bibliothèques sécurisées:
Utilisez des bibliothèques et des parseurs XML qui sont sécurisés par défaut contre les attaques XXE.
Validation et sanitation des entrées:
Validez et nettoyez toutes les entrées XML provenant de sources non fiables avant de les traiter.
Analyse statique de sécurité:
Utilisez des outils d’analyse statique pour identifier les vulnérabilités XXE dans votre code.
Exemple de code sécurisé
Pratiques recommandées
Sécurité par conception: Adoptez une approche de sécurité par conception, en intégrant les considérations de sécurité dès le début du développement de votre application.
Mise à jour régulière: Gardez vos bibliothèques et vos frameworks à jour pour bénéficier des dernières corrections de sécurité.
Formation des développeurs: Formez vos développeurs aux meilleures pratiques de sécurité, y compris la prévention des attaques XXE.
Mis à jour