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
cve-2026-43499 — PD2229B的43499(ghostlock)可行性研究 | Kitploit
Outils/GitHubGitHub/catxiaoshi/cve-2026-43499
Sécurité AndroidEscalade de PrivilègesAnalyse des VulnérabilitésExploitationRétro-ingénierieSécurité MobileExploitation de Binaires
GitHubcatxiaoshi/cve-2026-43499

cve-2026-43499

PD2229B的43499(ghostlock)可行性研究

Voir le dépôt
25il y a 1 moisPas 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

Résumé de l'échec de l'exploitation de GhostLock sur PD2229 (SM8475, 5.10.233 GKI)

一、Faits concernant la vulnérabilité et l'appareil

1.1 Informations de base sur CVE-2026-43499 (GhostLock)

ÉlémentValeur
Type de vulnérabilitéUse-After-Free sur la pile dans le chemin rt_mutex / futex PI
Version d'introductionLinux 2.6.39-rc1 (mai 2011, commit 8161239a8bcc)
Version corrigéeMainline 7.1 (commit 3bfdc63936dd), branches stables : 6.1.175 / 6.6.140 / 6.12.86 / 6.18.27 / 7.0.4
PrérequisCONFIG_FUTEX_PI=y (activé par défaut sur les noyaux grand public)
CVSS7.8 High
Stabilité de l'exploitation97 % sur la chaîne originale de NebuSec, root en ~5 secondes
Prime kernelCTF92 337 $ USD

Plage de noyaux affectés :

  • 2.6.39 ≤ Linux < 6.1.175 ✅ Affecté
  • 6.2 ≤ Linux < 6.6.140 ✅ Affecté
  • 6.7 ≤ Linux < 6.12.86 ✅ Affecté
  • 6.13 ≤ Linux < 6.18.27 ✅ Affecté
  • 6.19 ≤ Linux < 7.0.4 ✅ Affecté
  • Android GKI 5.10 absent de toutes les branches corrigées → le 5.10.233 du PD2229 est théoriquement affecté

1.2 Mesures effectuées sur l'appareil PD2229

ÉlémentValeur
SoCQualcomm SM8475 (Snapdragon 8 Gen 1 Plus)
Version du noyau5.10.233-gki-g6e61de9f5b58 #1 SMP PREEMPT (24 nov. 2025)
Version Android15 (OriginOS 5)
Date de compilation25/11/2025
Correctifs Android01/11/2025
CONFIG_FUTEX_PIy ✅
CONFIG_UNMAP_KERNEL_AT_EL0y (KPTI activé)
kptr_restrictenforced
CONFIG_IO_URINGy ✅ (confirmé par les symboles vmlinux, et seccomp n'intercepte pas io_uring_setup)

二、Chaîne d'exploitation idéale vs progression réelle sur PD2229

2.1 Chaîne originale de NebuSec (réussie sur x86_64 / Pixel 10)

1. Contournement KASLR     → timing prefetch / PR_SET_MM_MAP auxv
2. Déclenchement UAF       → interblocage PI à trois threads → FUTEX_CMP_REQUEUE_PI retourne -EDEADLK
3. Récupération de pile    → PR_SET_MM_MAP copie auxv dans le cadre de pile du waiter
4. Écriture limitée rb_erase → écrasement de inet6_protos[IPPROTO_UDP]
5. CEA + ROP               → détournement du flux de contrôle
6. Bascule core_pattern    → shell root (taux de réussite 97 %)

2.2 Progression réelle de chaque étape sur PD2229

ÉtapeStatutDescription
1. Contournement KASLR✅ ImplémentéCanal auxiliaire perf_event_open + échantillonnage callchain (méthode identique à l'adaptation OPPO Find X6 Pro 5.15.149)
2. Déclenchement UAF✅ ImplémentéInterblocage PI à trois threads réussi, FUTEX_CMP_REQUEUE_PI retourne -EDEADLK
3. Primitive de récupération de pile❌ Échec architecturalLes cadres de pile de tous les appels système connus ne chevauchent pas le waiter (voir section 3)
4. Écriture limitée rb_erase❌ BloquéePrérequis non satisfaits
5. Écrasement inet6_protos❌ Non commencéeDépend de l'étape 4
6. ROP / détournement du flux de contrôle❌ Non commencéDépend de l'étape 5
7. Shell root❌ Non commencéDépend de l'étape 6

三、Résultats de l'énumération exhaustive des primitives de récupération de pile (mesures PD2229)

3.1 Calculs clés de la disposition des cadres de pile

Profondeur totale du chemin futex :
  __arm64_sys_futex    0x90
  + do_futex           0xc0
  + futex_wait_requeue_pi  0x1b0
  = 0x300
Position du waiter = SYS_SP - 0x300 + 0x20 = SYS_SP - 0x2e0

Chemin pselect :
  cadre de pile core_sys_select 0x1c0, stack_fds à sp+0x50
  Plage couverte : à partir de SYS_SP - 0x1c0 + 0x50 = SYS_SP - 0x170
  Écart avec le waiter (SYS_SP - 0x2e0) de 0x170 (368 octets) → pas de chevauchement

3.2 Les 17 méthodes d'écriture de pile essayées

#MéthodeAppel systèmeRésultat PD2229Raison principale de l'échec
1stamp_prctlPR_SET_MM_MAP❌ EPERMInterception matérielle Android
2stamp_pselectpselect6 (NFDS=320)❌ Pas de chevauchementwaiter 120B sous fd_set
3stamp_pselectpselect6 (NFDS>336)❌ Allocation tasChemin kvmalloc
4stamp_socketMCAST_JOIN_SOURCE_GROUP❌ Couverture insuffisanteÉcrit uniquement le champ lock
5stamp_sendmsgsendmsg❌ À 80B du waiterProfondeur de cadre 0x90 insuffisante
6stamp_sendmmsgsendmmsg❌ À 112B du waiterCadre de pile insuffisant
7stamp_recvmmsgrecvmmsg❌ Zéroise task/lockLe cadre 0x1d0 corrompt les pointeurs critiques
8stamp_process_vmprocess_vm_writev❌ Pas de chevauchementPile du thread fils allouée séparément
9stamp_keyctlKEYCTL_INSTANTIATE_IOV❌ EOPNOTSUPPAppel système non pris en charge + cadre 0x40
10stamp_tcpTCP_ZEROCOPY_RECEIVE❌ Cadre insuffisantProfondeur estimée insuffisante
11stamp_futexFUTEX_CMP_REQUEUE_PI récursif❌ Logiquement impossibleCorrompt la fenêtre UAF
12binder ioctlBINDER_WRITE_READ❌ EACCESLe shell n'a pas les droits sur /dev/binder
13pollpoll❌ Allocation taspollfd sur le tas
14epoll_waitepoll_wait❌ Cadre trop peu profondCadre de pile 0xE0
15sched_setattrsched_setattr❌ Profondeur insuffisanteCadre de pile 0xb0
16timerfd_settimetimerfd_settime❌ Pas de copie de pilePas de grand tampon de pile
17io_uring_registerIORING_REGISTER_*❌ Double échec①Cadre de pile de seulement 0xF0, cible copy_from_user fixe à sp+0x8 (écart de 424 octets avec le sp+0x1D0 du waiter) ; ②Bien que io_uring_setup ne soit pas intercepté par seccomp (retourne EFAULT et non ENOSYS), la disposition de la pile ne correspond pas

17/17 ont tous échoué.

3.3 Cause profonde de l'échec

La disposition de la pile produite par le compilateur du SM8475 5.10 GKI du PD2229 (PGO + LTO + BOLT) fait que stack_fds de core_sys_select et rt_mutex_waiter de futex_wait_requeue_pi ne se chevauchent pas architecturalement. C'est un fait objectif déterminé par le compilateur, et non un problème de technique d'exploitation.

Le dépôt JoinChang indique clairement : « The pselect stack overlay only works when the freed rt_mutex_waiter lands within the user-controllable region of the stack_fds buffer » — le PD2229 ne satisfait pas cette condition.


四、Analyse comparative des dépôts de référence publics

NebuSec/CyberMeowfia — Framework d'exploitation original

  • Dépôt : https://github.com/NebuSec/CyberMeowfia
  • Cible : x86_64 Linux / Pixel 10 (6.x GKI)
  • Récupération de pile : PR_SET_MM_MAP copie auxv sur la pile du noyau
  • Taux de réussite : 97 %, ~5 secondes pour un [shell root]
  • Applicabilité au PD2229 : ❌ PR_SET_MM_MAP est intercepté par EPERM sur Android

JoinChang/ghostlock-oneplus — Jailbreak BL OnePlus

  • Dépôt : https://github.com/JoinChang/ghostlock-oneplus
  • Appareils vérifiés :
    • OnePlus Ace 6T (PLR110, SM8845) — 6.12.38 GKI ✅
    • OnePlus 15 (PLK110, SM8845) — 6.12.23 GKI ✅
  • Points techniques :
    • Extraction automatique des offsets : kallsyms (28) + BTF (57) + dérivés (9) + constantes (12) = 103/103
    • Chevauchement de pile pselect, diff SP = -64
    • PSELECT_SHIFT = -2
    • Chaîne d'exploitation : futex UAF → waiter falsifié → pselect contrôle la pile → écriture limitée rb_erase → selinux_state.enforcing=0 → écrasement cred par init_cred
  • Déclaration explicite d'impossibilité : « Not Feasible (stack layout incompatible) » — applicable uniquement aux noyaux où pselect stack_fds chevauche le waiter
  • Applicabilité au PD2229 : ❌ Génération de noyau incompatible (6.12 vs 5.10), et disposition de pile sans chevauchement
Télécharger l’outil