
Modèle d'exploit pédagogique et non fonctionnel du noyau Linux pour CVE-2024-1086 — recherche en sécurité et enseignement en laboratoire uniquement (à utiliser uniquement dans des machines virtuelles contrôlées).
🛡️ Exploit Linux kernel pédagogique et abouti pour la recherche en sécurité
Ce projet fournit un modèle robuste et non fonctionnel pour l'étude de la CVE-2024-1086, une vulnérabilité use-after-free dans le composant netfilter: nf_tables du noyau Linux, permettant une élévation de privilèges locale. Conçu pour les chercheurs en sécurité et les étudiants, il combine un modèle d'exploit en C avec un wrapper Java amélioré pour des diagnostics, une configuration et une exécution fiables, destiné à être utilisé uniquement dans un environnement de laboratoire contrôlé (par exemple, une VM avec un noyau vulnérable).
⚠️ Avertissement : Le code C est non fonctionnel, utilise des valeurs factices et nécessite des modifications importantes pour fonctionner. Toute utilisation non autorisée sur des systèmes de production ou sans permission est illégale et contraire à l'éthique. Utilisez-le de manière responsable pour faire progresser les connaissances en sécurité du noyau.
nf_tables--check, --run, --dry-run, --payload et --confignf_tables┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 🔍 Java Diagnostics │───▶│ 💻 Exploit Runner │───▶│ 🔐 C Exploit Template│
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 🔒 System Validation│───▶│ 📝 Logging Engine │───▶│ 🛡️ Kernel Netlink │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ 🧪 Test Suite │ │ 📜 Config Management│
└─────────────────────┘ └─────────────────────┘
Le projet intègre un wrapper Java pour des diagnostics, une journalisation et une configuration sécurisés, avec un modèle d'exploit C simulant l'interaction avec le noyau via les sockets Netlink, soutenu par une suite de tests pour la validation.
Assurez-vous d'avoir les outils suivants installés :
sudo apt install build-essential)sudo apt install openjdk-11-jdk)org.json:json:20230227 (via Maven ou JAR)commons-cli:commons-cli:1.5.0 (via Maven ou JAR)Système d'exploitation :
CONFIG_USER_NS=y)nf_tables activé (CONFIG_NF_TABLES=y)Environnement de laboratoire :
Cloner le dépôt
git clone https://github.com/karim4353/CVE-2024-1086-Exploit.git
cd CVE-2024-1086-Exploit
Installer les dépendances
sudo apt update
sudo apt install build-essential openjdk-11-jdk
# Download libraries or add to Maven
wget https://repo1.maven.org/maven2/org/json/json/20230227/json-20230227.jar
wget https://repo1.maven.org/maven2/commons-cli/commons-cli/1.5.0/commons-cli-1.5.0.jar
Compiler l'exploit C
make
Exécuter le wrapper Java
javac -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" -d . src/main/java/com/example/cve20241086/ExploitRunner.java
java -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" com.example.cve20241086.ExploitRunner --run
Options : --check, --run, --dry-run, --payload <path>, ,
Pour une installation détaillée, consultez le Guide d'installation.
CVE-2024-1086-Exploit/
├── src/
│ ├── main/
│ │ ├── c/
│ │ │ └── exploit.c # 🔐 C exploit template
│ │ ├── java/
│ │ │ └── com/example/cve20241086/
│ │ │ └── ExploitRunner.java # 🔍 Java wrapper
│ │ └── resources/
│ │ └── config.json # 📜 Exploit configuration
│ └── test/
│ ├── c/
│ │ └── test_exploit.c # 🧪 C test cases
│ └── java/
│ └── com/example/cve20241086/
│ └── ExploitRunnerTest.java # 🧪 Java test cases
├── Makefile # 🛠️ Build script
├── README.md # 📝 This file
├── CONTRIBUTING.md # 🤝 Contribution guidelines
├── LICENSE # 📄 MIT license
└── tests/
└── run_tests.sh # 🧪 Test runner script
Testez le projet dans un environnement de laboratoire sécurisé :
# Check system vulnerability
java -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" com.example.cve20241086.ExploitRunner --check
# Run exploit (non-functional)
java -cp ".:json-20230227.jar:commons-cli-1.5.0.jar" com.example.cve20241086.ExploitRunner --run
# Run tests
./tests/run_tests.sh
# Clean build artifacts
make clean
Nous accueillons favorablement les contributions pour améliorer ce projet pédagogique ! Consultez les Directives de contribution pour plus de détails sur :
nf_tablesexploit_log.txtConfigurez via src/main/resources/config.json :
{
"exploitBinary": "./exploit",
"targetKernel": "5.15",
"payloadPath": "/tmp/payload.sh",
"logLevel": "DEBUG",
"timeoutSeconds": "30"
}
Consultez le Guide de configuration.
Problèmes courants :
make clean && make.sysctl -w kernel.unprivileged_userns_clone=1 et lsmod | grep nf_tables.json-20230227.jar et commons-cli-1.5.0.jar dans le classpath.Consultez la FAQ ou ouvrez une issue.
Sous licence MIT - voir LICENSE.
🛡️ Conçu avec ❤️ pour la communauté de recherche en sécurité
--config <file>--helpExécuter les tests
./tests/run_tests.sh
| Composant | Minimum | Recommandé |
|---|
| Version du noyau | 5.14 | 5.15.x < 5.15.148 |
| RAM | 512 Mo | 1 Go+ |
| CPU | 1 GHz | 2 GHz+ |
| Espace disque | 100 Mo | 500 Mo+ |
| Version Java | JDK 11 | JDK 17 |