
Feb 2026 / Vulnerabilidad de corrupción de memoria en el controlador del kernel de MiniTool. Demuestra una primitiva de escritura arbitraria en el kernel asistida por depurador que puede aprovecharse para la escalada de privilegios.
Condición de escritura-qué-dónde (write-what-where) en el kernel dentro del controlador de kernel pwdrvio.sys de MiniTool. Demuestra una primitiva de escritura arbitraria al kernel asistida por depurador que puede aprovecharse para la escalada de privilegios.
https://github.com/user-attachments/assets/ac81d7ce-0be7-40a5-9334-c54350e6e30e
Escritura Arbitraria al Kernel → Escalada Local de Privilegios (LPE)
Gravedad: ALTA
Puntuación CVSS 3.1: 7.8 (LPE)
Cadena de Vector CVSS:
LPE: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Prerrequisitos del Ataque:
Resultados de la Explotación: LPE - Escalada de privilegios asistida por depurador demostrada (NT AUTHORITY / SYSTEM), compromiso completo del sistema
Fecha: 5 de febrero de 2026
Actividad: Fuzzing sistemático del controlador de kernel mediante un fuzzer Python personalizado
Proceso de Descubrimiento:
Selección del Objetivo:
pwdrvio.sys como el controlador más antiguo (marca de tiempo: 16 de junio de 2009)C:\Windows\System32\drivers\pwdrvio.sys\\.\PartitionWizardDiskAccesser\0Fuzzing Inicial:
ctypes para interactuar con el controladorWriteFile/DeviceIoControl al dispositivo del controladorActivación del Verificador:
Configuración del Verificador: ```
Verifier Flags: 0x001209bb
Standard Flags Enabled:
[X] Special pool
[X] Force IRQL checking
[X] Pool tracking
[X] I/O verification
[X] Deadlock detection
[X] DMA checking
[X] Security checks
[X] Miscellaneous checks
[X] DDI compliance checking
### Configuración de Depuración de Kernel con WinDbg
**Fecha:** 5-6 de febrero de 2026
**Actividad:** Se estableció un entorno de depuración de kernel para el análisis de causa raíz
**Procedimiento de Configuración:**
1. **Configuración del Puerto Serie de VMware:** ```
VMware Workstation Pro → VM Settings
├─ Add Hardware → Serial Port
├─ Connection: "Use named pipe"
├─ Path: \\.\pipe\com_1
├─ End: "This is the server"
└─ I/O Mode: "Yield CPU on poll" ✓
Configuración del sistema operativo invitado: ```cmd REM Administrator Command Prompt bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 shutdown /r /t 0
Conexión WinDbg del Host: ``` WinDbg → File → Attach to Kernel ├─ Port: \.\pipe\com_1 ├─ Baud Rate: 115200 ├─ Pipe: ✓ └─ Reconnect: ✓
Result: "Kernel Debugger connection established."
Fecha: 6 de febrero de 2026
Actividad: Se identificó una primitiva de escritura arbitraria en el kernel
Pasos del análisis:
Análisis del módulo: ```
1: kd> lm m pwdrvio
start end module name
fffff805315f0000 fffff805315f8000 pwdrvio (Jun 16 2009)
1: kd> !drvobj pwdrvio 2 Driver object (fffff805`XXXXXXXX) is for: \Driver\pwdrvio
DriverEntry: fffff805315f6008 DriverUnload: fffff805315f1060
Dispatch Routines:
[00] IRP_MJ_CREATE fffff805315f108c [02] IRP_MJ_CLOSE fffff805315f12f8
[03] IRP_MJ_READ fffff805315f16c4 [04] IRP_MJ_WRITE fffff805315f1564 ← Target
[0e] IRP_MJ_DEVICE_CONTROL fffff805`315f1404
Descubrimiento de instrucciones vulnerables:
Establecer un punto de interrupción en el manejador de escritura: ``` 1: kd> bp pwdrvio+0x1641 1: kd> g
Breakpoint 0 hit pwdrvio+0x1641: fffff805`315f1641 498943f0 mov qword ptr [r11-10h],rax
Hallazgo crítico: ¡Se identificó una primitiva de escritura arbitraria!
RAX) en la dirección [R11-0x10]R11 se carga desde el marco de pila: mov r11, qword ptr [rbp+0xB8h]Análisis del estado de registros: ``` 0: kd> r rax=fffff805315f1364 ← Kernel code pointer r11=ffffe60f84c38750 ← Destination address (controlled via stack) rbp=ffffe60f84c38610 ← IRP stack frame
0: kd> dq @rbp+0xB8 L1
ffffe60f84c386c8 ffffe60f84c38750 ← R11 loaded from here
Fecha: 6-7 de febrero de 2026
Actividad: Rastreo de la vulnerabilidad desde Use-After-Free hasta la condición de write-what-where
Cadena de corrupción de memoria:
Asignación de IRP: ``` 0: kd> !pool @rbp Pool page ffffe60f84c38610 region is Special pool *ffffe60f84c38000 size: 1f0 data: ffffe60f84c38e10 (NonPaged) *Irp+ Pooltag Irp+ : I/O verifier allocated IRP packets
Relación de Buffer: ``` 0: kd> r rsi rsi=ffffe60f828df900 ← User buffer location
0: kd> ? @rbp - @rsi Evaluate expression: 35823344 = 00000000`02229ef0 ← 35MB difference!
Análisis: El búfer del usuario NO es directamente accesible desde el marco RBP
RBP+0xB8 no apunta al búfer controlado por el usuarioCondición de Use-After-Free:
El controlador mantiene punteros colgantes en la estructura IRP: ```c // Ghidra decompilation (pwdrvio+0x1564) longlong lVar1 = *(longlong *)(param_2 + 0xb8); // Load from IRP
// No validation! lVar5 = IoBuildAsynchronousFsdRequest(...);
// Write to [lVar1 - 0x10] *(code **)(lVar3 + -0x10) = FUN_00011364; // Arbitrary write!
Fecha: 7-8 de febrero de 2026
Actividad: Desarrollo de técnica de robo de tokens
Estrategia de Explotación:
Objetivo: Sobrescribir el token del proceso actual con el token de SYSTEM
Estructura EPROCESS de Windows:``` +0x000 Pcb : _KPROCESS ... +0x4b8 Token : _EX_FAST_REF ← Token pointer location
**Procedimiento de Robo de Tokens:**