Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-40271 — CVE-2025-40271 Modificado por MadEploits | Kitploit
Herramientas/GitHubGitHub/madexploits/cve-2025-40271
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPapers e InvestigaciónAprendizaje y EducaciónExplotación de Binarios
GitHubmadexploits/cve-2025-40271

CVE-2025-40271

CVE-2025-40271 Modificado por MadEploits

Ver Repositorio
1115hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-40271 — LPE por UAF del árbol rb en proc_readdir_de()

Prueba de concepto para una vulnerabilidad de escalada local de privilegios en el sistema de archivos proc del kernel de Linux. El fallo es un use-after-free en proc_readdir_de() provocado por rb_erase() sin RB_CLEAR_NODE(), que deja enlaces obsoletos del árbol rojo-negro que pueden aprovecharse mediante una condición de carrera durante la enumeración de directorios.

Autor: MadExploits

Investigación original de la vulnerabilidad y PoC en C por Aviral Srivastava (N-DAY RESEARCH). Este repositorio incluye una versión en shell (exploit.sh) para entornos donde la compilación no resulta práctica.


Descripción general

CampoDetalle
CVECVE-2025-40271
Componentefs/proc — proc_readdir_de() / remove_proc_entry()
TipoUse-after-free (enlaces obsoletos del árbol rb)
ImpactoEscalada local de privilegios (LPE)
Arquitecturax86_64
AfectadosKernels de Linux hasta 6.18-rc5

Causa raíz

Cuando se elimina una entrada de directorio de proc, se invoca rb_erase() sobre el nodo rb de la entrada sin RB_CLEAR_NODE(). Los nodos liberados pueden permanecer accesibles a través de enlaces obsoletos del árbol. Si getdents64() entra en carrera con la eliminación de interfaces en /proc/self/net/dev_snmp6/, el kernel puede leer memoria liberada — a menudo reutilizada por objetos msg_msg rociados en el heap — y devolver valores anómalos de d_ino que filtran punteros del heap del kernel.


Kernels afectados y parcheados

El PoC comprueba la versión del kernel en ejecución y termina en las builds parcheadas:

RamaCorregido en
5.10.x5.10.247+
6.1.x6.1.159+
6.6.x6.6.123+
6.12.x6.12.73+
6.18+6.18-rc6+
7.x+Parcheado

Contenido del repositorio

ArchivoDescripción
exploit.cPoC completo en C — gestión de veth por netlink, carrera con pthreads, rociado de msg_msg
exploit.shVersión en shell sin compilación — unshare, ip, Python 3 integrado para syscalls/carrera

Ambas implementaciones siguen el mismo flujo de explotación:

  1. Entrar en el namespace de usuario y de red (obtener CAP_NET_ADMIN en el net ns)
  2. Crear pares veth → poblar /proc/self/net/dev_snmp6/
  3. Ejecutar getdents64() en carrera contra la eliminación rápida de veth + rociado del heap
  4. Detectar el UAF mediante valores de d_ino similares a punteros del kernel
  5. Intentar la escalada (el LPE completo requiere offsets de KASLR específicos del kernel)

Requisitos

Comunes

  • Linux x86_64
  • Namespaces de usuario sin privilegios habilitados:
    cat /proc/sys/kernel/unprivileged_userns_clone
    # must be 1
    
  • Usuario no root (el PoC termina si ya se es root)

exploit.c

  • gcc con pthreads
  • Cabeceras de Linux (linux/netlink.h, etc.)
gcc -o exploit exploit.c -lpthread

exploit.sh

  • bash
  • python3
  • ip (iproute2)
  • unshare (util-linux con soporte para --map-root-user)

No se requiere compilador.


Uso

Versión para shell (recomendada para pruebas rápidas)

chmod +x exploit.sh
./exploit.sh

Versión en C

gcc -o exploit exploit.c -lpthread
./exploit

Salida esperada

Kernel vulnerable — UAF activado (éxito parcial):

[+] Kernel X.Y.Z — VULNERABLE
[+] Namespace ready...
[+] Created 32 veth pairs (/proc/self/net/dev_snmp6 populated)
[+] UAF HIT! d_ino=0xffff8880........ (kernel heap pointer)
[+] Kernel heap leak: 0xffff8880........
[*] PARTIAL SUCCESS: UAF + heap leak DEMONSTRATED

Kernel parcheado:

[-] Kernel X.Y.Z — PATCHED
[*] Kernel is patched. Nothing to do.

Notas de explotación

  • Fuga de heap: Cuando la carrera se gana, d_ino contiene un valor que coincide con el patrón de puntero de kernel x86_64 (0xffff000000000000), normalmente procedente del m_list de la cabecera de msg_msg que se solapa con datos liberados de proc_dir_entry.
  • LPE completo: Sobrescribir modprobe_path requiere el offset entre la dirección de heap filtrada y la base del texto del kernel — esto es específico de la build (KASLR). El PoC demuestra el UAF y la fuga; una cadena completa necesita los offsets para la imagen de tu kernel objetivo.
  • Fiabilidad: El éxito depende de la temporización del planificador. El PoC reintenta hasta 30 intentos de carrera por defecto.

Mitigación

  • Actualiza a un kernel parcheado (consulta la tabla anterior).
  • Si no se necesitan namespaces de usuario, desactiva la creación sin privilegios:
    sysctl -w kernel.unprivileged_userns_clone=0
    
  • Aplica las actualizaciones de seguridad del proveedor para CVE-2025-40271.

Descargo de responsabilidad

Este proyecto se proporciona únicamente para investigación de seguridad autorizada, educación y pruebas defensivas.

  • Ejecútalo solo contra sistemas de tu propiedad o para los que tengas permiso explícito por escrito.
  • El uso no autorizado contra sistemas de terceros puede violar las leyes aplicables.
  • Los autores y colaboradores no son responsables del mal uso de este código.

Créditos

RolNombre
Autor del repositorioMadExploits
Investigación original del CVE y PoC en CAviral Srivastava — N-DAY RESEARCH

Licencia

Úsalo bajo tu propio riesgo. No se proporciona ninguna garantía.

Descargar herramienta