
Implémentation de recherche démontrant l'interaction avec le sous-système eBPF de Linux liée à la CVE-2021-3490. Inclut la création de cartes BPF, des wrappers d'appels système, la configuration d'espaces de noms et l'analyse du vérificateur. À des fins éducatives et de recherche en sécurité uniquement.
Implémentation de recherche démontrant l'interaction avec le sous-système eBPF de Linux lié à CVE-2021-3490. Inclut la création de maps BPF, des wrappers d'appels système, la configuration des espaces de noms et l'analyse du vérificateur. À des fins éducatives et de recherche en sécurité uniquement.
CVE-2021-3490 – Analyse du suivi des bornes du vérificateur eBPF Aperçu
Ce dépôt contient une implémentation en C explorant le sous-système eBPF du noyau Linux en relation avec CVE-2021-3490, une vulnérabilité impliquant un suivi incorrect des bornes 32 bits dans le vérificateur eBPF.
L'objectif de ce projet est de comprendre comment l'appel système bpf() fonctionne en interne, comment les maps BPF sont créées et gérées depuis l'espace utilisateur, et comment le vérificateur gère les contraintes de registres. Il s'agit d'un projet de recherche et d'apprentissage axé sur les internes du noyau et l'analyse de sécurité.
Ce code n'est pas destiné à une utilisation en production.
Contexte
eBPF permet aux programmes de l'espace utilisateur de charger du bytecode vérifié dans le noyau Linux. Avant l'exécution, le vérificateur du noyau vérifie que le programme :
Dans les versions vulnérables du noyau, le vérificateur suivait incorrectement les bornes 32 bits lors de certaines opérations ALU. Cette faille pouvait permettre à des programmes conçus spécialement de contourner la logique de validation.
Pour les détails officiels :
NVD : https://nvd.nist.gov/vuln/detail/CVE-2021-3490
Ubuntu Security Notice : https://ubuntu.com/security/CVE-2021-3490
Red Hat Advisory : https://access.redhat.com/security/cve/CVE-2021-3490
Ce que ce projet démontre
Cette implémentation se concentre sur :
Elle est conçue pour aider à comprendre comment l'espace utilisateur interagit avec l'infrastructure BPF du noyau.
Ce dépôt n'inclut pas de logique automatisée de charge utile d'exploitation.
Environnement testé
Ubuntu 20.10 (Groovy)
Noyau Linux 5.8.0-48-generic
Vous pouvez vérifier votre version du noyau avec :
uname -r
Le comportement peut différer sur les noyaux patchés ou plus récents.
Construction
Compilez en utilisant GCC :
gcc -o exploit exploit.c -lpthread
Aucune bibliothèque externe n'est requise au-delà des en-têtes Linux standard.
Utilisation
Exécutez le programme :
./exploit
Le programme va :
Note de sécurité
Ce projet est destiné à :
N'exécutez pas ce code sur des systèmes sans autorisation appropriée.
Objectifs d'apprentissage
Grâce à ce projet, vous pouvez comprendre :