Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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-31133 — CVE-2025-31133 PoC | Kitploit
Herramientas/GitHubGitHub/skynet-f-nvidia/cve-2025-31133
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónRed TeamingEscape de Contenedores
GitHubskynet-f-nvidia/cve-2025-31133

CVE-2025-31133

CVE-2025-31133 PoC

Ver Repositorio
217hace 10 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-31133 PoC Exploit

Este documento explica la funcionalidad del script de Prueba de Concepto (PoC) proporcionado para la vulnerabilidad runc CVE-2025-31133.

Resumen

  • Vulnerabilidad: CVE-2025-31133 - Una condición de carrera de enlace simbólico en el manejo de maskedPaths de runc.
  • Impacto: Un contenedor malicioso puede eludir las protecciones de maskedPaths, permitiéndole escribir en archivos sensibles del sistema anfitrión. Esto constituye un escape de contenedor.
  • Objetivo del PoC: Demostrar de forma segura la vulnerabilidad modificando el archivo /proc/sys/kernel/core_pattern del anfitrión desde dentro de un contenedor.
  • Seguridad: Este PoC no es destructivo. Solo escribe la cadena "pwned" en el archivo objetivo y no ejecuta código arbitrario en el anfitrión. También proporciona instrucciones para restaurar el valor original.

Vulnerabilidad explicada

La característica maskedPaths en la especificación OCI de un contenedor (config.json) es un mecanismo de seguridad diseñado para evitar que los contenedores accedan a archivos sensibles del sistema. Funciona montando con bind /dev/null (un archivo de dispositivo vacío) sobre estas rutas sensibles dentro del contenedor, haciéndolos efectivamente ilegibles e inescribibles.

La vulnerabilidad (CVE-2025-31133) es una condición de carrera Time-of-Check a Time-of-Use (TOCTOU). El exploit funciona de la siguiente manera:

  1. El fallo: Cuando runc configura el contenedor, se prepara para usar el archivo dev/null del rootfs del contenedor como origen para el montaje bind que enmascarará la ruta sensible (por ejemplo, /proc/sys/kernel/core_pattern).
  2. La carrera: Existe una pequeña ventana de tiempo entre que runc resuelve la ruta a rootfs/dev/null y cuando realmente realiza la operación de montaje.
  3. El exploit: Un atacante puede crear un script en el anfitrión que intercambie de forma continua y muy rápida el archivo rootfs/dev/null entre un nodo de dispositivo legítimo y un enlace simbólico que apunte al archivo objetivo en el anfitrión (/proc/sys/kernel/core_pattern).
  4. Ganar la carrera: Si el tiempo es perfecto, runc realizará su operación de montaje en el momento exacto en que rootfs/dev/null es un enlace simbólico. Esto hace que el kernel siga el enlace simbólico, y la operación de enmascaramiento prevista falla para /proc/sys/kernel/core_pattern.
  5. Escape del contenedor: Debido a que el enmascaramiento falló, la ruta dentro del contenedor ya no está protegida. Un proceso que se ejecute dentro del contenedor ahora puede escribir en , lo que modifica directamente el archivo del anfitrión, logrando un escape del contenedor.

Este PoC utiliza esta técnica para escribir en /proc/sys/kernel/core_pattern, un objetivo común para tales exploits porque modificarlo puede llevar a la ejecución de código arbitrario en el anfitrión cuando un proceso falla. Sin embargo, este PoC solo escribe una cadena inofensiva para demostrar que existe la primitiva de escritura.


Cómo funciona el script PoC

El script poc.sh automatiza todo el proceso descrito anteriormente.

  1. Configuración y limpieza:

    • Define variables para el binario runc, el nombre del contenedor y la ruta del rootfs.
    • Incluye una función cleanup robusta que asegura que cualquier contenedor o archivo creado previamente por el script sea eliminado. Esta función se llama automáticamente al salir, interrumpir o terminar.
  2. Preparación:

    • Guarda el contenido original del archivo /proc/sys/kernel/core_pattern del anfitrión en un archivo temporal. Esto se utiliza más tarde para verificar si el exploit tuvo éxito y para ayudar al usuario a restaurar el sistema.
    • Crea un rootfs mínimo del contenedor (./rootfs) y un archivo config.json.
    • El config.json lista explícitamente /proc/sys/kernel/core_pattern bajo maskedPaths — la misma característica que el exploit pretende eludir.
  3. La función de carrera (symlink_race)

    • Este es el núcleo del exploit. Está diseñada para ejecutarse en segundo plano.
    • Entra en un bucle ajustado que dura 20 segundos.
    • Dentro del bucle, repite:

Uso

Requisitos previos:

  • Una versión vulnerable de runc.
  • busybox-static instalado (para el shell del contenedor).
  • Privilegios de root (sudo) para ejecutar runc y modificar /proc.

Pasos:

  1. Guarda el script como poc.sh.
  2. Hazlo ejecutable: chmod +x poc.sh.
  3. Ejecútalo con sudo: sudo ./poc.sh.

Interpretación de la salida

  • Éxito: Si ves el mensaje [+] EXPLOIT SUCCEEDED!, significa que se ganó la condición de carrera. El archivo /proc/sys/kernel/core_pattern del anfitrión fue modificado exitosamente desde dentro del contenedor, confirmando la vulnerabilidad.
  • Fallo: Si ves [-] Exploit did not succeed., la carrera no se ganó en este intento. Las condiciones de carrera son probabilísticas y dependen en gran medida del tiempo y la carga del sistema. Intenta ejecutar el script varias veces más.

Restaurar tu sistema (después de una ejecución exitosa)

El PoC modificará un archivo del sistema. Para restaurarlo a su estado original, ejecuta el comando sugerido por el script:

root@kitploit:~
# El 'ORIGINAL_PATTERN' será el valor real de tu sistema
echo 'original_core_pattern_value' | sudo tee /proc/sys/kernel/core_pattern
Descargar herramienta
/proc/sys/kernel/core_pattern
  1. Elimina rootfs/dev/null.
  2. Crea un enlace simbólico desde rootfs/dev/null al archivo objetivo del anfitrión (/proc/sys/kernel/core_pattern).
  3. Pausa durante una pequeña fracción de segundo (500 microsegundos).
  4. Elimina el enlace simbólico.
  5. Vuelve a crear rootfs/dev/null como un dispositivo de caracteres adecuado (mknod).
  6. Pausa durante un tiempo ligeramente más largo (5000 microsegundos).
  • Este cambio rápido crea la ventana de oportunidad para que ocurra la condición de carrera.
  • Ejecución:

    • La función symlink_race se inicia como un proceso en segundo plano.
    • Inmediatamente después, el script ejecuta runc run ... para crear e iniciar el contenedor. Este es el momento en que runc intentará aplicar los maskedPaths.
    • Una vez que el contenedor está en ejecución, el script usa runc exec para ejecutar un comando dentro del contenedor: echo 'pwned' > /proc/sys/kernel/core_pattern.
  • Verificación:

    • El script espera a que termine el proceso de carrera en segundo plano y limpia el contenedor.
    • Luego lee el contenido actual del archivo /proc/sys/kernel/core_pattern del anfitrión.
    • Compara el contenido actual con la cadena esperada "pwned" y el valor original.
    • Según el resultado, imprime un mensaje claro [+] EXPLOIT SUCCEEDED! o [-] Exploit did not succeed..