Détection d’exploits du noyau Linux avec eBPF

Magazine
Marque
MISC
Numéro
137
Mois de parution
janvier 2025
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 protéger le noyau soulève de...

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