En quelques années, eBPF (Extended Berkeley Packet Filter) est devenu un des sous-systèmes les plus actifs du noyau Linux. Grâce à ses nombreuses promesses de sûreté de fonctionnement et d’observabilité, eBPF a beaucoup gagné en popularité auprès des outils de surveillance réseau et système. Malheureusement, cette nouvelle technologie a involontairement introduit un risque majeur pour Linux : une considérable simplification du développement des rootkits.
Depuis son introduction dans le noyau Linux (Linux 3.18), eBPF a beaucoup évolué, passant d’une technologie de surveillance réseau à un outil de traçage complet pour n’importe quel événement du noyau. Encore en actif développement aujourd’hui, eBPF commence également à faire son apparition dans des outils de sécurité à l’exécution, tirant parti de son impressionnante capacité d’observabilité pour remonter des alertes de sécurité de plus en plus complexes, et facilitant la réponse à incident grâce à son contexte applicatif. Malheureusement, cette étonnante capacité d’introspection du noyau Linux a également considérablement facilité l’implémentation des principales fonctionnalités d’un rootkit : de l’obfuscation de processus à l’injection et l’exfiltration réseau, de l’évasion d’outils de type RASP (Runtime application self-protection) à l’évasion de conteneurs. Dans cet article, nous évoquerons comment eBPF simplifie le...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première
[1] Lorenzo Fontana, David Calavera. « Linux Observability with BPF », O'Reilly Media, novembre 2019
[2] Jeff Dileo, « Evil eBPF Practical Abuses of In-Kernel Bytecode Runtime », Defcon 27,
https://media.defcon.org/DEF%20CON%2027/DEF%20CON%2027%20presentations/DEFCON-27-Jeff-Dileo-Evil-eBPF-In-Depth.pdf
[3] eBPF helpers, Manuel Linux, https://man7.org/linux/man-pages/man7/bpf-helpers.7.html
[4] Glipc pwn, Jeff Dileo, https://github.com/nccgroup/ebpf/tree/master/glibcpwn
[5] Ajout de bpf_probe_write_user dans le noyau Linux, https://github.com/torvalds/linux/commit/96ae5227
[6] Guillaume Fournier, Sylvain Afchain, Sylvain Baubeau, « With friends like eBPF, who needs ennemies ? », Blackhat 2021, https://www.blackhat.com/us-21/briefings/schedule/#with-friends-like-ebpf-who-needs-enemies-23619
[7] Guillaume Fournier, Sylvain Afchain, Sylvain Baubeau, « eBPF, I thought we were friends ! », Defcon 29,
https://defcon.org/html/defcon-29/dc-29-speakers.html#fournier
[8] Code source de ebpfkit, Guillaume Fournier, https://github.com/Gui774ume/ebpfkit
[9] Introduction to netfilter / iptables, lwn.net, https://lwn.net/Articles/11547/
[10] The return of nftables, Jonathan Corbet, lwn.net, https://lwn.net/Articles/564095/
[11] « Bvp47, Top-tier backdoor of US NSA Equation Group », Pangu Lab,
https://github.com/blackorbird/APT_REPORT/blob/master/EquationGroup/The_Bvp47_a_top-tier_backdoor_of_us_nsa_equation_group.en.pdf
[12] PWC Cyber Threats 2021, PricewaterhouseCoopers,
https://www.pwc.com/gx/en/issues/cybersecurity/cyber-threat-intelligence/cyber-year-in-retrospect/yir-cyber-threats-report-download.pdf
[13] Lockdown, Jonathan Corbet, lwn.net, https://lwn.net/Articles/791863/
[14] Code source de ebpfkit-monitor, Guillaume Fournier, https://github.com/Gui774ume/ebpfkit-monitor
[15] Schéma des programmes et hashmaps eBPF d’ebpfkit, Guillaume Fournier,
https://github.com/Gui774ume/ebpfkit-monitor/blob/9f7dfa7db96642a50855044a752edc504d5dc7c9/graphs/output.svg
[16] Code source de Volatility, https://github.com/volatilityfoundation/volatility
[17] Andrew Case, Golden Richard, « Fixing a Memory Forensics Blind Spot: Linux Kernel Tracing », Blackhat 2021, https://www.blackhat.com/us-21/briefings/schedule/#fixing-a-memory-forensics-blind-spot-linux-kernel-tracing-23603
[18] Introduction de CAP_BPF, Alexei Starovoitov, https://lwn.net/Articles/820560/
[19] LSM stacking and the future, Jake Edge, https://lwn.net/Articles/804906/