
DirtyClone - preuve de concept d'escalade de privilèges locaux (LPE) ciblant une vulnérabilité liée au noyau/XFRM décrite dans la source comme CVE-2026-43503
DirtyClone est un outil de diagnostic et de preuve de concept pour l'escalade de privilèges locaux écrit en C. Il cible un vecteur d'exploitation lié au noyau/XFRM décrit dans la source sous le nom CVE-2026-43503 et est destiné uniquement à des recherches de sécurité autorisées dans des environnements contrôlés.
Ce dépôt contient :
L'implémentation actuelle effectue les étapes de haut niveau suivantes :
Cet outil est destiné uniquement aux tests de sécurité autorisés. L'exécuter sur des systèmes sans autorisation explicite peut être illégal et peut compromettre l'intégrité du système.
Installez d'abord le paquet de développement OpenSSL requis :
# Debian/Ubuntu
sudo apt-get install libssl-dev
# Fedora
sudo dnf install openssl-devel
# Arch Linux
sudo pacman -S openssl
Ensuite, compilez le binaire :
gcc -o dirtyclone dirtyclone.c -lcrypto -Wall -O2
Exécutez le programme avec :
./dirtyclone
Arguments optionnels :
./dirtyclone -q # mode silencieux
./dirtyclone -v # mode verbeux (par défaut)
./dirtyclone -h # afficher l'aide
Lors de l'exécution, le programme :
L'exploit est construit autour d'une idée simple : le programme prépare une charge utile ESP/XFRM conçue qui amène le noyau à déchiffrer des données dans une région mémoire adossée au cache de pages, puis vérifie si les octets du binaire SUID cible ont changé.
En termes pratiques, le programme effectue les actions suivantes :
/usr/bin/su, et le mappe en mémoire ;Il s'agit d'un flux de preuve de concept, pas d'un framework d'escalade de privilèges généraliste. Il est destiné à démontrer le mécanisme de l'exploit et à aider à vérifier si un noyau cible expose encore le comportement vulnérable.
L'exemple simplifié suivant montre le même concept à un niveau élevé :
#include <stdio.h>
#include <string.h>
static int dummy_exploit(unsigned char *target_bytes) {
unsigned char expected[] = {0x31, 0x0f, 0x05};
memcpy(target_bytes, expected, sizeof(expected));
return 0;
}
int main(void) {
unsigned char target[16] = {0};
dummy_exploit(target);
printf("Octets patchés : %02x %02x %02x\n", target[0], target[1], target[2]);
return 0;
}
Le vrai projet utilise le même principe, mais il conditionne la charge utile en un paquet de style ESP/XFRM et pilote le chemin du noyau via la pile réseau au lieu d'une simple copie mémoire.
Phase de configuration
Préparation XFRM
Construction de la charge utile
Phase de livraison
Vérification et exécution
L'implémentation inclut :
atexit et des gestionnaires de signaux,fork/execvp,La source attend un environnement Linux avec :
ip, iptables et modprobe disponibles sur le système,/usr/bin/su,Le programme est destiné à afficher un résumé PoC de diagnostic, puis soit :
Si l'exploit ne se déclenche pas, le programme imprime un message clair suggérant que le noyau est probablement patché.
Utilisez ce projet uniquement lorsque :
N'exécutez jamais ce code sur des systèmes de production ou des systèmes pour lesquels vous n'avez pas la permission d'auditer.
L'en-tête source identifie l'auteur comme MrAashish0x1 (gl1tch0x1). Le dépôt n'inclut pas de fichier de licence séparé, donc le code doit être traité comme du matériel de recherche plutôt que comme un logiciel de production.