Blog

Les développeurs face à la sécurité : série Partage & Apprentissage - Injection XQuery

February 28, 2019
Jaap Karan Singh

Les attaques par injection XQuery sont parfois considérées comme le petit frère des attaques par injection SQL, plus répandues. Elles ont des causes profondes similaires et les commandes que les attaquants exploitent pour les déclencher sont également très proches. La seule différence est que les attaques par injection XQuery ne peuvent se produire que lors d'une requête XPath pour des données XML. C'est pourquoi on les appelle parfois injections XPath ou simplement attaques XPath, car il s'agit de la méthode de diffusion utilisée.

Une immense majorité de sites web utilisent des bases de données XML pour effectuer des fonctions critiques telles que le stockage des identifiants de connexion, des informations clients, des données personnelles et des informations confidentielles ou sensibles, ce qui confère aux attaques XQuery une surface d'attaque particulièrement étendue.

Dans cet épisode, nous aborderons :

  • Comment les attaquants utilisent les injections XQuery
  • Pourquoi les injections XQuery sont dangereuses
  • Techniques pour corriger cette vulnérabilité.

Comment les attaquants déclenchent-ils une injection XQuery ?

Comme pour la plupart des langages informatiques, le code XPath a été conçu pour être simple. En fait, XPath est un langage standard, et toutes les notations et syntaxes restent inchangées, quelle que soit l'application qui les utilise. Cela signifie que les commandes utilisées pour manipuler une requête XPath sont bien connues et peuvent même être automatisées.

À la base, une requête XPath est une instruction simple qui indique à la base de données XML quelles informations rechercher. Dans l'un des exemples les plus simples, elle est utilisée pour vérifier si un enregistrement utilisateur existe, puis pour récupérer ses identifiants de connexion. Le problème est que, comme les requêtes XPath incluent des entrées utilisateur, les pirates peuvent manipuler la requête pour renvoyer des informations qui devraient être protégées.

Par exemple, pour tenter de contourner la sécurité de connexion, un attaquant peut ajouter des variables à la fin de sa requête XPath afin de court-circuiter l'ensemble du processus. Voici un exemple possible :

//Employee[UserName/text()=anyone or 1=1 or a=a And Password/text()=doesnotmatter]

Ici, le champ Nom d'utilisateur est forcé de correspondre à n'importe quel utilisateur grâce à l'instruction 1=1 ou a=a. Le champ mot de passe n'a même plus d'importance, car seule la première partie de la requête doit être vraie.

Pourquoi l'injection XQuery est-elle dangereuse ?

L'une des principales raisons pour lesquelles les attaques par injection XQuery sont si dangereuses est qu'elles permettent aux attaquants de contourner la sécurité des connexions et des comptes. De plus, elles permettent de le faire de manière automatisée en utilisant un langage standard qui ne varie pas selon l'application. Les attaquants peuvent scanner automatiquement les sites web et les applications à la recherche de cette vulnérabilité et agir dès qu'elle est découverte. Si votre application est vulnérable, les attaquants la compromettront. Au-delà de la compromission de la sécurité des comptes, les attaques XQuery peuvent également être utilisées pour l'exfiltration de données. Par exemple, un attaquant pourrait transférer tous les enregistrements hors de la base de données XML.

Éliminer les attaques par injection XQuery

Comme pour les vulnérabilités similaires, une défense clé consiste simplement à ne pas faire confiance aux entrées utilisateur. Chaque fois qu'un utilisateur est en mesure de saisir des informations, qu'il effectue une requête en base de données ou non, le processus doit être examiné. C'est un peu comme sécuriser les portes et les fenêtres d'un bâtiment physique, car ce sont les principaux moyens par lesquels les gens peuvent accéder.

Pour la protection contre l'injection XQuery, cela se fait en assainissant les entrées utilisateur par le filtrage, ou en utilisant une validation d'entrée sur liste blanche. Vous pouvez également utiliser une interface XPath paramétrée, similaire aux requêtes préparées pour le SQL.

Enfin, assurez-vous d'appliquer le principe du moindre privilège à toutes les applications. Cela peut signifier créer un utilisateur avec des privilèges de lecture seule pour effectuer toutes les requêtes de l'application.

En utilisant ces techniques, il est possible d'arrêter toutes les tentatives d'injection XQuery dirigées contre votre site web ou votre application.

Plus d'informations sur les injections XQuery

Pour aller plus loin, vous pouvez consulter ce que l'OWASP dit au sujet des injections XQuery. Vous pouvez également mettre vos nouvelles connaissances en matière de défense à l'épreuve avec une démo gratuite de la plateforme Secure Code Warrior, qui forme les équipes de cybersécurité à devenir les ultimes cyber-guerriers. Pour en savoir plus sur la façon de contrer cette vulnérabilité et une galerie d'autres menaces, visitez le blog de Secure Code Warrior.

Slogan

Gouvernez le développement assisté par IA avant la mise en production

Évaluez les risques liés à l'IA, appliquez des politiques de codage sécurisé dès le commit et accélérez la livraison sécurisée tout au long de votre cycle de développement.

Réserver une démo
Bibliothèque de ressources

Explorer plus d'articles

Accédez à du contenu expert sur le codage sécurisé, la gouvernance de l'IA et la gestion des risques logiciels.

tout parcourir
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Une culture de la sécurité : comment Sage a bâti son programme de champions

Découvrez comment Sage a renforcé sa sécurité grâce à une approche flexible axée sur les relations humaines, formant plus de 200 champions de la sécurité et obtenant une réduction mesurable des risques.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Mois de la sensibilisation à la cybersécurité 2026 : comprendre la sécurité de l'IA est essentiel à la défense de l'entreprise

Nous avons atteint un point où la plupart des grandes entreprises d'IA ont publiquement appelé à un ralentissement mondial du développement de l'IA afin de permettre aux garde-fous de sécurité de rattraper leur retard. Pourtant, la réalité est que de graves problèmes de sécurité se sont déjà concrétisés. Cela place d'innombrables responsables de la sécurité et équipes de direction dans une situation d'urgence, alors que les coûts financiers et les risques liés à la mise en œuvre de l'IA ne cessent de s'accumuler.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Levier 8 : Valoriser votre programme

Un programme de codage sécurisé a besoin de plus qu'un contenu de qualité pour réussir. Le levier 8 montre comment l'image de marque transforme la participation en une expérience convoitée, axée sur le statut.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Chaque employé est désormais en première ligne de la cybersécurité IA

Le paysage technologique des entreprises évolue à une vitesse que peu avaient anticipée avant qu'il ne soit trop tard. Nous avons officiellement franchi le cap du code écrit par l'humain et de l'assistance basique par copilote pour entrer dans l'ère du cycle de vie de développement agentique (ADLC). Si les agents IA autonomes promettent une efficacité sans précédent dans de multiples fonctions, ils apportent également une toute nouvelle catégorie de risques en matière de sécurité et de réglementation.

En savoir plus

Sécurisez le développement piloté par l'IA avant le déploiement

Identifiez les risques de développement, appliquez vos politiques et prévenez les vulnérabilités tout au long du cycle de vie de vos logiciels.

Réserver une démo
trust score
Aucun élément trouvé.