
CVE-2026-64560 toolkit: toolchain Go de binário único + porta alvo realme RMX5010 (A16, SM8750)
CVE-2026-64560 é um use-after-free no posix-cpu-timers do kernel Linux
(corrida local sem privilégios, CVSS 3.1 = 7.8; não corrigido em 6.6.118, só corrigido em 6.6.147).
Este repositório faz duas coisas: transformar a cadeia de ferramentas upstream, que só pode ser
acionada por um monte de scripts Python, em um único binário Go estático,
e adicionar o alvo realme RMX5010 (A16 / SM8750) que o upstream não tem.
[!WARNING] Este é código de exploit de kernel experimental. Ele pode reiniciar o dispositivo, corromper o estado do kernel ou causar perda de dados. Use apenas em dispositivos que você possui ou para os quais tem autorização explícita. Faça backup primeiro.
| profile | dispositivo | kernel | status |
|---|---|---|---|
rmx5010-a16 | realme RMX5010 / RE6018L1, A16 BP2A.250605.015 | 6.6.118-android15-8-g93e223c276e7-abogki500782043-4k | Novo neste repositório; o payload estático passa pelo gate --preflight no dispositivo real, a escalada de privilégios completa ainda não foi verificada em hardware real |
dada | Xiaomi 15 | 6.6.118-android15-8-gb9cc6ec16bc8-…-4k | Mantido como no upstream (ver notas do upstream) |
op13 | OnePlus 13 | Igual ao upstream | Mantido como no upstream |
Sem instalar Go, sem instalar Python:
v*, contém ferramentas para cada plataforma + payloads para cada alvo + SHA256SUMS.txtmain
cve64560-<os>-<arch>: linux/amd64, linux/arm64, android/arm64, darwin/arm64, windows/amd64payloads: payloads estáticos aarch64 para cada profile (rmx5010-a16-…, op13-…,
cada um em seu próprio diretório, sem mais sobrescrever uns aos outros)O android/arm64 pode ser enviado diretamente com adb push para /data/local/tmp e executado no celular.
go build -o cve64560 ./gotool # ferramenta (Go puro, sem dependências)
./cve64560 build --profile profiles/rmx5010/rmx5010-40850e5ff6a5.json # payload (requer cc)
Para uma visão geral da linha de comando, execução a seco com --dry-run e como os profiles são derivados, ver docs/GOTOOL.md.
O fluxo original exigia python3 + tools/*.py + um monte de shell: a máquina de teste não tem python,
e no celular menos ainda. Agora um único binário estático cobre
todo o fluxo kallsyms → derive → render → patch → build → campaign,
e roda em qualquer lugar para onde for compilado cruzado.
A implementação em Python não foi removida: ela permanece em tools/ como implementação de referência e base de comparação no CI,
o CI executa Go e Python para cada profile e depois faz diff -r, ficando vermelho se houver qualquer diferença byte a byte.
.github/workflows/build.yml)gotool/ Cadeia de ferramentas Go (um arquivo por comando)
profiles/ Profiles de alvo (um JSON por alvo, fonte única de verdade para renderização)
src/ Templates do upstream + código-fonte de dispositivo já renderizado
tools/ Implementação de referência Python do upstream + camada de compatibilidade musl/bionic + scripts de CI
scripts/ Scripts de campanha/medição do upstream (versão Go em gotool/cmd_campaign.go)
targets/ Registro de símbolos/offsets de kernel por alvo
symbols/ Tabelas de símbolos de kernel dos dois profiles de produção (os demais alvos são dados derivados)
docs/GOTOOL.md Documentação da cadeia de ferramentas Go
O repositório não contém imagens de firmware, chaves de dispositivo ou identificadores únicos de dispositivo. Etapas que exigem imagens de kernel do fabricante para reprodução (extração de símbolos, derivação de profile) trazem a imagem original consigo e não entram no repositório.
A única exceção são as tabelas de símbolos de kernel dos dois profiles de produção (symbols/symbols_*.json, cerca de
9 MB cada): o build falha imediatamente se não encontrar a tabela (não gera um payload com constantes não verificadas), e o CI
não tem a imagem do kernel em mãos para reconstruir as tabelas. Elas contêm apenas nomes de símbolos e endereços, não a imagem em si.
O payload é root temporário: perde efeito ao reiniciar, não grava em disco, não altera partições.
| job | função |
|---|
gotool | Compilação cruzada para 5 plataformas + gofmt/go vet/go test |
parity | Comparação byte a byte da saída Go com a Python; verificação rígida dos artefatos golden com tools/golden.sha256 |
payload | Compila o payload em um contêiner arm64 Alpine (qemu), com cadeia de ferramentas do mesmo tipo do aarch64 musl gcc validado em hardware real na época |
release | Publica Release automaticamente em tags |