
Système simulé sûr et contrôlé imitant CVE-2021-4034 (PwnKit) avec lecture/écriture hors limites, injection de variables d'environnement et détection des défenses du noyau pour une pratique d'exploitation éducative.
Ce projet est un système simulé reproduisant le principe de fonctionnement central de la vulnérabilité CVE-2021-4034 (Lecture/Écriture hors limites) qui s'est produite dans le démon pkexec sous Linux. Sans élévation réelle des privilèges SUID, il simule en toute sécurité, dans un environnement contrôlé, le mécanisme de débordement de la zone mémoire des variables d'environnement et d'injection de charge utile malveillante.
En particulier, ce système simulé détecte le mécanisme de défense du noyau Linux moderne (le fait d'insérer de force une chaîne vide lorsque qu'un tableau vide est passé, créant ainsi argc=1) et compense le décalage pour imiter avec succès l'ancien environnement mémoire vulnérable.
cve-2021-4034-mock/
├── README.md # Description du projet et guide d'exécution
├── src/
│ ├── mock_pkexec.c # Code source du démon cible dont la validation de l'argument (argc) est omise
│ └── exploit.c # Code source de l'attaquant qui transmet la charge utile via execve
└── bin/ # Chemin de stockage des exécutables compilés (créé lors de la construction)
Dans le terminal, placez-vous dans le répertoire racine du projet, puis exécutez les commandes suivantes une par une pour compiler le code source.
# 1. Création du dossier bin qui contiendra les exécutables
mkdir -p bin
# 2. Compilation du programme cible (système simulé)
gcc -Wall -Wextra -o bin/mock_pkexec src/mock_pkexec.c
# 3. Compilation du script d'exploitation
gcc -Wall -Wextra -o bin/exploit src/exploit.c
Si la compilation réussit, les exécutables mock_pkexec et exploit seront créés dans le dossier bin/.
Lorsqu'il est exécuté avec des arguments normaux, cela prouve que la logique de défense échoue à la validation des privilèges ou se termine en toute sécurité.
./bin/mock_pkexec test_argument
[OK].Exécutez le script d'attaque pour forcer la transmission de la charge utile argc=0 (tableau NULL) et déclencher la vulnérabilité.
./bin/exploit
argc à 1 et compense dynamiquement l'index de référence mémoire.argv pour empiéter sur la zone adjacente envp.GCONV_PATH) est écrasée avec succès dans la mémoire système, et un avertissement rouge [FATAL] ENVIRONMENT CORRUPTION DETECTED! s'affiche.Après les tests, supprimez les fichiers binaires compilés avec la commande suivante.
rm -rf bin/