
Prueba de concepto que demuestra un use-after-free en cldflt.sys (CVE-2025-62221) que permite escalada local de privilegios a SYSTEM mediante grooming del pool del kernel y robo de tokens.
DEMO Prueba de Concepto: Inconsistencia de Memoria Temporal en cldflt.sys (CVE-2025-62221) CVE-2025-62221:
Este repositorio proporciona un análisis técnico exhaustivo y una demostración de Prueba de Concepto (PoC) sobre un vector de escalada de privilegios vertical. La vulnerabilidad se identifica como una primitiva Use-After-Free (UAF) que reside dentro del Controlador Mini Filtro de Archivos en la Nube de Windows (cldflt.sys). Esta documentación detalla los mecanismos mediante los cuales una entidad no privilegiada en modo usuario puede transicionar a un contexto de seguridad Ring 0 (NT AUTHORITY\SYSTEM).
La vulnerabilidad CVE-2025-62221 se origina en una falla crítica en la gestión temporal de los ciclos de vida de los objetos de memoria dentro del subsistema ejecutivo en modo kernel de Windows. Específicamente, el controlador cldflt.sys no implementa un conteo atómico de referencias durante el procesamiento de solicitudes de E/S asíncronas para puntos de reanálisis respaldados por la nube. Al orquestar una condición de carrera no determinista mediante rutinas de despacho malformadas de Control de Entrada/Salida (IOCTL), un actor local puede inducir un escenario de puntero colgante. Este estado permite el grooming del pool del kernel, facilitando primitivas de escritura arbitraria y la posterior sustitución de tokens de seguridad.
La metodología de explotación se estructura en varias fases discretas:
El procedimiento comienza con una auditoría del entorno kernel objetivo para verificar la presencia del módulo cldflt.sys. Además, calcula los desplazamientos necesarios para la estructura EPROCESS y los campos asociados del token de seguridad en relación con la compilación específica de Windows en ejecución.
El exploit instancia una serie de estructuras de directorio dispersas y respaldadas por la nube. Estas estructuras sirven como la superficie de interacción principal con el controlador de filtro, lo que permite al manipulador influir en los patrones de asignación dentro del Pool del Kernel No Paginado.
Mediante el envío de solicitudes de E/S concurrentes y malformadas, el exploit induce un estado asíncrono en el que un objeto de memoria se desasigna mientras una referencia activa persiste dentro de la pila de ejecución del controlador.
Se utiliza una técnica de Heap Spraying para ocupar la ranura de memoria recientemente liberada. El exploit puebla el pool con estructuras de datos controladas, transicionando efectivamente la condición de "Use-After-Free" a una de "Type Confusion" o "Sobrescritura Controlada de Puntero".
Tras secuestrar con éxito la ejecución en modo kernel, la carga útil ejecuta una operación de Token Stealing. Identifica el proceso SYSTEM (PID 4) y replica su token de acceso primario en el descriptor de seguridad del proceso del exploit.
[!CAUTION] Advertencia Experimental: Esta investigación está destinada a la validación académica y a la auditoría formal de seguridad en modo kernel. Una implementación incorrecta puede resultar en un Bug Check del Kernel (BSOD) o en la corrupción del sistema de archivos. Todas las pruebas deben realizarse dentro de un entorno hipervisor estrictamente aislado.
Inicializar la topología de red:
sudo python3 topo.py
Abrir terminales para los nodos cloud y usuario:
xterm cloud user
En la terminal cloud, navegar al directorio del proyecto e iniciar el servidor:
cd ~/Downloads/sps_test
python3 server.py
En la terminal de usuario, ejecutar el script de exploit automatizado (opcional):
python3 run_all.py
Alternativamente, ejecutar cada fase manualmente para una observación granular.
Ejecuta los siguientes procedimientos de forma secuencial en la terminal de usuario para observar las transiciones de estado de memoria:
Step 1 — Allocated FileObject | REF=ref-12345
python3 1.py
Step 2 — Object freed
python3 2.py
Step 3 — DANGLING REF
python3 3.py
Step 4 — Heap reuse
python3 4.py
Step 5 — Handler overwritten
python3 5.py
Step 6 — MALICIOUS HANDLER EXECUTED
python3 6.py
Nota: Tras un pivot exitoso en la fase 6, el sistema ejecutará la secuencia de comandos maliciosos definida en malware.json. Observarás mensajes de ejecución en la terminal cloud y recibirás el comando de malware en la terminal de usuario.
La documentación y el código contenidos en este repositorio se proporcionan exclusivamente para el avance de la investigación en ciberseguridad. El autor no acepta responsabilidad alguna por los daños derivados del uso de esta información. El objetivo de esta investigación es facilitar una comprensión integral de las vulnerabilidades de los controladores Mini Filtro y evaluar la eficacia de las estrategias de mitigación existentes.
Referencia: Microsoft Security Response Center (MSRC) - CVE-2025-62221
Realizado para la asignación SPS UPB 2026
| Parámetro | Especificación |
|---|
| Clase de Vulnerabilidad | Corrupción de Memoria Temporal / Use-After-Free (CWE-416) |
| Subsistema Objetivo | Controlador Mini Filtro de Archivos en la Nube de Windows (cldflt.sys) |
| Primitiva de Explotación | Grooming del Pool del Kernel y Exfiltración de Tokens |
| Límite de Privilegios | Usuario a Kernel / Usuario Estándar a SYSTEM |
| Vector CVSS v3.1 | AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H (Puntuación Base: 7.8) |
| Contexto Temporal | Identificado en el cuarto trimestre de 2025; Parche de Mitigación Publicado en Enero de 2026 |
| Archivo | Uso |
|---|
| topo.py | Script de orquestación de Mininet que define el límite de la red |
| server.py | Servicio simulado del controlador cldflt.sys que incorpora la lógica UAF |
| run_all.py | Script de explotación automatizado para pruebas eficientes |
| user.py | Script de explotación automatizado alternativo |
| 1.py a 6.py | Etapas de explotación discretas proporcionadas para un análisis técnico granular |
| malware.json | Carga maliciosa utilizada para demostrar la primitiva de ejecución de código : Carga maliciosa utilizada para demostrar la primitiva de ejecución de código |