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-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

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-for-OnePlus15T

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

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

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

root@kitploit:~
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

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

root@kitploit:~
# 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

root@kitploit:~
# 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)

root@kitploit:~
/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)

root@kitploit:~
/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

root@kitploit:~
/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.

root@kitploit:~
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

Structures vérifiées par BTF

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 :

root@kitploit:~
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 :

root@kitploit:~
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

root@kitploit:~
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

root@kitploit:~
Target: child process cred pointer
Method: 1. fork child → perf_find_task() locate task_struct
        2. calculate cred field offset
        3. child-node PI write → cred = init_cred (uid=0, full caps)
        4. clear seccomp (TIF_SECCOMP + seccomp struct zeroed)

Une vérification de relecture des capabilities est effectuée après l'écrasement de cred.

6. Client Mini ADB intégré

src/core/miniadb.c — client léger du protocole ADB pour le mode bootstrap :

root@kitploit:~
1. TCP connect 127.0.0.1:5555
2. A_CNXN → connection request
3. A_AUTH → RSA token challenge
4. dlopen("libcrypto.so") → PEM_read_bio_RSAPrivateKey → RSA_sign
5. A_AUTH (AUTH_SIGNATURE) → signed response
6. A_CNXN → connection established
7. A_OPEN "shell:/data/local/tmp/a/e" → full exploit

Prend en charge les algorithmes de signature SHA-1 et SHA-256.


Structure des fichiers

root@kitploit:~
ghostlock-oneplus/
├── Makefile                        # Build configuration (NDK cross-compile)
├── README.md                       # Documentation
├── src/
│   ├── core/                       # Core exploit code
│   │   ├── main.c                  # Entry point: two-stage write + root shell
│   │   ├── fops.c                  # FOPS/CFI mode: pselect route, PI write, KASLR leak
│   │   ├── util.c                  # Utilities: heap spray, KASLR, kernel R/W primitives
│   │   ├── slide.c                 # SLIDE mode: boot_id KASLR leak + pselect route
│   │   ├── pipe.c                  # Pipe buffer physical memory R/W (physrw)
│   │   ├── root.c                  # Cred overwrite, seccomp clear, root child mgmt
│   │   ├── miniadb.c              # Built-in ADB client (TCP + RSA auth)
│   │   ├── common.h               # Global macros, structs, declarations, constants
│   │   ├── target.h               # Target memory layout / struct offsets / KASLR params
│   │   ├── offset.h               # Compile-time target config bridge (#include TARGET_CONFIG_H)
│   │   └── kernelsnitch/          # KernelSnitch — mm_struct address leak
│   │       ├── kernelsnitch.h     # Core algorithm: futex hash collision + brute-force
│   │       ├── futex_hash.h       # Futex hash function
│   │       ├── timeutils.h        # CPU timestamp measurement (RDTSC)
│   │       └── utils.h            # Helper macros (pr_info / SYSCHK / ASSERT etc.)
│   └── devices/                   # Device offset tables
│       ├── offsets.h              # Aggregate all device offsets (lookup table + sentinel)
│       ├── ace6t/offsets.h        # OnePlus Ace 6T offsets (2 kernel versions)
│       └── op15/offsets.h         # OnePlus 15 offsets (1 kernel version)
└── tools/                         # Offset extraction toolchain
    ├── extract_target.py          # Extract kallsyms global symbol offsets (28 items)
    └── extract_btf.py             # Extract BTF struct field offsets (57 items)

Aperçu des modules principaux


Ajout de nouveaux appareils

Ce dépôt a été modifié ; consultez le dépôt d'origine pour plus de détails.


FAQ

Q : Aucune sortie à l'exécution ?

Assurez-vous d'exécuter dans un shell ADB. Le contexte applicatif nécessite --bootstrap.

Q : « no offsets for this kernel » ?

Votre version du noyau n'est pas encore prise en charge. Suivez Ajout de nouveaux appareils pour extraire les offsets et recompiler.

Q : L'écriture 1 échoue sans cesse ?

  • Assurez-vous d'être épinglé au bon cœur CPU (macro CORE)
  • Ajustez le timing PSELECT_ENTER_DELAY_USEC
  • Vérifiez la présence de processus interférents

Q : L'écriture 2 renvoie 0 via perf ?

  • Vérifiez si seccomp bloque perf_event_open (utilisez --bootstrap en contexte applicatif)
  • Vérifiez que le contournement de KASLR a réussi (kaslr_base valide)

Q : KernelSU ne se charge pas ?

  • Confirmez que ksud existe et est exécutable
  • Vérifiez l'intégrité du fichier de politique réseau (correctif load_policy)

Licence

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

Télécharger l’outil
libksud.so
Version CITéléchargez depuis les versions ReSukiSU CI (ksud-aarch64-linux-android.zip)
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
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
ModuleFichier(s)Responsabilité
Entréemain.cAnalyse de la CLI, répartition W1/W2, flux bootstrap
Route PIfops.c / slide.cDisposition de la pile pselect/select, manipulation de la chaîne futex PI
KASLRutil.c / fops.c / slide.cContournement double mode : fuite de boot_id + fuite de la table fops
Heap Sprayutil.cAllocation de pages d'ordre 3, spray SKB, disposition des objets falsifiés
Phys R/Wpipe.cDétournement de tampons de pipe, accès mémoire physique arbitraire
Priv Escroot.cÉcrasement de cred, vérification des capabilities, effacement de seccomp
ADBminiadb.cClient léger du protocole ADB, authentification RSA
Moteur de fuitekernelsnitch/Collision de hachage futex pour la localisation de mm_struct