Infrastructure
BPF : Berkeley Packet Filter, petite machine virtuelle du noyau, conçue à l'origine pour filtrer des paquets réseau. « Un langage né pour trier des paquets et devenu capable d'observer tout le système », par analogie avec le concierge embauché pour trier le courrier, qui connaît désormais l'emploi du temps de chaque locataire.
Origine : Conçu au Lawrence Berkeley Laboratory par Steven McCanne et Van Jacobson et publié en 1993, BPF permet à un outil comme tcpdump de ne remonter que les paquets qui l'intéressent. Ce BPF dit classique sert aussi à seccomp, sous Linux, pour filtrer les appels système d'un processus.
eBPF : Depuis 2014, Linux propose une version étendue, eBPF, qui charge dans le noyau de petits programmes vérifiés avant exécution et attachés à des événements réseau, des appels système ou des fonctions internes. BTF (BPF Type Format) décrit les structures du noyau pour que ces programmes restent portables d'une version à l'autre.
Sécurité : Le vérificateur du noyau refuse les programmes qui pourraient boucler sans fin ou lire hors limites, mais il a lui-même connu des failles exploitées pour obtenir les droits root. D'où le réglage kernel.unprivileged_bpf_disabled, qui réserve eBPF aux processus privilégiés, et la capacité CAP_BPF, apparue avec Linux 5.8 pour éviter de distribuer CAP_SYS_ADMIN, ce passe-partout que l'on prête trop volontiers.
Ce qui arrive si on s'en passe
Laisser eBPF accessible aux utilisateurs non privilégiés offre au premier compte compromis le vérificateur du noyau comme cible, et plusieurs de ses failles ont déjà permis de devenir root. Donner CAP_SYS_ADMIN ou l'écriture sur bpffs à un conteneur applicatif lui permet de charger ou de remplacer des programmes qui voient tout le trafic et tous les processus de l'hôte. Des maliciels Linux comme BPFDoor détournent déjà BPF pour guetter discrètement leurs paquets d'activation ; ils n'ont pas eu besoin d'inventer la technique, seulement de trouver la porte ouverte.
Explication de la marmotte
BPF est un mécanisme de Linux qui permet de faire tourner de petits programmes au cœur du système, dans le noyau. Au départ, il servait seulement à trier les paquets réseau, par exemple pour n'enregistrer que le trafic d'un site précis. Sa version moderne, eBPF, sert aussi à surveiller ce que font les programmes, ce qui en fait un outil précieux pour la sécurité. Mais un outil aussi puissant doit être réservé aux administrateurs, sinon un attaquant peut s'en servir lui aussi.
Où ce terme est utilisé
- EBPF pour observer et bloquer dans le noyau Linux (29 occurrences)
- EBPF pour observabilité et enforcement Linux (26 occurrences)
- Wireshark, capturer et lire des trames réseau avec filtres et TLS (5 occurrences)
- Conteneurs, Kubernetes, CNI et service mesh (4 occurrences)
- Captures, observabilité et diagnostic multi-couche (3 occurrences)
- Virtualisation réseau, NFV et data planes ouverts (3 occurrences)
- EDR : fonctionnement, angles morts et contournements (2 occurrences)
- Isolation multi-locataire face à un locataire hostile (2 occurrences)
- Linux : définition, origine et rôle du noyau (2 occurrences)
- Linux shell, permissions et processus, le modèle de contrôle d'accès (2 occurrences)
