eBPF en défense : observer sans alourdir
En défense, on vit un vieux compromis : plus on veut voir, plus on alourdit. Chaque agent, chaque hook, chaque capture de paquets a un coût · et finit par ralentir précisément ce qu’il est censé protéger. eBPF est la première techno qui m’a fait reposer la question autrement : voir depuis le noyau, sans le freiner.
eBPF, c’est la possibilité de charger de petits programmes vérifiés directement dans le noyau Linux, déclenchés sur des événements précis : un appel système, l’ouverture d’un fichier, une connexion réseau. Le programme s’exécute là où l’information naît, filtre à la source, et ne remonte que l’essentiel. On échange la lourdeur d’un agent qui aspire tout contre la finesse d’une sonde qui ne regarde que ce qui compte.
Côté défense, l’écosystème a mûri vite. Falco pour des règles de comportement (un shell qui s’ouvre dans un conteneur, un binaire qui touche /etc/shadow), Tetragon pour relier les événements à l’identité des processus et des charges Kubernetes, bpftrace pour une question ponctuelle sans rien installer de permanent. Le point commun : une visibilité au niveau syscall avec un surcoût que, la plupart du temps, on ne mesure même pas.
Tout n’est pas magique. Le vérificateur du noyau est strict, la courbe d’apprentissage est réelle, et une sonde mal écrite reste une sonde dans un chemin critique. Mais le rapport signal/bruit a changé de catégorie. Pour de l’observabilité de sécurité · détecter un comportement plutôt qu’une signature, comprendre ce qu’un processus a vraiment fait · eBPF tient une promesse que les agents classiques n’ont jamais pu tenir : être partout sans peser nulle part.
# Tracer chaque exec() avec le processus parent · bpftrace
bpftrace -e 'tracepoint:syscalls:sys_enter_execve {
printf("%s -> %s\n", comm, str(args->filename));
}'