
Exploit de kernel Android específico para dispositivo para CVE-2026-64560 em builds do OnePlus 13, fornecendo root temporário via shell ADB com payloads verificados e ferramentas de portabilidade.
OP5D0DL1) CVE-2026-64560Adaptação específica do dispositivo da prova de conceito Android CVE-2026-64560 para
as builds exatas do OnePlus 13 (PJZ110) listadas abaixo. Fornece acesso root
temporário para o boot atual através de um helper exclusivo para ADB shell.
[!WARNING] Este é um código de exploit de kernel experimental. Ele pode reiniciar o dispositivo, corromper o estado do kernel ou causar perda de dados. Use-o apenas em um dispositivo que você possui ou está explicitamente autorizado a testar. Faça backup dos dados importantes primeiro.
Este repositório tem como alvo imagens de kernel, e seus perfis têm como alvo fingerprints
de build; uma OTA pode alterar um sem alterar o outro. Ambas as builds abaixo incluem
o kernel byte-idêntico, então compartilham todos os offsets e diferem apenas na
string de device-gate. docs/BUILDS.md é o índice e a
árvore de decisão para uma nova imagem — comece por lá.
BP2A.250605.015 | CP2A.260605.016 | |
|---|---|---|
| Android | 16 | 17 |
| Fingerprint | 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 |
| Kernel | 6.6.118-android15-8-g9bc34d5b0c79-abogki537459655-4k | same |
| Tamanho de página / CPUs | 4 KiB / 8 online | same |
| SHA-256 da Image decodificada | ee5ee448d2985eeeb7a8b5ad2e1efc34eeb410a8beae0ab484504d739124d613 | same |
| Payload | bin/cve-2026-64560-fanout-op13-bp2a.250605.015 | bin/cve-2026-64560-fanout-op13-cp2a.260605.016 |
O runner rejeita um fingerprint inesperado e verifica cada payload incluído antes da execução. Este repositório não contém imagens de firmware, chaves de dispositivo ou segredos exclusivos do dispositivo.
Requisitos:
adb disponível no PATHA partir da raiz do repositório:
sh scripts/boot-campaign.sh -s <serial> -p bin/cve-2026-64560-fanout-op13-cp2a.260605.016 -n 10
Após ROOT_SUCCESS, qualquer novo terminal pode abrir o shell root temporário:
adb -s <serial> shell -T /data/local/tmp/su
Execute id para verificar uid=0(root). O acesso dura apenas para o boot atual; execute novamente
após um reboot. Nenhuma partição de boot, vendor ou system é modificada.
O exploit contém uma corrida de kernel probabilística. A cadeia atinge o estágio de bridge
de forma confiável e limpa seu read gate cerca de um boot em oito, então uma sequência vazia
de boots não é evidência de que algo está quebrado — reserve boots, e veja
docs/BUILDS.md para o único
contador que parece um sinal de falha e não é.
scripts/boot-campaign.sh é o loop do runner em POSIX sh, para hosts onde o
host PowerShell para scripts/root.ps1 não está disponível. Ambos aplicam os mesmos gates.
Android NDK r29 e API 35 são os padrões de build reproduzível. O NDK não está presente por padrão, então passe sua raiz:
.\scripts\build.ps1 -Profile profiles\op13\CP2A.260605.016.json -NdkRoot <path-to-ndk>
O script compila as estratégias de exploit e o helper temporary-su, remove os símbolos das saídas e verifica seus valores SHA-256 fixados.
rotate é compilado mas deliberadamente não promovido: ele derrubou o kernel neste
dispositivo e não foi revalidado desde a recalibração do timer.
python tools/extract_image.py <boot.img> <out> # compare the Image digest first
python tools/port_target.py --profile profiles/op13/<BUILD>.json
Tudo o que uma build possui é nomeado após a build, então duas builds de um dispositivo
nunca colidem. Veja docs/BUILDS.md para a árvore de decisão e
docs/PORTING.md para a checklist completa.
O framework de exploit que este repositório adapta — os códigos-fonte do exploit, os
estágios de credencial e restauração, o helper temporary-su, o build
reproduzível, o runner adaptativo e o kit de portabilidade — vem da adaptação
dada do Xiaomi 15:
Os offsets do OnePlus 13, o tuning de corrida e a validação aqui foram medidos neste
dispositivo em vez de transportados; os dois alvos de kernel são imagens diferentes, então
quase todos os endereços diferem. O perfil dada e os payloads são mantidos como
a referência contra a qual o framework foi originalmente validado.
A prova de conceito original, e a própria vulnerabilidade, está upstream de ambos:
Revisões exatas e correções do Linux estão listadas em
docs/UPSTREAM.md.
Apache License 2.0, herdada do trabalho upstream. Veja LICENSE
e NOTICE.
| Caminho | Propósito |
|---|
bin/ | Payloads AArch64 de release verificados |
profiles/op13/<BUILD>.json | Descrições de alvo, uma por fingerprint de build |
profiles/dada/ | O alvo Xiaomi 15 de onde este framework veio, mantido como referência |
src/ | Fontes C, geradas por build a partir dos templates compartilhados |
targets/ | Conjuntos de offsets medidos para uma imagem de kernel |
evidence/ | Logs de cadeia reduzidos de execuções que obtiveram root |
scripts/boot-campaign.sh | Loop de boot com gates de térmica, settle e timeout |
scripts/sweep.sh | Várias configurações de tuning em um boot |
scripts/root.ps1, build.ps1, new-target.ps1 | Runner, build e scaffolding |
tools/extract_image.py | Imagem de kernel a partir de um dump de boot, ambos os digests |
tools/kallsyms_extract.py | Tabela de símbolos de uma Image arm64 bruta (auto-validante) |
tools/ksym.py | Busca de símbolos em uma tabela extraída |
tools/btf_offsets.py | Offsets de membros de struct a partir do blob BTF da Image |
tools/port_target.py | Gera um código-fonte de build a partir de um template + perfil |
docs/BUILDS.md | Índice de builds, árvore de decisão, armadilhas de campanha |
docs/OP13.md | Derivação de cada offset, com as evidências |
docs/PORTING.md | Checklist de adaptação e promoção para nova build |
docs/UPSTREAM.md | Proveniência upstream e revisões fixadas |