eBPF permet d'exécuter vos propres petits programmes à l'intérieur du noyau Linux, en toute sécurité, sans le recompiler ni charger de module. C'est la brique qui fait tourner Cilium, Falco, Tetragon et une bonne partie de l'observabilité moderne. Ce hub couvre eBPF de bout en bout : d'abord le socle noyau (programmes, vérificateur, maps), puis les trois usages qui comptent en production, l'observabilité, le réseau Kubernetes et la sécurité runtime, et enfin ce qu'eBPF coûte en risque.
Le sujet est traité en profondeur en anglais, mais très mal en français : des traductions de fournisseurs, quelques articles de 2022, et le meilleur contenu de sécurité enfermé derrière un paywall. Ce hub vise à combler ce trou, avec des procédures validées en machine virtuelle, jamais dans un conteneur, parce qu'un programme noyau ne se teste pas autrement.
eBPF, c'est quoi ?
Section intitulée « eBPF, c'est quoi ? »eBPF (extended Berkeley Packet Filter) est une machine virtuelle intégrée au noyau Linux. Elle exécute des programmes que vous écrivez, déclenchés par des événements du noyau : un appel système, un paquet réseau qui arrive, une fonction du noyau qui s'exécute. Le programme lit ce qui se passe, agit, et renvoie un résultat, le tout sans quitter le noyau.
Trois propriétés en font une technologie à part :
- La sécurité par vérification. Avant de charger un programme, le noyau le passe à un vérificateur qui prouve qu'il ne peut pas boucler à l'infini, lire une mémoire interdite ou faire planter le système. Un programme qui ne passe pas cette preuve est refusé. C'est ce qui rend acceptable l'idée d'exécuter du code utilisateur en espace noyau.
- L'absence d'instrumentation. eBPF observe le système de l'extérieur du code observé. Vous n'avez ni à modifier l'application, ni à installer un agent dans un conteneur, ni à recompiler quoi que ce soit.
- La performance. Le programme s'exécute là où l'événement se produit, dans le noyau, sans va-et-vient coûteux vers l'espace utilisateur.
Pourquoi tout le monde en parle
Section intitulée « Pourquoi tout le monde en parle »Si eBPF est devenu incontournable, c'est qu'il résout un vieux problème : observer et sécuriser un système sans le ralentir ni le modifier. Avant, il fallait choisir entre un module noyau (puissant mais dangereux, un bug fait planter la machine) et un agent en espace utilisateur (sûr mais lent et aveugle à une partie du système). eBPF offre les deux : la puissance du noyau avec la sûreté du vérificateur.
Concrètement, c'est la fondation d'un écosystème entier :
| Domaine | Outils eBPF | Ce que eBPF apporte |
|---|---|---|
| Réseau Kubernetes | Cilium, Hubble | remplace en grande partie iptables par un routage et un filtrage par identité |
| Observabilité | bpftrace, Parca, Pyroscope, Inspektor Gadget | tracer et profiler sans instrumenter le code |
| Sécurité runtime | Falco, Tetragon, Tracee | détecter une action suspecte (Falco, Tracee), et la bloquer dans le noyau (Tetragon) |
La conséquence pratique : comprendre eBPF, c'est comprendre la brique commune sous ces trois piles. C'est l'objet de ce hub.
Par où commencer
Section intitulée « Par où commencer »Le parcours dépend de votre besoin. Trois portes d'entrée.
Comment ce hub est organisé
Section intitulée « Comment ce hub est organisé »Le hub suit une progression, du noyau vers les usages, pour que chaque étage repose sur le précédent.
Le socle pose les fondations : ce qu'est un programme eBPF, comment l'écrire et le charger, le rôle des maps pour communiquer avec l'espace utilisateur, le vérificateur qui refuse les programmes dangereux, et CO-RE qui rend un programme portable d'un noyau à l'autre.
L'observabilité montre eBPF au travail sans écrire une ligne de C : bpftrace pour tracer le noyau à la volée, BCC et libbpf pour construire ses outils, le profiling continu avec Parca et Pyroscope, et Inspektor Gadget pour Kubernetes.
Le réseau traite Cilium, le CNI qui remplace en grande partie iptables par eBPF, son observabilité avec Hubble, et les politiques réseau, de la couche réseau (L3/L4, adresses et ports) jusqu'à l'applicatif (L7, par exemple une requête HTTP).
La sécurité runtime compare les deux approches, Falco (détection riche en écosystème) et Tetragon (blocage directement dans le noyau), sur le même cluster, plus Tracee.
Le durcissement est l'angle que personne ne traite en français : la surface d'attaque d'eBPF lui-même, les rootkits eBPF et leur détection, et comment restreindre qui peut charger un programme.
Glossaire express
Section intitulée « Glossaire express »Les mêmes mots reviennent sur toutes les pages du hub. En voici les définitions courtes, à garder sous la main quand vous sautez d'un guide à l'autre. Chaque terme est développé dans la page dédiée du socle.
| Terme | Définition courte |
|---|---|
| eBPF | Machine virtuelle du noyau qui exécute vos petits programmes, déclenchés par des événements. |
| bytecode | Le format intermédiaire, propre à eBPF, dans lequel votre C est compilé avant vérification. |
| hook | Le point de déclenchement où s'accroche un programme (voir kprobe, tracepoint, uprobe, XDP). |
| kprobe / tracepoint | Accroche sur une fonction du noyau (kprobe, dynamique) ou un point d'observation stable (tracepoint). |
| uprobe | Accroche sur une fonction d'un programme en espace utilisateur, pas du noyau. |
| helper | Fonction que le noyau met à disposition des programmes eBPF (lire le nom d'un processus, écrire dans une map...). |
| map | Structure de données du noyau, partagée avec l'espace utilisateur : la mémoire et la voix du programme. |
| vérificateur | Composant du noyau qui prouve qu'un programme est sûr avant de le charger, sinon il le refuse. |
| JIT | Compilateur qui traduit le bytecode vérifié en code machine natif, pour la performance. |
| BTF | Description des types du noyau (/sys/kernel/btf/vmlinux), la carte qui rend la portabilité possible. |
| CO-RE | Compile Once Run Everywhere : compiler un programme une fois et le charger sur des noyaux différents. |
À retenir
Section intitulée « À retenir »- eBPF exécute vos programmes dans le noyau Linux, déclenchés par des événements (appel système, paquet, fonction), sans module ni recompilation.
- Un vérificateur prouve qu'un programme est sûr avant de le charger : pas de boucle infinie, pas d'accès mémoire interdit. C'est ce qui rend la technologie acceptable.
- eBPF observe et agit sans instrumenter le code et sans quitter le noyau, d'où sa performance.
- C'est la brique commune sous Cilium (réseau), bpftrace et Parca (observabilité), Falco et Tetragon (sécurité).
- Le contenu francophone sur le sujet est rare et daté : ce hub vise à devenir la référence, avec des labs validés en VM, jamais en conteneur.
- eBPF est puissant et sensible : le hub documente aussi sa surface d'attaque et son durcissement.