
Projet Date : Fév 2026 / Vulnérabilité de corruption mémoire dans le pilote noyau de MiniTool. Démontre une primitive d'écriture arbitraire dans le noyau assistée par débogueur, pouvant être exploitée pour une élévation de privilèges.
Condition de type write-what-where dans le noyau au sein du pilote kernel pwdrvio.sys de MiniTool. Démontre une primitive d'écriture arbitraire dans le noyau assistée par débogueur, pouvant être exploitée pour une élévation de privilèges.
https://github.com/user-attachments/assets/ac81d7ce-0be7-40a5-9334-c54350e6e30e
Écriture arbitraire dans le noyau → Élévation de privilèges locale (LPE)
Sévérité : ÉLEVÉE
Score CVSS 3.1 : 7.8 (LPE)
Chaîne vectorielle CVSS :
LPE : CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Conditions préalables à l'attaque :
Résultats de l'exploitation : LPE - Élévation de privilèges assistée par débogueur démontrée (NT AUTHORITY / SYSTEM), compromission totale du système
Date : 5 février 2026
Activité : Fuzzing systématique des pilotes du noyau à l'aide d'un fuzzer Python personnalisé
Processus de découverte :
Sélection de la cible :
pwdrvio.sys comme pilote le plus ancien (horodatage : 16 juin 2009)C:\Windows\System32\drivers\pwdrvio.sys\\.\PartitionWizardDiskAccesser\0Fuzzing initial :
ctypes pour interfacer avec le piloteWriteFile/DeviceIoControl au périphérique du piloteActivation du vérificateur :
Configuration du vérificateur : ```
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
### Configuration du débogage du noyau WinDbg
**Date :** 5-6 février 2026
**Activité :** Mise en place d'un environnement de débogage du noyau pour l'analyse des causes racines
**Procédure de configuration :**
1. **Configuration du port série 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" ✓
Configuration du système d'exploitation invité : ```cmd REM Administrator Command Prompt bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 shutdown /r /t 0
Connexion hôte WinDbg : ``` WinDbg → File → Attach to Kernel ├─ Port: \.\pipe\com_1 ├─ Baud Rate: 115200 ├─ Pipe: ✓ └─ Reconnect: ✓
Result: "Kernel Debugger connection established."
Date : 6 février 2026
Activité : Primitive d'écriture arbitraire dans le noyau identifiée
Étapes de l'analyse :
Analyse du module : ```
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
Découverte d'instructions vulnérables :
Définir un point d'arrêt sur le gestionnaire d'écriture : ``` 1: kd> bp pwdrvio+0x1641 1: kd> g
Breakpoint 0 hit pwdrvio+0x1641: fffff805`315f1641 498943f0 mov qword ptr [r11-10h],rax
Constatation critique : Primitive d'écriture arbitraire identifiée !
RAX) à l'adresse [R11-0x10]R11 est chargé depuis le cadre de pile : mov r11, qword ptr [rbp+0xB8h]Analyse de l'état des registres : ``` 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
Date : 6-7 février 2026
Activité : Traçage de la vulnérabilité de User-After-Free vers une condition write-what-where
Chaîne de corruption mémoire :
Allocation 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
Relation de tampon : ``` 0: kd> r rsi rsi=ffffe60f828df900 ← User buffer location
0: kd> ? @rbp - @rsi Evaluate expression: 35823344 = 00000000`02229ef0 ← 35MB difference!
Analyse : Le buffer utilisateur n'est PAS directement accessible depuis le cadre RBP
RBP+0xB8 ne pointe pas vers le buffer contrôlé par l'utilisateurCondition Use-After-Free :
Le pilote maintient des pointeurs pendants dans la structure 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!
Date : 7-8 février 2026
Activité : Développement de la technique de vol de jeton
Stratégie d'exploitation :
Objectif : Remplacer le jeton du processus actuel par un jeton SYSTEM
Structure EPROCESS de Windows :``` +0x000 Pcb : _KPROCESS ... +0x4b8 Token : _EX_FAST_REF ← Token pointer location
**Procédure de vol de jeton :**