Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
asus-bsitf-0-day-poc — PoC para CVE-2026-13585 | Kitploit
Ferramentas/GitHubGitHub/416rehman/asus-bsitf-0-day-poc
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoSegurança de HardwareExploração de Binários
GitHub416rehman/asus-bsitf-0-day-poc

asus-bsitf-0-day-poc

PoC para CVE-2026-13585

Ver Repositório
52há 1 mêsAinda não revisado

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
Site

POC - Mapeamento de Memória do Kernel para Modo de Usuário no ASUS bsitf.sys

CVE-2026-13585

Resumo

O driver de kernel bsitf.sys da ASUS (também distribuído como AsusBSItf.sys) expõe o IOCTL 0x222808 que aloca memória do kernel fisicamente contígua de tamanho controlado pelo atacante, mapeia-a no espaço de endereçamento do processo solicitante com permissões totais de leitura/escrita e retorna tanto o endereço virtual do modo de usuário quanto o endereço físico para o solicitante.

O dispositivo requer privilégios de administrador para ser aberto, tornando isso um escalonamento de admin para kernel. Em um cenário BYOVD (Bring Your Own Vulnerable Driver), um atacante que já possui admin (por exemplo, via engenharia social ou um exploit separado) pode carregar este driver legítimo e assinado para obter acesso arbitrário à memória do kernel sem precisar de um exploit de kernel.

Versões Afetadas

VersãoNome do ArquivoPacoteTipo de Pool
3.0.10.0bsitf.sysASUS Business Manager / AbmSvcPackageNonPagedPool (executável)
3.1.10.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx
3.1.25.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx

Todas as versões criam o dispositivo \Device\bsitf com o link simbólico \DosDevices\bsitf.

Impacto

O buffer mapeado é uma alocação nova do pool do kernel, não um endereço arbitrário do kernel. O solicitante controla seu conteúdo, mas não sua localização. Isso limita a exploração em comparação com um verdadeiro R/W arbitrário do kernel.

  • Exaustão do pool do kernel (DoS) — alocações repetidas sem liberação esgotarão o NonPagedPool, causando BSOD. Nenhum limite de tamanho ou de alocações pendentes é imposto.
  • Divulgação de endereço físico — o IOCTL retorna o endereço físico de cada alocação, útil como vazamento de informação ou para ataques baseados em DMA.
  • Estágio de memória executável do kernel (apenas v3.0.x) — na versão 3.0.10.0, o tipo de pool é NonPagedPool (executável). Shellcode pode ser escrito a partir do modo de usuário no buffer mapeado, mas é necessária uma vulnerabilidade separada para redirecionar a execução do kernel para o endereço do buffer.

Nas versões v3.1.x (NonPagedPoolNx), o buffer não é executável e o impacto prático se limita a DoS e divulgação de endereço físico.

Causa Raiz

O IOCTL 0x222808 no manipulador de despacho realiza o seguinte sem validação de entrada:

root@kitploit:~
alloc_size = *(DWORD *)Irp->AssociatedIrp.SystemBuffer;  // controlado pelo usuário

kernel_va = MmAllocateContiguousMemory(alloc_size, 0xffffffff);
mdl = IoAllocateMdl(kernel_va, alloc_size, FALSE, FALSE, NULL);
MmBuildMdlForNonPagedPool(mdl);
user_va = MmMapLockedPages(mdl, UserMode);

output[0] = user_va;        // endereço virtual do modo de usuário
output[1] = physical_addr;  // endereço físico da alocação

Não há verificações no tamanho da alocação, no número de alocações pendentes ou validação de entrada. O dispositivo requer admin para abrir, mas uma vez que um handle é adquirido, os IOCTLs são irrestritos.

Prova de Conceito

Compilar

root@kitploit:~
cargo build --release

Carregar o driver

root@kitploit:~
sc create bsitf binPath= "C:\path\to\bsitf.sys" type= kernel
sc start bsitf

Executar

root@kitploit:~
# default: 0x1000 (4KB) allocation
cargo run --release

# custom size (hex)
cargo run --release -- 10000

Saída esperada

root@kitploit:~
[*] bsitf.sys kernel memory mapping PoC
[*] target alloc size: 0x1000

[+] device handle acquired

[*] allocating 0x1000 bytes of kernel memory via IOCTL 0x222808
[+] kernel allocation succeeded:
    usermode VA:     0x000001D856F90000
    physical addr:   0x00000000BF6CB000

[*] original contents (first 16 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[*] writing 0xCC pattern (int3 sled)...
[+] readback: usermode R/W CONFIRMED

[*] freeing kernel mapping via IOCTL 0x22280C
[+] mapping freed successfully

Testado no Windows 11 24H2 (requer administrador).

Remediação

  1. Validar o tamanho da alocação com um limite superior razoável
  2. Limitar o número de alocações pendentes por handle
  3. Não mapear alocações do kernel no espaço de endereçamento do modo de usuário
  4. Não retornar endereços físicos para chamadores do modo de usuário
  5. Usar NonPagedPoolNx em todas as versões

Cronograma

DataEvento
2026-04-06Vulnerabilidade descoberta via análise automatizada
2026-04-06PoC confirmada no Windows 11 24H2
2026-04-06Relatório enviado ao ASUS PSIRT

Referências

  • CWE-782: IOCTL Exposto com Controle de Acesso Insuficiente
  • Dispositivo: \Device\bsitf, Link simbólico: \DosDevices\bsitf
  • Manipulador de despacho: FUN_140001070

Aviso Legal

Esta prova de conceito é fornecida apenas para fins autorizados de pesquisa de segurança e divulgação responsável. Não utilize isto contra sistemas que você não possui ou para os quais não tem permissão explícita para testar.

Baixar ferramenta