Infrastructure
PID : Process IDentifier, en français identifiant de processus. « Le numéro qu'un système d'exploitation attribue à chaque programme en cours d'exécution pour le distinguer des autres », par analogie avec le ticket du guichet de la préfecture, à ceci près que le numéro 1 ne part jamais.
PID 1 : Sous Linux et les systèmes UNIX, le premier processus lancé par le noyau reçoit le PID 1 (init, systemd…). Il adopte les processus orphelins, doit récupérer les processus terminés pour éviter les zombies et ne reçoit pas les signaux qu'il n'a pas prévu de traiter, ce qui explique les conteneurs qui refusent poliment de s'arrêter.
Dans un conteneur : Grâce aux espaces de noms de PID, le point d'entrée d'un conteneur devient le PID 1 de son propre espace et l'ancêtre de tout ce qui s'y exécute. Son environnement, ses droits et ses variables se transmettent donc à toute la descendance, y compris aux tâches lancées bien plus tard.
Exposition : Sous Linux, /proc/[PID]/environ et /proc/[PID]/cmdline exposent l'environnement et la ligne de commande d'un processus aux comptes autorisés à l'inspecter. Un secret passé en variable d'environnement ou en argument est donc lisible bien au-delà de ce que son auteur imaginait.
Homonyme : En automatisme industriel, PID désigne le régulateur Proportionnel, Intégral, Dérivé qui pilote température, pression ou débit dans les systèmes OT.
Ce qui arrive si on s'en passe
Ignorer le rôle du PID 1 dans un conteneur, c'est laisser une variable d'environnement polluée ou un secret injecté au démarrage se propager à chaque processus enfant, sans possibilité de le retirer après coup. Un point d'entrée qui ne gère ni les signaux ni les zombies empêche en outre les arrêts propres : les données en cours d'écriture sont perdues et la plateforme finit par tuer brutalement le conteneur. Enfin, un attaquant capable de lire /proc récupère des secrets dans l'environnement des processus voisins sans toucher au moindre fichier.
Explication de la marmotte
Chaque programme en train de tourner sur un ordinateur reçoit un numéro unique, le PID. Le numéro 1 est spécial : c'est le premier programme lancé, et tous les autres en descendent. Dans un conteneur, le programme principal porte ce numéro 1, et tout ce qu'il a reçu au départ, comme des réglages ou des mots de passe, se transmet à tous les programmes qu'il lance ensuite.
Où ce terme est utilisé
- Linux shell, permissions et processus, le modèle de contrôle d'accès (16 occurrences)
- Pollution de variable d'environnement héritée dans un conteneur (3 occurrences)
- Écrire des scripts Bash système fiables et sûrs en production (2 occurrences)
- Isolation des conteneurs Docker : namespaces, cgroups et évasions (2 occurrences)
- EBPF pour observer et bloquer dans le noyau Linux (1 occurrence)
- Linux : définition, origine et rôle du noyau (1 occurrence)
