Détection d’exploits du noyau Linux avec eBPF

Spécialité(s)


Résumé

Cela fait bientôt plus de 10 ans qu’Android (un système d’exploitation fondé sur Linux) domine le marché du téléphone portable [1]. En plus de cela, Linux fait fonctionner environ 85 % des sites internet répertoriés par W3Techs [2] (un service indépendant de recensement des technologies du Web). Il est donc naturel que ce système d’exploitation soit devenu une cible de choix ; en témoigne l’explosion de publications de vulnérabilités sur Linux ces dernières années [3]. Dans cet article, nous allons nous intéresser à l’utilisation d’eBPF pour lutter contre les exploits sous Linux, montrant en quoi cette nouvelle technologie peut aider à protéger le noyau.


Le noyau Linux est sans cesse la cible d'attaques de plus en plus sophistiquées [4]. La fréquence à laquelle de nouvelles vulnérabilités sont découvertes [3] met en évidence la nécessité de mettre en place des solutions de sécurité proactives et efficaces. Si les mises à jour régulières du noyau sont essentielles, elles sont difficiles à déployer à grande échelle, et ne suffisent pas à garantir une protection complète, notamment face aux menaces dites « zero-day » (c’est-à-dire des vulnérabilités inconnues des développeurs du noyau).

Ces dernières années, de nombreuses techniques ont été développées pour renforcer la sécurité sous Linux. Parmi elles, eBPF, un sous-système de Linux permettant d’instrumenter le noyau, s'est imposé comme une technologie prometteuse, offrant de nouvelles possibilités pour la détection et la prévention des attaques en espace utilisateur [5]. Cependant, l'utilisation d'eBPF pour…

Cet article est réservé aux abonnés. Il vous reste 96% à découvrir.
S'abonner à Connect
  • 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
Je m'abonne
Références

[1] Mobile Operating System Market Share Worldwide, https://gs.statcounter.com/os-market-share/mobile/worldwide/#monthly-201401-202404

[2] Usage statistics and market shares of operating systems for websites : https://w3techs.com/technologies/overview/operating_system

[3] Statistiques sur les vulnérabilités du noyau Linux de 2014 à 2024 : https://www.cvedetails.com/vendor/33/Linux.html

[4] Flipping Pages: An analysis of a new Linux vulnerability in nf_tables and hardened exploitation techniques : https://pwning.tech/nftables/

[5] Lorenzo Fontana, David Calavera. Linux Observability with BPF, novembre 2019

[6] Kernel address space layout randomization, https://lwn.net/Articles/569635/

[7] x86 NX support, https://lwn.net/Articles/87814/

[8] Supervisor mode access prevention, https://lwn.net/Articles/517475/

[9] The current state of kernel page-table isolation, https://lwn.net/Articles/741878/

[10] Spectre et Meltdown, https://meltdownattack.com/

[11] Linux Kernel Runtime Guard, https://lkrg.org/

[12] Control-flow integrity for the kernel, https://lwn.net/Articles/810077/

[13] Intégrité du flux de contrôle du noyau sur Android,
https://source.android.com/docs/security/test/kcfi?hl=fr

[14] Ajout de kCFI dans la configuration de sécurité renforcée du noyau, https://lore.kernel.org/lkml/202405111234.6F2AB1F@keescook/

[15] Sécurité à l’exécution sous Linux, https://connect.ed-diamond.com/misc/misc-117/securite-a-l-execution-sous-linux

[16] Code source de Tracee, https://github.com/aquasecurity/tracee

[17] Code source de Tetragon, https://github.com/cilium/tetragon

[18] Code source de l’agent de Sécurité de Datadog, https://github.com/DataDog/datadog-agent/tree/main/pkg/security

[19] Détection de l’altération de la table des appels systèmes dans KRIe, https://github.com/Gui774ume/krie/blob/695f81a553029f776a38d11d78e3755a943ecff1/ebpf/krie/krie/syscall_check.h#L70

[20] Détection de l’altération des paramètres du noyau dans KRIe, https://github.com/Gui774ume/krie/blob/695f81a553029f776a38d11d78e3755a943ecff1/ebpf/krie/krie/kernel_parameter.h#L38

[21] Learning Linux Kernel Exploitation, https://lkmidas.github.io/posts/20210123-linux-kernel-pwn-part-1/

[22] Kernel exploit practice, https://github.com/pr0cf5/kernel-exploit-practice/tree/master

[23] Patch du noyau 5.3 responsable de l’ajout de « pinned » bits sur le registre CR4, https://github.com/torvalds/linux/commit/873d50d58f67ef15d2777b5e7f7a5268bb1fbae2

[24] Linux Kernel 5.3 changelog, https://cdn.kernel.org/pub/linux/kernel/v5.x/ChangeLog-5.3

[25] The Ubuntu lifecycle and release cadence,
https://ubuntu.com/about/release-cycle#ubuntu-kernel-release-cycle

[26] Module vulnérable d’exemple pour une attaque ROP, https://github.com/Gui774ume/krie/blob/9e18daa31b65e1338d2cfc26326a15ca1ebe77a2/example/module/vuln_device/vuln_device.c#L83

[27] Code source de ROPgadget, https://github.com/JonathanSalwan/ROPgadget

[28] Tetragone: a lesson in security fondamentals, https://grsecurity.net/tetragone_a_lesson_in_security_fundamentals



Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous