
Exploit du noyau Android spécifique à l'appareil pour CVE-2026-64560 sur les builds OnePlus 13, offrant un root temporaire via ADB shell avec des payloads vérifiés et des outils de portage.
OP5D0DL1) CVE-2026-64560Adaptation spécifique à l'appareil de la preuve de concept Android CVE-2026-64560 pour
les builds exacts du OnePlus 13 (PJZ110) listés ci-dessous. Elle fournit un accès root
temporaire pour le démarrage en cours via un assistant utilisable uniquement depuis un shell ADB.
[!WARNING] Il s'agit de code d'exploitation du noyau expérimental. Il peut redémarrer l'appareil, corrompre l'état du noyau ou entraîner une perte de données. Utilisez-le uniquement sur un appareil que vous possédez ou que vous êtes explicitement autorisé à tester. Sauvegardez d'abord les données importantes.
Ce dépôt cible des images de noyau, et ses profils ciblent des empreintes de build ; une OTA peut modifier l'une sans l'autre. Les deux builds ci-dessous embarquent
le noyau identique octet pour octet, ils partagent donc chaque offset et ne diffèrent que par
la chaîne de contrôle de l'appareil. docs/BUILDS.md est l'index et l'arbre
de décision pour une nouvelle image — commencez par là.
BP2A.250605.015 | CP2A.260605.016 | |
|---|---|---|
| Android | 16 | 17 |
| Empreinte | OnePlus/PJZ110/OP5D0DL1:16/BP2A.250605.015/V.58c08ac-32ff28e-33c0954:user/release-keys | OnePlus/PJZ110/OP5D0DL1:17/CP2A.260605.016/V.34246cc-e2d62b-e2d628:user/release-keys |
| Noyau | 6.6.118-android15-8-g9bc34d5b0c79-abogki537459655-4k | identique |
| Taille de page / CPU | 4 KiB / 8 en ligne | identique |
| SHA-256 de l'Image décodée | ee5ee448d2985eeeb7a8b5ad2e1efc34eeb410a8beae0ab484504d739124d613 | identique |
| Charge utile | bin/cve-2026-64560-fanout-op13-bp2a.250605.015 | bin/cve-2026-64560-fanout-op13-cp2a.260605.016 |
Le lanceur rejette une empreinte inattendue et vérifie chaque charge utile fournie avant exécution. Ce dépôt ne contient pas d'images de firmware, de clés d'appareil, ni de secrets propres à l'appareil.
Prérequis :
adb disponible dans le PATHDepuis la racine du dépôt :
sh scripts/boot-campaign.sh -s <serial> -p bin/cve-2026-64560-fanout-op13-cp2a.260605.016 -n 10
Après ROOT_SUCCESS, tout nouveau terminal peut ouvrir le shell root temporaire :
adb -s <serial> shell -T /data/local/tmp/su
Exécutez id pour vérifier uid=0(root). L'accès ne dure que pour le démarrage en cours ; relancez
après un redémarrage. Aucune partition boot, vendor ou system n'est modifiée.
L'exploit contient une course probabiliste dans le noyau. La chaîne atteint de manière fiable le stade
de pont et franchit sa barrière de lecture environ un démarrage sur huit, donc une série de démarrages
sans résultat n'est pas la preuve que quelque chose est cassé — prévoyez des démarrages, et consultez
docs/BUILDS.md pour le seul
compteur qui ressemble à un signal d'échec sans en être un.
scripts/boot-campaign.sh est la boucle du lanceur en POSIX sh, pour les hôtes où l'hôte
PowerShell de scripts/root.ps1 n'est pas disponible. Les deux appliquent les mêmes barrières.
Android NDK r29 et API 35 sont les valeurs par défaut pour une compilation reproductible. Le NDK n'est pas présent par défaut, passez donc sa racine :
.\scripts\build.ps1 -Profile profiles\op13\CP2A.260605.016.json -NdkRoot <path-to-ndk>
Le script compile les stratégies d'exploitation et l'assistant su temporaire, retire les symboles des sorties, et vérifie leurs valeurs SHA-256 épinglées.
rotate est compilé mais délibérément non promu : il a fait tomber le noyau sur cet
appareil et n'a pas été revalidé depuis le recalibrage du timer.
python tools/extract_image.py <boot.img> <out> # compare the Image digest first
python tools/port_target.py --profile profiles/op13/<BUILD>.json
Tout ce qu'un build possède est nommé d'après le build, donc deux builds d'un même appareil
n'entrent jamais en collision. Voir docs/BUILDS.md pour l'arbre de décision et
docs/PORTING.md pour la liste de contrôle complète.
Le framework d'exploitation que ce dépôt adapte — les sources de l'exploit, les
stades de credentials et de restauration, l'assistant su temporaire, la compilation
reproductible, le lanceur adaptatif et la boîte à outils de portage — provient de l'adaptation
Xiaomi 15 dada :
Les offsets du OnePlus 13, l'ajustement de la course et la validation ici ont été mesurés sur cet
appareil plutôt que repris ; les deux cibles de noyau sont des images différentes, donc
presque toutes les adresses diffèrent. Le profil et les charges utiles dada sont conservés comme
la référence sur laquelle le framework a été initialement validé.
La preuve de concept originale, et la vulnérabilité elle-même, sont en amont des deux :
Les révisions exactes et les correctifs Linux sont listés dans
docs/UPSTREAM.md.
Apache License 2.0, héritée du travail amont. Voir LICENSE
et NOTICE.
| Chemin | Objet |
|---|
bin/ | Charges utiles AArch64 de release vérifiées |
profiles/op13/<BUILD>.json | Descriptions de cible, une par empreinte de build |
profiles/dada/ | La cible Xiaomi 15 dont ce framework est issu, conservée comme référence |
src/ | Sources C, générées par build à partir des modèles partagés |
targets/ | Ensembles d'offsets mesurés pour une image de noyau |
evidence/ | Journaux de chaîne tronqués issus des exécutions ayant obtenu root |
scripts/boot-campaign.sh | Boucle de démarrage avec barrières thermique, de stabilisation et de timeout |
scripts/sweep.sh | Plusieurs réglages d'ajustement en un seul démarrage |
scripts/root.ps1, build.ps1, new-target.ps1 | Lanceur, compilation et échafaudage |
tools/extract_image.py | Image de noyau extraite d'un dump de boot, les deux empreintes |
tools/kallsyms_extract.py | Table de symboles depuis une Image arm64 brute (auto-validante) |
tools/ksym.py | Recherche de symboles dans une table extraite |
tools/btf_offsets.py | Offsets des membres de structure depuis le blob BTF de l'Image |
tools/port_target.py | Génère une source de build à partir d'un modèle + profil |
docs/BUILDS.md | Index des builds, arbre de décision, pièges de campagne |
docs/OP13.md | Dérivation de chaque offset, avec les preuves |
docs/PORTING.md | Liste de contrôle d'adaptation et de promotion pour un nouveau build |
docs/UPSTREAM.md | Provenance amont et révisions figées |