Icône du lab

YAML Bomb

💣 Pouvez-vous déclencher une bombe YAML pour compromettre le système de configuration ?

Défi Mis à jour le 22 juin 2026 Solution (Pro)
YAML Deserialization PyYAML Exploitation Configuration Injection Python Security Unsafe Deserialization Remote Code Execution File Processing Security

Ce système de gestion de configuration d'entreprise traite des fichiers YAML pour les paramètres d'application, mais une faille d'implémentation dangereuse crée une tempête parfaite pour l'exploitation. 💣 Les attaques de désérialisation YAML sont de plus en plus courantes dans les applications modernes, surtout celles utilisant des approches de configuration-as-code. Beaucoup de développeurs ne réalisent pas que YAML peut exécuter du code Python arbitraire pendant l'analyse, en faisant un vecteur d'attaque puissant pour la compromission de systèmes ! 🎯

1
Flags
50
XP
63%
Taux de Réussite

Les vulnérabilités de désérialisation YAML représentent une classe critique de failles de sécurité dans les applications qui analysent des fichiers de configuration YAML. Quand les applications utilisent des fonctions de chargement YAML non sécurisées - particulièrement yaml.load() de Python sans spécifier un loader sûr - les attaquants peuvent intégrer du code exécutable dans les documents YAML qui s'exécute pendant le processus d'analyse. Cette vulnérabilité est de plus en plus pertinente à mesure que les organisations adoptent des pratiques de configuration-as-code et que YAML devient le format dominant pour la configuration d'applications, les définitions d'infrastructure et les pipelines CI/CD.

Comprendre les risques de désérialisation YAML

YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'homme largement utilisé dans les outils DevOps comme Kubernetes, Docker Compose, Ansible et GitHub Actions. La spécification YAML inclut une fonctionnalité puissante mais dangereuse : la capacité de représenter des objets arbitraires de langages de programmation en utilisant des tags de type. Dans la bibliothèque PyYAML de Python, la fonction yaml.load() avec le Loader par défaut peut instancier n'importe quel objet Python, y compris ceux qui exécutent des commandes lors de leur construction.

Un payload YAML malveillant peut utiliser des constructeurs de type spécifiques à Python pour exécuter des commandes arbitraires lorsque le fichier YAML est analysé. Cela signifie que toute application acceptant des entrées YAML provenant de sources non fiables - portails de téléchargement de configuration, endpoints d'API, systèmes CI/CD ou processeurs de fichiers - peut être exploitée pour l'exécution de code à distance si elle utilise la désérialisation non sécurisée.

Impact réel

Les vulnérabilités de désérialisation YAML ont affecté des plateformes et outils majeurs. Des incidents notables incluent des vulnérabilités dans Ruby on Rails (CVE-2013-0156), SnakeYAML pour Java, et de nombreuses applications Python utilisant PyYAML. L'impact est particulièrement sévère dans les environnements DevOps où les fichiers YAML s'exécutent souvent avec des privilèges élevés pour la gestion d'infrastructure. Un fichier de configuration compromis peut mener à la prise de contrôle complète de l'infrastructure.

Traitement YAML sécurisé

La correction pour les applications Python est simple : toujours utiliser yaml.safe_load() au lieu de yaml.load(). Le loader sûr ne permet que les types YAML basiques (chaînes, nombres, listes, dictionnaires) et refuse de construire des objets Python arbitraires. Pour les applications nécessitant un support de types personnalisés, l'utilisation de yaml.load avec un SafeLoader explicitement configuré et des constructeurs enregistrés fournit une alternative contrôlée. La revue de code et l'analyse statique doivent signaler toute utilisation de fonctions de chargement YAML non sécurisées.

Ce que vous apprendrez

  • Comprendre comment la désérialisation YAML peut mener à l'exécution de code à distance
  • Apprendre la différence entre le chargement YAML sûr et non sûr en Python
  • Maîtriser la construction de payloads YAML pour exploiter la désérialisation non sécurisée
  • Reconnaître les surfaces d'attaque de désérialisation YAML dans le DevOps et la gestion de configuration
  • Développer des compétences pour identifier et remédier à la désérialisation non sécurisée dans les applications Python

Prérequis

Basic Python knowledge Understanding of YAML syntax Familiarity with command-line tools and Linux

Prêt à hacker ce lab ?

Créez un compte gratuit et pratiquez la cybersécurité.

Commencer - C'est gratuit
Commencez Votre Défi
~1-2 min de configuration
Serveur dédié
Instance privée
Puissance standard
Nouveau ? Voici comment faire
1
Cliquez sur "Start Lab" ci-dessus Vous obtiendrez votre propre machine avec une adresse IP
2
Explorez la cible Ouvrez l'IP dans votre navigateur et cherchez des vulnérabilités
3
Trouvez et soumettez les flags Les flags sont des textes secrets cachés dans le système - collez-les ci-dessous pour marquer des XP

Prêt à hacker ce lab?

Créez un compte gratuit pour démarrer votre propre serveur dédié, soumettre des flags et gagner des XP au classement.

Commencer à Hacker Gratuitement
13 000+ Hackers 100+ Labs & Cours Gratuit
Commencer Gratuitement