
Démonstration éducative de l'évasion de conteneur runc via CVE-2024-21626 avec un gadget de détection basé sur eBPF pour les tentatives d'exploitation.
Ce dépôt contient des exemples de code pour une application vulnérable à CVE-2024-21626 ainsi qu'un gadget eBPF pour détecter les tentatives d'exploitation.
Ce dépôt a été créé dans le cadre de cet article de blog.
Le programme gadget utilisé pour détecter cette vulnérabilité est uniquement à des fins de démonstration. Il ne s'agit pas d'une détection complète de CVE-2024-21626.
CVE-2024-21626 est une vulnérabilité dans le runtime de conteneur runc, présente dans les versions antérieures à v1.1.12. Elle repose sur le fait que runc ne ferme pas un descripteur de fichier « fuité » en temps opportun lors de la création ou de l'exécution de commandes à l'intérieur du conteneur, ce qui amène le conteneur à hériter de ce descripteur de fichier et à obtenir un accès au système de fichiers hôte.
Il existe plusieurs façons d'exploiter cette vulnérabilité. Ce dépôt montre comment cette vulnérabilité peut être exploitée à l'exécution.
Vous pouvez en lire plus ici.
Pour que cette démo fonctionne, vous devez vous assurer que votre machine exécute une version de runc <= 1.1.11.
leaky-app est une application Go qui crée un lien symbolique vers le descripteur de fichier potentiellement fuité. Pour construire l'image docker :
make leaky-app
Pour construire le gadget eBPF, vous aurez besoin de l'outil [ig].
Vous pouvez construire le gadget en utilisant :
make gadget
Une fois les deux construits, exécutez le gadget en utilisant :
IG_EXPERIMENTAL=true sudo -E ig run trace-symlink:latest
Ouvrez un autre terminal et démarrez le conteneur leaky-app :
docker run --rm --name leaky-app leaky-app
Vous devriez voir le gadget afficher le conteneur qui a appelé l'appel système symlink.
Ce dépôt contient une application de démonstration conçue pour illustrer la détection de CVE-2024-21626. Il est important de noter que cette démonstration est uniquement à des fins éducatives et ne doit pas être considérée comme un outil de détection pratique. Les mécanismes de détection implémentés dans cette démo ne couvrent pas tous les scénarios et ne représentent pas avec précision les complexités de la détection de cette vulnérabilité.