
Paquete de investigación de exploits del kernel de Android para CVE-2026-43499, que contiene el código fuente del exploit popsicle, payload su embebido, helper de puente root y artefactos de compilación reproducibles.
Fecha de generación: 2026-08-08
Este directorio ya ha organizado el árbol de código fuente completo de popsicle que se puede recuperar del proyecto actual, los encabezados necesarios, la carga útil de su embebida, los binarios de producción y los scripts de ejecución.
Es necesario distinguir:
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
Archivo de producción:
artifacts/production/t807d-popsicle-r562-show-callback-canonical-20260804.so
SHA-256:
B6DED21F90096A2FA2567807F79E7E8CCFDF9802DAF4628277A333DD8FE7DB71
Entradas principales del código fuente:
| Objeto de producción | Código fuente correspondiente |
|---|---|
| Flujo principal del SO | source/exploit/popsicle/main.c |
| Utilidades genéricas de kernel y espacio de usuario | source/exploit/popsicle/util.c |
| slide y localización de direcciones | source/exploit/popsicle/slide.c |
| fops y ruta de activación de pselect | source/exploit/popsicle/fops.c |
| pipe, reclaim, direct write | source/exploit/popsicle/pipe.c |
| Entrada de LD_PRELOAD y escritura del archivo su | source/exploit/popsicle/preload.c |
| Símbolos de frontera de su embebida | source/exploit/popsicle/su_blob.S |
| Definiciones comunes | common.h, offset.h, target.h |
| Configuración de objetivo | source/target-files/popsicle-target.h |
| Encabezados de KernelSnitch | source/exploit/popsicle/kernelsnitch/ y source/exploit/ghostlock-oneplus/kernelsnitch/ |
| Contenido del archivo embebido | source/exploit/popsicle/build/embed/su_daemon_aarch64_pie |
Archivo de producción:
artifacts/production/t807d-root-bridge-helper-r557-show-verify-callback-20260804
SHA-256:
F7FF4C293902993183F98A8D314FA2ECD012A72A36F287A361C4503844EAAB91
Entradas principales del código fuente:
| Objeto de producción | Código fuente correspondiente |
|---|---|
| root bridge, marker, cred, SELinux, lógica auxiliar de KSU | source/exploit/popsicle/root_bridge_helper.c |
| Símbolos de frontera de su embebida | source/exploit/popsicle/su_blob.S |
| Contenido de su | source/exploit/popsicle/build/embed/su_daemon_aarch64_pie |
| Definiciones comunes y configuración de objetivo | Igual que r562 |
Se han completado dos dependencias de rutas relativas que son fáciles de pasar por alto.
Primero, la referencia en target.h:
#include "../../target-files/popsicle-target.h"
Por lo tanto, el código fuente debe mantener:
source/exploit/popsicle/target.h
source/target-files/popsicle-target.h
Segundo, popsicle/kernelsnitch/utils.h y kernelsnitch.h siguen referenciando:
../../ghostlock-oneplus/kernelsnitch/...
Por lo tanto, source/exploit/ghostlock-oneplus/kernelsnitch/ también debe conservarse.
Copiar solo source/popsicle daría como resultado una instantánea incompleta que "parece completa pero en realidad no compila". Este paquete de recuperación ya está organizado según el diseño original de rutas relativas.
Cadena de herramientas:
NDK: D:Android
dk 29android-ndk-r29 API: 35 ABI: AArch64
Ejecución:
powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File .
ebuild-current-source.ps1
Resultado de la recompilación del código fuente actual:
| Archivo | Tamaño | SHA-256 |
|---|---|---|
| review-build/rebuild-current-source.so | 139600 | D5C8CF6D3A0A223F0BB3319FFAE926EF3EDF56DEF520B0A99CF7526B4437EC1A |
| review-build/rebuild-current-source-helper | 75008 | 025FD4BEB793227D9595D5739483798BBB8CDB94B69734399BE4C9F329032D8F |
Esto demuestra que el árbol de código fuente es compilable, pero no puede sustituir a los binarios de producción ya verificados en artifacts/production.
Evidencia de la línea temporal:
| Objeto | Hora del archivo |
|---|---|
| Archivo de producción del helper r557 | 2026-08-04 22:47:29 |
| Archivo de producción del SO r562 | 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 |
Al menos el contenido actual de common.h, pipe.c, preload.c, root_bridge_helper.c y util.c se escribió o modificó después de la generación de los dos binarios de producción.
Tampoco se encontró en el proyecto:
Por lo tanto, partiendo de los materiales existentes, lo que se puede hacer es recuperar todo el código fuente disponible y localizar las diferencias; no se puede convertir inversamente el ELF de producción en el código fuente C byte por byte de aquel entonces.
binary-function-size-diff.md presenta las diferencias de tamaño de función entre los archivos de producción y los archivos recompilados del código fuente actual.
Diferencias clave del SO r562:
Diferencias clave del helper r557: