Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
GhostLock-for-OnePlus15T — (CVE-2026-43499)Exploit noyau pour OnePlus 15T avec Bootloader non débloqué. | Kitploit
Outils/GitHubGitHub/cuteaplane/ghostlock-for-oneplus15t
Sécurité AndroidEscalade de PrivilègesAnalyse des VulnérabilitésExploitationSécurité MobileDéveloppement de Charges UtilesExploitation de Binaires
GitHubcuteaplane/ghostlock-for-oneplus15t

GhostLock-for-OnePlus15T

(CVE-2026-43499)Exploit noyau pour OnePlus 15T avec Bootloader non débloqué.

Voir le dépôt
121113il y a 2 moisVérifié par Kitploit

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 — OnePlus 15T

中文

Exploit noyau ciblant les appareils OnePlus 15T à bootloader verrouillé. Utilise CVE-2026-43499 pour obtenir un accès root sans déverrouiller le bootloader ni modifier boot.img.

Uniquement à des fins de recherche en sécurité autorisée et d'éducation.

Modifié à partir du dépôt GhostLock-for-OnePlus d'origine, adapté à la disposition mémoire physique et au timing CPU de l'OnePlus 15T (PLZ110 / SM8850 / Snapdragon 8 Elite).


Table des matières

  • Aperçu de la vulnérabilité
  • Appareils pris en charge
  • Prérequis
  • Compilation
  • Utilisation
  • Modes d'exécution
  • Détails techniques
  • Structure des fichiers
  • Ajout de nouveaux appareils
  • FAQ

Aperçu de la vulnérabilité

ÉlémentDétail
CVECVE-2026-43499
TypeFutex PI (héritage de priorité) Use-After-Free
PérimètreNoyau Linux 2.6.39 ~ 7.1
Corrigé dansMainline 7.1 (commit 3bfdc63936dd)
Statut AndroidGKI 6.12.x toujours vulnérable

Cause racine

L'appel système pselect6 copie fd_set sur la pile du noyau. Combiné au mécanisme de waiter futex PI, une trame de pile libérée peut être réallouée en tant que structure rt_mutex_waiter. Lors de la traversée de la chaîne PI, le rééquilibrage de l'arbre rb écrit des données contrôlées à des adresses noyau arbitraires.

Chaîne

futex PI UAF (CVE-2026-43499)
  ├─ Forge rt_mutex_waiter object
  ├─ Control kernel stack via pselect/select fd_set layout
  ├─ Trigger rt_mutex PI operation for arbitrary write
  ├─ Write 1: selinux_state.enforcing = 0
  └─ Write 2: cred → init_cred (uid=0, full capabilities)

Appareils pris en charge

AppareilNom de codeSoCNoyauFirmwareStatut
OnePlus 15TPLZ110SM8850 (Snapdragon 8 Elite)6.12.38-android16-5-g844001fb8721-ab14552068-4kColorOS 16.0.9.400✅ Vérifié

Pour l'Ace 6T et l'OnePlus 15, consultez le dépôt d'origine.


Prérequis

ksud (requis pour KernelSU)

GhostLock gère l'élévation de privilèges. L'installation de KernelSU nécessite ksud (fourni avec kernelsu.ko spécifique au KMI) :

SourceRemarques
APK ReSukiSU (recommandé)Installez ReSukiSU ; l'APK intègre libksud.so
Version CITéléchargez depuis les versions ReSukiSU CI (ksud-aarch64-linux-android.zip)

Sans ksud, l'exploit obtient toujours un shell root uid=0, mais KernelSU ne sera pas installé et su ne persistera pas.


Compilation

Prérequis

  • Android NDK (r25+)
  • Définissez ANDROID_NDK_HOME ou ANDROID_NDK_ROOT

Compilation

# Default (API 35)
make

# Specify API level
make API=34

# Specify NDK path
NDK=/path/to/android-ndk make

Artefact

ghostlock — exécutable ELF ARM64 lié statiquement.


Utilisation

Configuration unique

# 1. Enable ADB TCP mode
adb tcpip 5555

# 2. Push ADB key (required for bootstrap mode)
adb push ~/.android/adbkey /data/local/tmp/a/adbkey

# 3. Push the exploit
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e

Après le premier succès, resetprop définit automatiquement persist.adb.tcp.port=5555, ce qui permet des exécutions entièrement automatiques lors des redémarrages suivants.


Modes d'exécution

Exploit complet (contexte shell ADB)

/data/local/tmp/a/e
  • perf disponible, fuite précise de la task_struct enfant
  • En deux étapes : W1 désactive SELinux → W2 élévation de privilèges → chargement de KernelSU

Mode Bootstrap (contexte applicatif, seccomp restreint)

/data/local/tmp/a/e --bootstrap
  1. Écriture 1 → désactivation de SELinux
  2. Utilisez les permissions libérées pour activer ADB TCP 5555 via setprop
  3. Le client Mini ADB intégré se connecte à 127.0.0.1:5555
  4. Authentification RSA avec la clé poussée au préalable
  5. Exécution complète de l'exploit via le shell ADB (sans seccomp)

Écriture 1 uniquement

/data/local/tmp/a/e --write1
  • Jusqu'à 20 tentatives
  • Utile pour le débogage ou la désactivation temporaire de SELinux

Détails techniques

1. Correspondance du noyau à l'exécution

Les offsets sont stockés dans la table de consultation src/devices/offsets.h, indexée par uname -r. Le programme effectue la correspondance automatiquement au démarrage ; les noyaux inconnus sont rejetés.

static const struct kernel_offsets known_offsets[] = {
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14275539-4k", ...),
  OFFSETS_ENTRY("6.12.38-android16-5-...-ab14552068-4k", ...),
  OFFSETS_ENTRY("6.12.23-android16-5-...-ab14541642-4k", ...),
  { .uname_r = NULL }  /* sentinel */
};

Sources des offsets

TypeNombreExtraction
Symboles globaux kallsyms28tools/extract_target.py
Champs de structures BTF57tools/extract_btf.py
Valeurs dérivées9Calculées automatiquement
Constantes fixes12Codées en dur

Structures vérifiées par BTF

StructureChampsRôle
task_struct17Descripteur de processus, cred, seccomp
rt_mutex_waiter6Cible de falsification UAF
cred4Identifiants, capabilities
seccomp3État du filtre seccomp
pipe_inode_info11Opérations sur les tampons de pipe
file_operations13Table fops factice
mm_struct1Propriétaire du descripteur mémoire

2. Contournement de KASLR

Mode SLIDE — fuite de boot_id

Lorsque les pointeurs noyau sont restreints (kptr_restrict), fuitez l'adresse de base via boot_id écrasé avec une adresse noyau :

Read /proc/sys/kernel/random/boot_id
  └─ UUID contains nfulnl_logger address
      └─ KASLR slide = leaked_addr - image_offset
          └─ kaslr_base

Mode FOPS/CFI — fuite de la table fops

Lorsque le périphérique ashmem est accessible, utilisez les primitives de lecture/écriture configfs pour lire les pointeurs de fonction de la table fops ashmem et calculer l'offset KASLR.

3. Heap Spray du noyau

Falsifiez des objets noyau sur des pages d'ordre 3 (32 Ko) :

  • Fausses file_operations — détournement du pointeur fops du miscdevice ashmem
  • Faux rt_mutex_waiter — simulation d'un nœud waiter de la chaîne PI
  • Fausse task_struct — référence de tâche lors de la traversée PI
  • Faux rt_mutex (verrou) — informations waiter/propriétaire correctes

Implémenté via SKB (socket buffer) + KernelSnitch :

  • KernelSnitch — collision de hachage futex pour fuiter les adresses mm_struct
  • Spray SKB — sendmsg pour remplir le tas noyau

4. Lecture/écriture mémoire physique (Pipe)

Après avoir obtenu la base KASLR, utilisez les tampons de pipe pour un accès mémoire au niveau physique :

1. Locate pipe buffer in physmap
2. Forge pipe_buffer ops table pointing to known pipe_buf_ops
3. Hijack pipe_buffer.page to target physical address
4. Arbitrary physical read/write via normal pipe operations

Pris en charge : pipe_read64, pipe_write64, pipe_phys_read_data, pipe_phys_write_data

5. Écriture en deux étapes

Écriture 1 — désactivation de SELinux

Target: selinux_state.enforcing (offset 0x00)
Method: child-node PI write → forge waiter __rb_parent_color
        pointing to selinux_enforcing - 8
        rb-tree rebalance writes 0x00

Écriture 2 — élévation à root

Télécharger l’outil