Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
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
POC-CopyEscape-CVE-2026-17106 — PoC fonctionnel de CVE-2026-17106 (CopyEscape) : course TOCTOU dans docker cp qui permet une écriture arbitraire sur l'hôte Docker. Laboratoire Docker + moniteur inotify + LD_PRELOAD. Variante macOS inoffensive et Linux destructrice. | Kitploit
Outils/GitHubGitHub/686f6c61/poc-copyescape-cve-2026-17106
Escalade de PrivilègesSécurité des ConteneursAnalyse des VulnérabilitésExploitationApprentissage et ÉducationÉvasion de ConteneurAttaque AdversarialeLabs et Pratique

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
GitHub
686f6c61/poc-copyescape-cve-2026-17106

POC-CopyEscape-CVE-2026-17106

PoC fonctionnel de CVE-2026-17106 (CopyEscape) : course TOCTOU dans docker cp qui permet une écriture arbitraire sur l'hôte Docker. Laboratoire Docker + moniteur inotify + LD_PRELOAD. Variante macOS inoffensive et Linux destructrice.

Voir le dépôt
123il y a 1 moisPas encore vérifié

CopyEscape — PoC de la CVE-2026-17106

Preuve de concept pédagogique de CopyEscape (CVE-2026-17106), une vulnérabilité de course TOCTOU dans docker cp qui permet à un conteneur malveillant d'écrire des fichiers arbitraires sur l'hôte Docker. Inspirée des travaux originaux de masasron, qui a découvert et documenté la vulnérabilité dans le billet "CopyEscape: Taking Over Docker Hosts with docker cp".


Table des matières

  1. Résumé exécutif
  2. Avis légal
  3. Architecture de la chaîne
  4. Prérequis
  5. Structure du dépôt
  6. Guide de démarrage rapide
  7. Vérification de l'exploitation
  8. Comparaison avec l'original
  9. Atténuation
  10. Crédits
  11. Licence

Résumé exécutif

CVE-2026-17106 est une vulnérabilité de condition de course (TOCTOU) dans l'extraction de l'archive tar que le démon Docker produit lors de docker cp <contenedor>:<ruta> <destino>. Elle affecte Docker CLI 29.6.1 et versions antérieures ; corrigée à partir de la 29.7.0. Le bug réside dans la CLI (extraction du tar sur l'hôte), pas dans le démon.

La chaîne baptisée CopyEscape montre comment, à partir d'uniquement un conteneur en cours d'exécution sans capacités supplémentaires, un attaquant peut :

  1. Camoufler un répertoire réel /watched/file.txt/ en fichier régulier pour tout processus qui l'ouvre à l'intérieur du conteneur, via une bibliothèque LD_PRELOAD qui intercepte open, openat, openat2, fopen, stat, lstat, fstatat, statx et les variantes 64.
  2. Maintenir un fichier leurre aaa.txt de 16 Mio qui force le démon à mettre suffisamment de temps à produire le tar pour que le moniteur gagne la course.
  3. Surveiller avec inotify les accès du démon et, dans la fenêtre de course, remplacer un sous-répertoire escape/ par un symlink absolu vers la cible de l'hôte (/Users/<usuario> sur macOS ou /usr/bin sur Linux) via deux rename(2) atomiques avec rollback.
  4. Le tar résultant contient le symlink escape suivi d'une entrée enfant escape/<basename> ; la CLI vulnérable crée le symlink sur le client et extrait l'entrée enfant à travers celui-ci, écrivant en dehors de la destination choisie par l'utilisateur.

Le résultat est une écriture arbitraire de fichiers sur l'hôte avec les permissions du processus qui exécute docker cp. La variante Linux écrase /usr/bin/runc et obtient une exécution de code en tant que root sur l'hôte au prochain docker run / exec.


Avis légal

Ce dépôt contient du matériel strictement éducatif et défensif.

  • Objet : démontrer la chaîne d'exploitation à des fins de formation, d'audit personnel et de validation de patches.
  • Utilisation autorisée : exécutez-le uniquement contre des systèmes qui vous appartiennent ou sur lesquels vous disposez d'une autorisation écrite explicite.
  • Interdit : toute utilisation contre des systèmes de tiers sans consentement. L'auteur du dépôt ne saurait être tenu responsable d'une mauvaise utilisation du matériel contenu ici.
  • Responsabilité : l'opérateur est le seul responsable du respect de la législation applicable (LOPD/RGPD en Espagne, CFAA aux États-Unis, etc.).
  • La variante Linux détruit le runc de l'hôte : utilisez-la uniquement dans une VM jetable avec une sauvegarde vérifiée.

La PoC est fournie avec une variante macOS inoffensive (elle écrit ~/pwnd comme marqueur) dont l'unique but est de servir de démonstration reproductible.


Architecture de la chaîne

┌─────────────────────────────────────────────────────────────────────┐
│  1. LD_PRELOAD camufla /watched/file.txt como archivo regular       │
│     open/openat/openat2/fopen/stat/lstat/fstatat/statx → decoy       │
│     docker exec ... cat /watched/file.txt  →  "top-level file"       │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  2. Layout real dentro del contenedor                               │
│     /watched/file.txt/                                               │
│     ├── aaa.txt            (16 MiB de 'B', cebo lento)               │
│     ├── escape/            (directorio real inicial)                 │
│     ├── escape/<basename>  (payload: runc o pwnd)                    │
│     └── .swap-escape       (symlink → /Users/<usr> o /usr/bin)       │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  3. docker cp pide tar al daemon                                    │
│     daemon recorre /watched/file.txt/ y abre aaa.txt                │
│     inotify detecta IN_OPEN sobre aaa.txt                           │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  4. Monitor pivot: dos rename(2) atomicos con rollback              │
│     escape/ → .old-escape/   (backup)                                │
│     .swap-escape → escape/   (symlink al target del host)            │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  5. Tar resultante contiene:                                        │
│     escape → /Users/<usr>   (symlink absoluto)                       │
│     escape/<basename>        (entrada hija que atraviesa el symlink) │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  6. CLI vulnerable extrae symlink + hija                            │
│     crea escape → /Users/<usr> en el destino local                   │
│     extrae escape/<basename> A TRAVES del symlink                    │
│     escribe /Users/<usr>/<basename> en el host                       │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  macOS: ~/pwnd con "COPYESCAPE_MACOS_DEMO"  (demo inocua)           │
│  Linux: /usr/bin/runc sobrescrito          (RCE como root)          │
└─────────────────────────────────────────────────────────────────────┘

Prérequis

La PoC est conçue pour s'exécuter sur macOS avec :

  • Docker Desktop 4.81+ en cours d'exécution (le démon peut être n'importe quelle version ; le bug se trouve dans la CLI).
  • curl, tar, git et docker dans le PATH.
  • Connexion internet pour télécharger la CLI vulnérable 29.6.1 (environ 18 Mo) et l'image de base alpine:3.21.
  • HOME au format /Users/<usuario>.

Aucun root n'est nécessaire pour la variante macOS. La variante Linux nécessite root et une VM jetable.

Le runner run-poc.sh télécharge automatiquement le binaire de la CLI vulnérable 29.6.1 depuis le site officiel de Docker (download.docker.com). Il ne modifie pas l'installation de Docker Desktop du système : il utilise le démon actuel mais invoque le binaire téléchargé pour l'opération docker cp.


Structure du dépôt

Télécharger l’outil