
Exploit de prueba de concepto para escalada local de privilegios en CVE-2017-7184, un desbordamiento de pila XFRM netlink del kernel de Linux. Demuestra abuso de espacios de nombres y ROP del kernel para obtener root sin sudo.
Este repositorio contiene un exploit de prueba de concepto para escalada de privilegios local de la CVE-2017-7184, una vulnerabilidad del kernel de Linux en el subsistema XFRM (IPsec) de netlink.
El exploit demuestra cómo un usuario sin privilegios puede obtener root real (UID 0) mediante:
Crear un espacio de nombres de usuario + red sin privilegios
Obtener CAP_NET_ADMIN dentro del espacio de nombres
Provocar un desbordamiento de pila del kernel en el manejo de netlink XFRM
Ejecutar una cadena ROP del kernel para llamar a:
prepare_kernel_cred(NULL)commit_creds()Volver de forma segura al espacio de usuario con privilegios root completos
No se requiere sudo.
Espacio de nombres de usuario sin privilegios
unshare(CLONE_NEWUSER | CLONE_NEWNET)CAP_NET_ADMIN sin sudoAbuso de XFRM Netlink
NETLINK_XFRMXFRM_MSG_NEWSAEjecución ROP del Kernel
Retorno al Espacio de Usuario
swapgs; iretqunprivileged_userns_clone = 1gcc con soporte para pthreadComprueba el soporte de espacios de nombres:
cat /proc/sys/kernel/unprivileged_userns_clone
Salida esperada:
1
gcc exploit.c -o exploit -pthread
./exploit
No uses sudo.
Si tiene éxito, obtendrás una shell root real:
uid=0(root) gid=0(root) groups=0(root)
El exploit intenta:
Filtrar símbolos de /proc/kallsyms
Si está restringido, usar offsets hardcodeados para:
commit_credsprepare_kernel_cred⚠️ Los gadgets ROP y los offsets son específicos de la versión del kernel. Debes ajustarlos para otras compilaciones.
Esto todavía confirma que el sistema es vulnerable.
sysctl -w kernel.unprivileged_userns_clone=0
Este código se proporciona únicamente con fines educativos y de investigación en seguridad.
commit_creds| Campo | Valor |
|---|
| CVE | CVE-2017-7184 |
| Componente | Linux Kernel – XFRM Netlink |
| Tipo de error | Desbordamiento de pila del kernel |
| Impacto | Escalada de privilegios local |
| Vector de ataque | Local (usuario sin privilegios) |
| Clase de exploit | Abuso de espacios de nombres + ROP |
| Primeras versiones afectadas | Núcleos de Linux ≤ 4.8 |
| Corregido en | Parches del kernel publicados en 2017 |