
Análisis técnico de CVE-2025-40271, una vulnerabilidad crítica de Use-After-Free en el sistema de archivos /proc del kernel de Linux, incluyendo la causa raíz, pasos de reproducción y detalles del parche.
🔴 CVE-2025-40271: Vulnerabilidad Crítica de Uso-After-Free en el Kernel de Linux
El CVE-2025-40271 es una vulnerabilidad crítica de tipo Use-After-Free (UAF) que afecta al sistema de archivos /proc del kernel de Linux. La falla reside en la función proc_readdir_de(), encargada de listar los contenidos de los directorios dentro de /proc.
Cuando una entrada de directorio (PDE) es eliminada del árbol binario (rbtree) mediante rb_erase(), el kernel no marcaba el nodo como vacío. Esto genera un escenario peligroso:
/proc/pid/net/dev_snmp6/) mientras otro elimina interfaces de red (como dispositivos tun), el puntero puede quedar apuntando a memoria ya liberada.El equipo de desarrollo del kernel implementó un parche crítico que reemplaza el manejo del nodo por RB_CLEAR_NODE(). Esto garantiza que:
NULL en lugar de un puntero a memoria liberada.El parche ya está disponible en las siguientes ramas estables:
Para revisar el código exacto del parche, consulta estos commits:
"In the Linux kernel, the following vulnerability has been resolved: fs/proc: fix uaf in proc_readdir_de(). PDE is erased from subdir rbtree through
rb_erase(), but not set the node to EMPTY, which may result in UAF access. We should useRB_CLEAR_NODE()to set the erased node to EMPTY, thenpde_subdir_next()will returnNULLto avoid UAF access."
getdent para recorrer /proc/pid/net/dev_snmp6/ (el puntero actual es tun3).tun3 y tun2), eliminándolos del árbol.
tun3, luego tun2 (liberado a la slab).getdent, pero pde_subdir_next() devuelve tun2 (ya liberado), causando UAF.| CWE-ID | Nombre | Fuente |
|---|---|---|
| CWE-416 | Use After Free | NVD |
| URL | Descripción |
|---|---|
| NVD - CVE-2025-40271 | Detalle oficial (aún sin puntuación CVSS) |
| Kernel.org Commits | Código fuente de los parches |
⚠️ Recomendación Final:
Si utilizas kernel versiones 6.1.x, 6.6.x, 6.12.x o 6.13.x, actualiza inmediatamente a una versión parcheada. Si no es posible, considera aplicar los commits manualmente o restringir el acceso a /proc mediante políticas de seguridad (ej. chroot, SELinux).
| Campo | Detalle |
|---|
| ID | CVE-2025-40271 |
| Componente | Kernel de Linux (fs/proc) |
| Severidad | Alta (aunque aún no calificada oficialmente por el NVD/NIST) |
| Origen | Detectado con stress-ng (casos getdent y tun simultáneos) |
| NVD Status | No priorizado para enriquecimiento (recursos limitados) |