
Package de recherche sur l'exploitation du noyau Android pour CVE-2026-43499, contenant le code source de l'exploit popsicle, une charge utile su embarquée, un assistant de pont root et des artefacts de compilation reproductibles.
Date de génération : 2026-08-08
Ce répertoire contient l'arborescence source complète de popsicle récupérable dans le projet actuel, les en-têtes nécessaires, la charge utile su embarquée, les binaires de production et les scripts d'exécution.
Il faut distinguer :
source-final-correspondence-20260808/
├─ source/
│ ├─ exploit/
│ │ ├─ popsicle/
│ │ │ ├─ main.c
│ │ │ ├─ util.c
│ │ │ ├─ slide.c
│ │ │ ├─ fops.c
│ │ │ ├─ pipe.c
│ │ │ ├─ preload.c
│ │ │ ├─ root_bridge_helper.c
│ │ │ ├─ su_blob.S
│ │ │ ├─ su_daemon.c
│ │ │ ├─ common.h / offset.h / target.h
│ │ │ ├─ kernelsnitch/
│ │ │ └─ build/embed/su_daemon_aarch64_pie
│ │ └─ ghostlock-oneplus/kernelsnitch/
│ └─ target-files/popsicle-target.h
├─ embed/su_daemon_aarch64_pie
├─ artifacts/production/
├─ runtime/
├─ review-build/
├─ rebuild-current-source.ps1
├─ source-files.sha256
├─ binary-function-size-diff.md
├─ binary-function-size-diff.csv
└─ manifest.json
Fichier de production :
artifacts/production/t807d-popsicle-r562-show-callback-canonical-20260804.so
SHA-256 :
B6DED21F90096A2FA2567807F79E7E8CCFDF9802DAF4628277A333DD8FE7DB71
Principales entrées source :
| Objet de production | Code source correspondant |
|---|---|
| Flux principal du SO | source/exploit/popsicle/main.c |
| Outils génériques noyau et espace utilisateur | source/exploit/popsicle/util.c |
| slide et localisation d'adresses | source/exploit/popsicle/slide.c |
| fops et chemin de déclenchement pselect | source/exploit/popsicle/fops.c |
| pipe, reclaim, direct write | source/exploit/popsicle/pipe.c |
| Point d'entrée LD_PRELOAD et écriture du fichier su | source/exploit/popsicle/preload.c |
| Symboles de délimitation su embarqués | source/exploit/popsicle/su_blob.S |
| Définitions communes | common.h, offset.h, target.h |
| Configuration de la cible | source/target-files/popsicle-target.h |
| En-têtes KernelSnitch | source/exploit/popsicle/kernelsnitch/ et source/exploit/ghostlock-oneplus/kernelsnitch/ |
| Contenu du fichier embarqué | source/exploit/popsicle/build/embed/su_daemon_aarch64_pie |
Fichier de production :
artifacts/production/t807d-root-bridge-helper-r557-show-verify-callback-20260804
SHA-256 :
F7FF4C293902993183F98A8D314FA2ECD012A72A36F287A361C4503844EAAB91
Principales entrées source :
| Objet de production | Code source correspondant |
|---|---|
| root bridge, marker, cred, SELinux, logique auxiliaire KSU | source/exploit/popsicle/root_bridge_helper.c |
| Symboles de délimitation su embarqués | source/exploit/popsicle/su_blob.S |
| Contenu su | source/exploit/popsicle/build/embed/su_daemon_aarch64_pie |
| Définitions communes et configuration de la cible | identiques à r562 |
Deux dépendances de chemin relatif facilement omises ont été complétées.
Premièrement, la référence dans target.h :
#include "../../target-files/popsicle-target.h"
Le code source doit donc conserver :
source/exploit/popsicle/target.h
source/target-files/popsicle-target.h
Deuxièmement, popsicle/kernelsnitch/utils.h et kernelsnitch.h continuent de référencer :
../../ghostlock-oneplus/kernelsnitch/...
Par conséquent, source/exploit/ghostlock-oneplus/kernelsnitch/ doit également être conservé.
Copier uniquement source/popsicle donnerait un instantané incomplet « d'apparence complète mais en réalité non compilable ». Ce paquet de restauration a été organisé selon la disposition originale des chemins relatifs.
Chaîne d'outils :
NDK: D:Android
dk 29android-ndk-r29 API: 35 ABI: AArch64
Exécution :
powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File .
ebuild-current-source.ps1
Résultat de la recompilation du code source actuel :
| Fichier | Taille | SHA-256 |
|---|---|---|
| review-build/rebuild-current-source.so | 139600 | D5C8CF6D3A0A223F0BB3319FFAE926EF3EDF56DEF520B0A99CF7526B4437EC1A |
| review-build/rebuild-current-source-helper | 75008 | 025FD4BEB793227D9595D5739483798BBB8CDB94B69734399BE4C9F329032D8F |
Cela prouve que l'arborescence source est compilable, mais ne peut pas remplacer les binaires de production vérifiés dans artifacts/production.
Preuves chronologiques :
| Objet | Horodatage du fichier |
|---|---|
| Fichier de production r557 helper | 2026-08-04 22:47:29 |
| Fichier de production r562 SO | 2026-08-04 22:59:05 |
| main.c | 2026-08-04 22:22:16 |
| slide.c | 2026-08-04 21:54:58 |
| common.h | 2026-08-05 08:07:26 |
| pipe.c | 2026-08-05 08:07:34 |
| preload.c | 2026-08-05 08:07:30 |
| root_bridge_helper.c | 2026-08-05 08:10:10 |
| util.c | 2026-08-05 08:14:57 |
Au moins le contenu actuel de common.h, pipe.c, preload.c, root_bridge_helper.c et util.c a été écrit ou modifié après la génération des deux binaires de production.
Le projet n'a pas non plus trouvé :
Donc, à partir des matériaux existants, ce qui est possible est de restaurer tout le code source disponible et de localiser les différences, mais pas de transformer en sens inverse le binaire ELF de production en code source C octet par octet de l'époque.
binary-function-size-diff.md présente les différences de taille des fonctions entre les fichiers de production et les fichiers recompilés à partir du code source actuel.
Différences clés du SO r562 :
Différences clés du helper r557 :
Ces différences sont cohérentes avec les directions de correction consignées dans la revue du code source Round592 : copie de chemin de variable d'environnement, différence d'adresse de symbole linker indépendant, gestion des échecs d'allocation, nettoyage reclaim, etc.