Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-31133 — CVE-2025-31133 PoC | Kitploit
Outils/GitHubGitHub/skynet-f-nvidia/cve-2025-31133
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionRed TeamingÉvasion de Conteneur
GitHubskynet-f-nvidia/cve-2025-31133

CVE-2025-31133

CVE-2025-31133 PoC

Voir le dépôt
2128il y a 11 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exploit PoC pour CVE-2025-31133

Ce document explique le fonctionnement du script Proof-of-Concept (PoC) fourni pour la vulnérabilité runc CVE-2025-31133.

Résumé

  • Vulnérabilité : CVE-2025-31133 - Une condition de course (race condition) par lien symbolique dans la gestion de maskedPaths de runc.
  • Impact : Un conteneur malveillant peut contourner les protections de maskedPaths, ce qui lui permet d'écrire dans des fichiers sensibles du système hôte. Cela constitue une évasion de conteneur.
  • Objectif du PoC : Démontrer la vulnérabilité de manière sûre en modifiant le fichier /proc/sys/kernel/core_pattern de l'hôte depuis un conteneur.
  • Sécurité : Ce PoC est non destructif. Il écrit uniquement la chaîne "pwned" dans le fichier cible et n'exécute pas de code arbitraire sur l'hôte. Il fournit également des instructions pour restaurer la valeur d'origine.

La vulnérabilité expliquée

La fonctionnalité maskedPaths de la spécification OCI d'un conteneur (config.json) est un mécanisme de sécurité conçu pour empêcher les conteneurs d'accéder à des fichiers système sensibles. Elle fonctionne en montant par liaison (bind mount) /dev/null (un fichier de périphérique vide) sur ces chemins sensibles à l'intérieur du conteneur, les rendant ainsi non lisibles et non inscriptibles.

La vulnérabilité (CVE-2025-31133) est une condition de course Time-of-Check to Time-of-Use (TOCTOU). L'exploit fonctionne comme suit :

  1. La faille : Lorsque runc configure le conteneur, il prépare l'utilisation du fichier dev/null du rootfs du conteneur comme source pour le montage par liaison qui masquera le chemin sensible (par exemple /proc/sys/kernel/core_pattern).
  2. La course : Il existe une petite fenêtre de temps entre le moment où runc résout le chemin vers rootfs/dev/null et le moment où il effectue réellement l'opération de montage.
  3. L'exploit : Un attaquant peut créer un script sur l'hôte qui alterne en continu et très rapidement le fichier rootfs/dev/null entre un nœud de périphérique légitime et un lien symbolique pointant vers le fichier cible sur l'hôte (/proc/sys/kernel/core_pattern).
  4. Gagner la course : Si le timing est parfait, runc effectuera son opération de montage au moment exact où rootfs/dev/null est un lien symbolique. Cela amène le noyau à suivre le lien symbolique, et l'opération de masquage prévue échoue pour /proc/sys/kernel/core_pattern.
  5. Évasion de conteneur : Parce que le masquage a échoué, le chemin à l'intérieur du conteneur n'est plus protégé. Un processus s'exécutant dans le conteneur peut désormais écrire dans /proc/sys/kernel/core_pattern, ce qui modifie directement le fichier de l'hôte, réalisant ainsi une évasion de conteneur.

Ce PoC utilise cette technique pour écrire dans /proc/sys/kernel/core_pattern, une cible courante pour ce type d'exploit car sa modification peut conduire à l'exécution de code arbitraire sur l'hôte lorsqu'un processus plante. Cependant, ce PoC écrit uniquement une chaîne inoffensive pour prouver l'existence de la primitive d'écriture.


Comment fonctionne le script du PoC

Le script poc.sh automatise l'ensemble du processus décrit ci-dessus.

  1. Configuration et nettoyage :

    • Il définit des variables pour le binaire runc, le nom du conteneur et le chemin du rootfs.
    • Il inclut une fonction cleanup robuste qui garantit la suppression de tous les conteneurs ou fichiers créés précédemment par le script. Cette fonction est automatiquement appelée à la sortie, sur interruption ou sur terminaison.
  2. Préparation :

    • Il enregistre le contenu original du /proc/sys/kernel/core_pattern de l'hôte dans un fichier temporaire. Ceci est utilisé ensuite pour vérifier si l'exploit a réussi et pour aider l'utilisateur à restaurer le système.
    • Il crée un rootfs de conteneur minimal (./rootfs) et un fichier config.json.
    • Le fichier config.json liste explicitement /proc/sys/kernel/core_pattern sous maskedPaths — précisément la fonctionnalité que l'exploit vise à contourner.
  3. La fonction de course (symlink_race)

    • C'est le cœur de l'exploit. Elle est conçue pour s'exécuter en arrière-plan.
    • Elle entre dans une boucle serrée qui dure 20 secondes.
    • Dans la boucle, elle répète :
      1. Supprime rootfs/dev/null.
      2. Crée un lien symbolique de rootfs/dev/null vers le fichier cible de l'hôte (/proc/sys/kernel/core_pattern).
      3. Pause pendant une infime fraction de seconde (500 microsecondes).
      4. Supprime le lien symbolique.
      5. Recrée rootfs/dev/null comme un périphérique de caractères (mknod) approprié.
      6. Pause pour une durée légèrement plus longue (5000 microsecondes).
    • Cette alternance rapide crée la fenêtre d'opportunité pour que la condition de course se produise.
  4. Exécution :

    • La fonction symlink_race est démarrée comme processus en arrière-plan.
    • Immédiatement après, le script exécute runc run ... pour créer et démarrer le conteneur. C'est le moment où runc tente d'appliquer les maskedPaths.
    • Une fois le conteneur en cours d'exécution, le script utilise runc exec pour exécuter une commande à l'intérieur du conteneur : echo 'pwned' > /proc/sys/kernel/core_pattern.
  5. Vérification :

    • Le script attend que le processus de course en arrière-plan se termine et nettoie le conteneur.
    • Il lit ensuite le contenu actuel du /proc/sys/kernel/core_pattern de l'hôte.
    • Il compare le contenu actuel avec la chaîne attendue "pwned" et la valeur d'origine.
    • Selon le résultat, il affiche un message clair [+] EXPLOIT SUCCEEDED! ou [-] Exploit did not succeed.

Utilisation

Prérequis :

  • Une version vulnérable de runc.
  • busybox-static installé (pour le shell du conteneur).
  • Privilèges root (sudo) pour exécuter runc et modifier /proc.

Étapes :

  1. Enregistrez le script sous le nom poc.sh.
  2. Rendez-le exécutable : chmod +x poc.sh.
  3. Exécutez-le avec sudo : sudo ./poc.sh.

Interpréter la sortie

  • Succès : Si vous voyez le message [+] EXPLOIT SUCCEEDED!, cela signifie que la condition de course a été gagnée. Le /proc/sys/kernel/core_pattern de l'hôte a été modifié avec succès depuis le conteneur, confirmant la vulnérabilité.
  • Échec : Si vous voyez [-] Exploit did not succeed., la course n'a pas été gagnée lors de cette tentative. Les conditions de course sont probabilistes et dépendent fortement du timing et de la charge du système. Essayez d'exécuter le script plusieurs fois.

Restaurer votre système (après une exécution réussie)

Le PoC modifie un fichier système. Pour le restaurer dans son état d'origine, exécutez la commande suggérée par le script :

# The 'ORIGINAL_PATTERN' will be the actual value from your system
echo 'original_core_pattern_value' | sudo tee /proc/sys/kernel/core_pattern
Télécharger l’outil