
Feb 2026 / Vulnerabilità di corruzione della memoria nel driver del kernel di MiniTool. Dimostra una primitiva di scrittura arbitraria nel kernel assistita dal debugger che può essere sfruttata per l'escalation dei privilegi.
Condizione write-what-where nel kernel all'interno del driver del kernel pwdrvio.sys di MiniTool. Dimostra una primitiva di scrittura arbitraria nel kernel assistita da debugger che può essere sfruttata per l'escalation dei privilegi.
https://github.com/user-attachments/assets/ac81d7ce-0be7-40a5-9334-c54350e6e30e
Scrittura Arbitraria nel Kernel → Escalation Locale dei Privilegi (LPE)
Gravità: ALTA
Punteggio CVSS 3.1: 7.8 (LPE)
Stringa del Vettore CVSS:
LPE: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Prerequisiti dell'Attacco:
Risultati dello Sfruttamento: LPE - Escalation dei privilegi assistita da debugger dimostrata (NT AUTHORITY / SYSTEM), compromissione completa del sistema
Data: 5 febbraio 2026
Attività: Fuzzing sistematico del driver del kernel utilizzando un fuzzer Python personalizzato
Processo di Scoperta:
Selezione del Target:
pwdrvio.sys come driver più vecchio (timestamp: 16 giugno 2009)C:\Windows\System32\drivers\pwdrvio.sys\\.\PartitionWizardDiskAccesser\0Fuzzing Iniziale:
ctypes per interfacciarsi con il driverWriteFile/DeviceIoControl al dispositivo del driverAttivazione del Verifier:
Configurazione del Verifier: ```
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
### Configurazione del Debugging del Kernel con WinDbg
**Data:** 5-6 febbraio 2026
**Attività:** Configurato un ambiente di debugging del kernel per l'analisi delle cause principali
**Procedura di configurazione:**
1. **Configurazione della porta seriale 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" ✓
Configurazione del sistema operativo guest: ```cmd REM Administrator Command Prompt bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 shutdown /r /t 0
Connessione Host WinDbg: ``` WinDbg → File → Attach to Kernel ├─ Port: \.\pipe\com_1 ├─ Baud Rate: 115200 ├─ Pipe: ✓ └─ Reconnect: ✓
Result: "Kernel Debugger connection established."
Data: 6 febbraio 2026
Attività: Identificata primitiva di scrittura arbitraria nel kernel
Passaggi dell'Analisi:
Analisi del Modulo: ```
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
Scoperta delle istruzioni vulnerabili:
Imposta un punto di interruzione sul gestore di scrittura: ``` 1: kd> bp pwdrvio+0x1641 1: kd> g
Breakpoint 0 hit pwdrvio+0x1641: fffff805`315f1641 498943f0 mov qword ptr [r11-10h],rax
Riscontro critico: identificata primitiva di scrittura arbitraria!
RAX) all'indirizzo [R11-0x10]R11 viene caricato dal frame dello stack: mov r11, qword ptr [rbp+0xB8h]Analisi dello stato dei registri: ``` 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
Data: 6-7 febbraio 2026
Attività: Tracciata la vulnerabilità da User-After-Free alla condizione write-what-where
Catena di corruzione della memoria:
Allocazione dell'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
Relazione del Buffer: ``` 0: kd> r rsi rsi=ffffe60f828df900 ← User buffer location
0: kd> ? @rbp - @rsi Evaluate expression: 35823344 = 00000000`02229ef0 ← 35MB difference!
Analisi: Il buffer utente NON è direttamente accessibile dal frame RBP
RBP+0xB8 non punta al buffer controllato dall'utenteCondizione Use-After-Free:
Il driver mantiene puntatori dangling nella struttura 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!
Data: 7-8 febbraio 2026
Attività: Sviluppata tecnica di furto di token
Strategia di Exploitation:
Obiettivo: Sovrascrivere il token del processo corrente con il token di SYSTEM
Struttura EPROCESS di Windows:``` +0x000 Pcb : _KPROCESS ... +0x4b8 Token : _EX_FAST_REF ← Token pointer location
**Procedura di Furto del Token:**