Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-46242 — Vérificateur de preuve de concept Aarch64 pour CVE-2026-46242 'Bad Epoll', déclenchant la course use-after-free close-vs-close d'epoll du noyau Linux pour valider l'élévation de privilèges locale. | Kitploit
Outils/GitHubGitHub/binarymasc/cve-2026-46242
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation de Binaires
GitHubbinarymasc/cve-2026-46242

CVE-2026-46242

Vérificateur de preuve de concept Aarch64 pour CVE-2026-46242 'Bad Epoll', déclenchant la course use-after-free close-vs-close d'epoll du noyau Linux pour valider l'élévation de privilèges locale.

Voir le dépôt
il y a 4 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-46242 — "Bad Epoll"

Ce dépôt est un validateur Bad Epoll pour les noyaux aarch64, basé sur un exploit existant déjà pour x86.

Élévation de privilèges locale du noyau Linux via une course (race condition) Use-After-Free dans epoll

ChampDétail
CVECVE-2026-46242
SurnomBad Epoll
TypeUse-After-Free (UAF) via une condition de course
CVSS7.8 (Élevé)
ImpactÉlévation de privilèges locale → root
Noyaux affectés5.10 – 6.11 (LTS & COS)
Sous-systèmefs/eventpoll.c (ep_remove() / chemin de fermeture)

Résumé de la vulnérabilité

Une condition de course existe dans le sous-système epoll du noyau Linux lors d'opérations concurrentes close() sur des descripteurs de fichiers surveillés et surveillants. Lorsque deux chemins de fermeture s'exécutent simultanément :

  1. Un chemin libère un objet eventpoll via ep_remove().
  2. L'écriture en attente hlist_del_rcu() de l'autre chemin atterrit sur la mémoire déjà libérée.

Cela produit une Use-After-Free qui corrompt la liste refs de l'eventpoll récupéré, laissant un pointeur dangling epi->ffd.file dans le waiter epoll survivant — la base de la chaîne d'exploitation complète.


Déroulement de l'exploitation

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│ 1. Fuite KASLR       (canal auxiliaire prefetch via libxdk) │
├─────────────────────────────────────────────────────────┤
│ 2. Déclenchement de la course (UAF close-vs-close sur eventpoll) │
│    ├─ Minuteur adaptatif : phases stat/exec calibrent à l'avance │
│    ├─ False-sharing : dup()+close() élargit la fenêtre de course │
│    └─ Oracle :         EPOLL_CTL_ADD profondeur-3 → ELOOP ?    │
├─────────────────────────────────────────────────────────┤
│ 3. Réclamation       (eventpoll libéré → ep_uaf_target)  │
│    └─ epi->ffd.file dangling dans ep_uaf_waiter           │
├─────────────────────────────────────────────────────────┤
│ 4. Cross-Cache       (slab filp → buddy → pipe_buffer)  │
│    ├─ Vider la liste partielle par CPU                    │
│    ├─ Libérer les objets englobants → page slab libérée  │
│    └─ Réclamer comme pages de pipe (256 × 4 Ko)         │
├─────────────────────────────────────────────────────────┤
│ 5. AAR contraint   (fdinfo ino:/sdev: comme oracle de lecture) │
│    ├─ Spray de faux fichiers forge struct file dans le pipe │
│    ├─ Lecture 8 octets : ino: ← i_ino à un décalage contrôlé │
│    ├─ Lecture 4 octets : sdev: ← curseur sigaltstack(sas_ss_sp) │
│    └─ Parcours : init_task → trouver la tâche exploitée → résoudre │
│       files → fdt → fd[] → pipe_buffer → struct page   │
├─────────────────────────────────────────────────────────┤
│ 6. Contrôle RIP       (détournement f_op→poll → JOP → ROP) │
│    ├─ Forger f_op = virt, f_count = virt - 1             │
│    ├─ Chaîne de pivot JOP fait atterrir rsp sur une page contrôlée │
│    └─ ROP libxdk : commit_creds(init_cred) + changement de ns │
├─────────────────────────────────────────────────────────┤
│ 7. Ret2Usr           execve("/bin/bash") en root        │
└─────────────────────────────────────────────────────────┘

Compilation

root@kitploit:~
# aarch64 (cross-compilation ou natif)
aarch64-linux-gnu-gcc -O2 -Wall -pthread -march=armv8-a \
    race_check_aarch64.c -o race_check

Utilisation

root@kitploit:~
./race_check [timeout_seconds]   # défaut : 300 s (5 min)
./race_check 120                 # délai d'expiration de 2 minutes

Codes de sortie

CodeSignification
0Course gagnée — le noyau est vulnérable
1Délai d'expiration — course non détectée (faux négatif possible, ne prouve pas que le noyau est corrigé)

Références

  • PoC original (J-jaeyoung)
  • NVD — CVE-2026-46242

⚠️ Avertissement : Ce dépôt est fourni uniquement à des fins éducatives et de recherche en sécurité autorisée. Toute utilisation non autorisée de cet exploit contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas explicitement l'autorisation de tester est illégale.

Télécharger l’outil