Exploits de noyau

Un conteneur partage le noyau de l'hôte, de sorte qu'une vulnérabilité du noyau qu'un processus conteneurisé peut atteindre s'exécute sur l'hôte. Les principales familles accessibles depuis les conteneurs incluent la race condition de faute de page copy-on-write, l'écrasement du page cache via les pipes et les use-after-free de netfilter nf_tables qu'un user namespace non privilégié expose, chacune donnant un accès lecture-écriture au noyau puis root sur l'hôte.

1 min de lecturemis à jour le 12 oct. 2026florianamette1 contributeur
Demander à votre assistant (MCP)Modifier sur GitHub

Les conteneurs ne virtualisent pas le noyau ; ils partagent l'unique noyau de l'hôte via les namespaces et les cgroups. Tout chemin de code du noyau qu'un processus conteneurisé peut atteindre constitue donc une surface d'évasion, et un exploit de noyau réussi atterrit directement sur l'hôte en tant que root, contournant tous les namespaces. Ce qu'un conteneur peut atteindre s'élargit énormément lorsqu'il peut créer un user namespace, car cela accorde CAP_NET_ADMIN et d'autres capabilities à l'intérieur du namespace et expose des sous-systèmes (netfilter, certains systèmes de fichiers) autrement inaccessibles.

Évaluez l'accessibilité et la version :

bash
uname -r                                           # exact kernel release
unshare -Urn true 2>/dev/null && echo "unprivileged userns available"
sysctl kernel.unprivileged_userns_clone 2>/dev/null

Sous-thèmes#

  • Dirty COW : une race condition copy-on-write pour écrire dans des pages en lecture seule.
  • Dirty Pipe : écraser le page cache d'un fichier en lecture seule via un pipe.
  • nf_tables : use-after-free de netfilter accessibles via un user namespace non privilégié.

Références#