Espaces de noms de l'hôte partagés

Chaque drapeau d'espace de noms --host supprime une couche d'isolation entre le conteneur et l'hôte. Partager l'espace de noms PID expose les processus de l'hôte et permet d'y injecter, l'espace de noms réseau expose les services locaux à l'hôte et le loopback du nœud, l'espace de noms IPC expose la mémoire partagée et les sémaphores, et un espace de noms utilisateur partagé ou mappé peut signifier que le root du conteneur est le root de l'hôte.

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

Les espaces de noms sont ce qui fait d'un conteneur un conteneur : des vues séparées des processus, du réseau, de l'IPC, des montages, des utilisateurs, et plus encore. Chaque drapeau --pid=host, --net=host, --ipc=host ou --userns=host (et les champs Kubernetes hostPID, hostNetwork, hostIPC) supprime l'une de ces séparations, rattachant le conteneur à la vue de l'hôte. Aucun d'eux n'est un exploit de corruption mémoire ; chacun rend simplement une tranche de l'hôte, et l'évasion consiste à utiliser cette tranche.

Identifiez quels espaces de noms sont partagés avec l'hôte en comparant les identifiants d'espace de noms avec ceux du PID 1 sur l'hôte, ou par ce qui est visible :

bash
ls -l /proc/self/ns/                       # this process's namespace inode IDs
ls -l /proc/1/ns/                          # compare: same inode = shared with host init
ls /proc | grep -E '^[0-9]+$' | wc -l      # many host PIDs => shared PID namespace
ip addr; ss -tlnp 2>/dev/null | head       # host interfaces/ports => shared net namespace
ipcs                                       # host shared memory/semaphores => shared IPC
cat /proc/self/uid_map                     # "0 0 ..." => not in a user namespace

Sous-thèmes#

Références#