Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-98260-pudding-android — Porta de pesquisa de CVE-2026-98260 do Android específica para o alvo, para o Xiaomi 17 (pudding) | Kitploit
Ferramentas/GitHubGitHub/addxemmm/cve-2026-98260-pudding-android
Segurança AndroidEscalada de PrivilégiosForensia de MemóriaExploraçãoPós-ExploraçãoSegurança MóvelExploração de Binários
GitHubaddxemmm/cve-2026-98260-pudding-android

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-98260-pudding-android

Porta de pesquisa de CVE-2026-98260 do Android específica para o alvo, para o Xiaomi 17 (pudding)

Ver Repositório
1há 11 diasAinda não revisado

CVE-2026-98260 · Android 17 / pudding 本地提权移植

针对小米 17(代号 pudding)一个精确内核构建的 Android AArch64 利用链:从普通 ADB shell 出发,依次把 SELinux 置为 Permissive、把本进程 UID/GID 归零、补齐完整 Linux capabilities,并在当前开机周期内提供 root 服务。

参考与出处

Este projeto é baseado e portado de CVE-2026-98260-popsicle-android (Xiaomi 17 Pro Max / popsicle), não é uma pesquisa independente implementada do zero.

  • Descoberta de vulnerabilidade, análise pública e PoC para alvo Ubuntu: InfinityCore
  • Cadeia completa de três estágios no Android GKI, layout de objetos e design de reutilização de páginas: o referido repositório popsicle
  • Este repositório faz apenas a adaptação de alvo do pudding (dois endereços de link, um símbolo de sonda embutido, escala de varredura); o restante do código e das ideias pertence aos autores originais

漏洞速览

非主线程 execve() 会先执行 de_thread() 交换线程身份。若 exec 在这之后失败(例如 exec_mmap() 被 SIGKILL 打断而返回 -EINTR),任务会在清理 POSIX timer 之前退出:k_itimer 被释放,但它的 timerqueue 节点仍留在存活任务的树里。父进程之后回收该任务时,cleanup_timerqueue() 再次操作这个已释放节点,形成 use-after-free。

利用把这次 UAF 变成一次受限的八字节零写,再按 SELinux → UID/GID → 完整 capabilities 三步推进。面向入门的完整讲解见 docs/VULNERABILITY.md。

已验证目标与结果

项目实测值
设备Xiaomi 17,型号 25113PN0EC,代号 pudding
系统小米澎湃 OS 4 OS4.0.5.0.XPCCNXM,Android 17
内核6.12.69-android16-6-g43b5ab7e247d-abogki561813157-4k
页大小4 KiB
起点已授权的普通 ADB shell,UID 2000,SELinux Enforcing,bootloader 锁定
成功结果UID/GID 0、SELinux Permissive、CapPrm/CapEff/CapBnd=000001ffffffffff
生命周期root 服务可供本次开机后续的新 ADB shell 使用;重启后需要重新运行

成功后的独立验证(新开的 ADB shell):

uid=0(root) gid=0(root)
CapInh: 000001ffffffffff
CapPrm: 000001ffffffffff
CapEff: 000001ffffffffff
CapBnd: 000001ffffffffff
getenforce: Permissive

Isto não é um root persistente. Nada foi gravado em boot/init_boot ou em qualquer partição, o bootloader permanece bloqueado; após reiniciar, o SELinux volta para Enforcing e o serviço de root desaparece.

Taxa de sucesso

Sem promessa de taxa de sucesso. Nos testes, foi necessário um total de 9 inicializações para completar uma sequência completa A→B→C. As condições de aprovação das três fases são independentes entre si:

FasePrograma no dispositivoCondição de aprovação
1. SELinuxexploit-android-perfgetenforce retorna Permissive, e os demais campos da palavra de status permanecem conforme o esperado
2. Identidadeexploit-android-perf-chainO UID/GID do mesmo processo passa a 0, seguido de exec fullcap
3. Permissões completasexploit-android-key-ptr + pc98260_rootd.cCapabilities completas, o serviço root pode ser acessado por um novo shell

Se qualquer etapa não for atingida, será exibido [PARKED] e o estado perigoso será mantido; é obrigatório reiniciar, não é possível tentar novamente à força dentro desta mesma inicialização.

--aio 16384 é o valor de ajuste desta máquina (a execução bem-sucedida acertou na 3903ª página de metadados perf).

Diferenças em relação à versão popsicle

Localpopsiclepudding
LINK_SELINUX_STATE0xffffffc08289aba00xffffffc0827f9ba0
LINK_GETPID0xffffffc080074eac0xffffffc080102e10
Vazamento de endereço do timersonda de retorno de alloc_posix_timeresse símbolo foi inlined, passando a usar a entrada $arg1 de posix_cpu_timer_create
PERF_MAX819216384 (aumenta a chance de acerto de página)

Fundamentação e evidências em docs/ADAPTATION.md.

Compilar a partir do código-fonte

É necessário um Android NDK. O bin/ no repositório foi compilado com NDK 26.3.11579264 / API 34:

powershell -NoProfile -ExecutionPolicy Bypass -File .\build.ps1 -NdkHome "$env:LOCALAPPDATA\Android\Sdk\ndk\26.3.11579264" -ApiLevel 34

-VerifyReference compara o SHA-256 de cada novo artefato com o de bin/; apenas o uso da mesma toolchain de bin/ produzirá bytes idênticos. Trocar a versão do NDK ainda permite a execução, mas os hashes serão diferentes.

Artefatos:

ArtefatoCódigo-fonte de entrada
exploit-android-perfsrc/exploit-android-perf.c
exploit-android-perf-chainsrc/exploit-android-perf-chain.c
exploit-android-key-ptrsrc/exploit-android-key-ptr.c + src/pc98260_rootd.c
pc98260-susrc/pc98260_su.c

A compilação não se conecta ao telefone nem grava no dispositivo.

Executar em um alvo autorizado

Conecte um dispositivo com depuração USB ativada e autorizada e adicione o platform-tools ao PATH:

.\开始98260临时ROOT.bat

Ou especifique o dispositivo explicitamente:

powershell -NoProfile -ExecutionPolicy Bypass -File .\run_98260.ps1 -Serial <ADB序列号> -Reboot

O script do host verifica o modelo do dispositivo, a versão incremental do sistema, a string completa do kernel, o boot ID e os hashes dos quatro binários; ele também define /sys/kernel/tracing/tracing_on como 0 antes de iniciar cada estágio (em algumas builds do HyperOS, o miuibpf o mantém em 1, e a cadeia de exploração se recusa a executar por isso). Quando aparece [PARKED], o script para e solicita uma reinicialização.

Após o sucesso, o root pode ser usado assim:

adb shell -t /data/local/tmp/pc98260-su
adb shell /data/local/tmp/pc98260-su -c "id"

Por que o processo para em caso de falha

A cadeia de exploração exige recuperar com precisão "a página onde está o timer alvo". Se a mesma página alvo não for observada, ou se a verificação após a escrita do ponteiro for inconsistente, o programa preserva o zombie/mapeamento relevante e para, evitando recuperar às cegas enquanto o nó pendente ainda é referenciado pelo kernel. Nesse caso, deve-se usar uma nova inicialização do telefone como limite para a próxima tentativa.

Limites do repositório

Este repositório não contém: backup do dispositivo, imagens boot/init_boot, imagens de partição, payload.bin, kernel/ELF extraídos do firmware, logs de execução brutos, números de série ADB ou boot ID. logs/ e build/ estão no Git ignore. Em bin/ há apenas os quatro binários temporários da cadeia de escalonamento de privilégios.

Avisos de segurança

  • Após o sucesso, o SELinux fica em Permissive, e o daemon root escuta em /data/local/tmp/pc98260-root.sock com capabilities completas; o dispositivo inteiro fica totalmente exposto durante esta inicialização.
  • Reinicie imediatamente quando não estiver em uso; não permaneça nesse estado por longos períodos.
  • O processo de exploração pode causar kernel panic/reinicialização; não opere em um dispositivo principal que contenha dados importantes sem backup.
  • Use apenas em seus próprios dispositivos e em pesquisas de segurança autorizadas.

Documentação

  • Implementação técnica
  • Adaptação ao alvo (evidências e derivação de constantes)
  • Registros de validação e amostras de falha
  • Origem upstream e notas de licenciamento
Baixar ferramenta