
Fecha del proyecto : Oct 2025 / Implementación de PoC para CVE-2025-54110 una vulnerabilidad de desbordamiento de enteros a nivel de kernel en la llamada al sistema `NtQueryDirectoryObject` de Windows.
Implementación del PoC para CVE-2025-54110, una vulnerabilidad de desbordamiento de enteros a nivel de kernel en la llamada al sistema NtQueryDirectoryObject de Windows.
CVE: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-54110
Este repositorio contiene un PoC de solo bloqueo para la vulnerabilidad CVE-2025-54110 (EoP del kernel), desarrollado únicamente con fines de investigación en seguridad, ingeniería inversa e investigación de desarrollo de exploits. Este código está destinado a demostrar técnicas de investigación de vulnerabilidades que incluyen:
Este PoC NO logra escalada de privilegios ni BSOD fiable. Está diseñado para desencadenar de forma segura violaciones de acceso que son interceptadas por las protecciones del kernel de Windows.
Fecha de publicación: Septiembre de 2025 (Parche de seguridad del martes de Windows)
| Propiedad | Valor |
|---|---|
| CWE | CWE-190: Desbordamiento de enteros o envoltura |
| Puntuación CVSS 3.1 | 8.8 (Alta) / 7.7 (Temporal) |
| Cadena del vector | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H/E:U/RL:O/RC:C |
| Vector de ataque | Local |
| Complejidad del ataque | Baja |
| Privilegios requeridos | Bajos |
| Interacción del usuario | Ninguna |
| Alcance | Cambiado |
| Confidencialidad | Alta |
| Integridad | Alta |
| Disponibilidad | Alta |
| Madurez del exploit | No comprobada |
Una vulnerabilidad de desbordamiento de enteros en el kernel de Windows permite que un atacante autenticado pueda escalar privilegios localmente. Según el aviso de Microsoft:
"Un atacante podría explotar esta vulnerabilidad enviando entradas especialmente diseñadas desde un proceso en modo usuario aislado (sandbox) para desencadenar un desbordamiento de enteros, lo que resulta en un desbordamiento de búfer en el kernel y permite la escalada de privilegios o la salida del sandbox."
Windows Update Files from Aug 2025 & Sep 2025 (KB.msu) ↓ Extract CAB Files ↓ Calculate SHA-256 Hashes (August vs September) ↓ Identify Changed Files ↓ Ghidra Version Tracking Analysis ↓ Setting Symbol Servers to Clarify Function Names ↓ Function-Level Diff Comparison
### 2. Archivos Analizados
El análisis inicial se centró en dos componentes principales del kernel:
#### win32k.sys (-)
- **Resultado:** No se detectaron cambios significativos
- **Rango de Puntuación:** 0.97-1.0 (alta similitud)
- **Conclusión:** No es el componente vulnerable para CVE-2025-54110
#### ntoskrnl.exe (+)
- **Resultado:** Múltiples funciones con cambios significativos
- **Rango de Puntuación:** Funciones con puntuaciones ≤0.951
- **Diferencias de Longitud:** Se detectaron variaciones en la longitud de bytes entre origen y destino
- **Elementos Exportados Totales:** 2,036 funciones para análisis
### 3. Resultados del Seguimiento de Versiones en Ghidra
Muestra de cambios identificados en `ntoskrnl.exe`:
| Puntuación | Confianza | Long. Origen | Long. Destino | Función Origen | Función Destino |
|------------|-----------|--------------|---------------|----------------|-----------------|
| 0.951 | 2.618 | 1023 | 365 | FUN_1403146d0 | FUN_1403a4ea0 |
| 0.950 | 2.285 | 113 | 203 | FUN_140680810 | FUN_1406d952c |
| 0.950 | 3.137 | 782 | 1050 | FUN_14032106c | FUN_140303a38 |
| 0.951 | 2.675 | 141 | 171 | FUN_140407bd0 | FUN_140a172a0 |
| 0.951 | 2.660 | 346 | 150 | FUN_140610e60 | FUN_1406115d4 |
---
## Declaración del PoC
### Enfoque Técnico
El PoC (`precise_overflow_bsod.c`) intenta desencadenar la vulnerabilidad de desbordamiento de enteros mediante:
1. **Cálculo Preciso del Umbral:** `0xfffffdbc` (derivado de base=0x20, name=0x200)
2. **API NtQueryDirectoryObject:** Función objetivo para desencadenar el desbordamiento
3. **Estrategia de Ataque en Múltiples Fases:**
- Fase 1: Intentos de desbordamiento de enteros de precisión
- Fase 2: Apuntado a memoria del kernel
- Fase 3: Explotación multihilo
### Estructura del Código
```c
// PoC Structure: precise_overflow_bsod.c
// Target: CVE-2025-54110 (Integer Overflow in ntoskrnl.exe)
// Approach: NtQueryDirectoryObject with crafted input
``````c
// Key threshold values calculated for overflow
ULONG precise_thresholds[] = {
0xfffffdbc, // Precise threshold - base=0x20, name=0x200
0xfffffdbb, // Threshold - 1
0xfffffdbd, // Threshold + 1
0xfffffdba, // Threshold - 2
0xfffffdbe, // Threshold + 2
};
// Buffer configurations to test edge cases
PVOID buffer_types[] = {
VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE), // Normal buffer
VirtualAlloc(NULL, 0x10, MEM_COMMIT, PAGE_READWRITE), // Small buffer
NULL, // NULL pointer
(PVOID)0x4141414141414141, // Invalid pointer
(PVOID)0x0000000000000000, // Zero address
};
NtQueryDirectoryObject() Parameters: ├── DirectoryHandle: \BaseNamedObjects, \KernelObjects, etc. ├── Buffer: Various pointer configurations ├── BufferLength: Calculated overflow thresholds (0xfffffdbc variants) ├── ReturnSingleEntry: TRUE/FALSE variations ├── RestartScan: TRUE/FALSE variations └── Context: Controlled iteration state
---
## Por qué el PoC no bloquea el sistema
### Resultados reales
El PoC devuelve consistentemente `STATUS_ACCESS_VIOLATION (0xC0000005)` sin provocar una Pantalla Azul de la Muerte (BSOD). Esto es **por diseño** y demuestra varios mecanismos críticos de seguridad del kernel de Windows:
### 1. Manejo Estructurado de Excepciones (SEH)```
User-Mode Input → NtQueryDirectoryObject
↓
ProbeForRead/Write
↓
__try { ... }
↓
Access Violation Detected
↓
__except { ... }
↓
Return STATUS_ACCESS_VIOLATION
Por qué funciona:
Característica moderna de CPU que impide que el modo kernel (Ring 0) acceda a la memoria de modo usuario (Ring 3) sin autorización explícita:``` Kernel attempts to access user pointer ↓ SMAP checks permission (STAC/CLAC instructions) ↓ Unauthorized access detected ↓ CPU generates #PF (Page Fault) ↓ Caught by kernel exception handler
**Impacto en PoC:**
- Incluso si ocurre un desbordamiento, el acceso directo a la memoria del kernel al usuario está bloqueado
- Previene la explotación de vulnerabilidades de desreferencia de punteros