Tiempo de lectura: 5 minutos
Portada del artículo CVE-2025-32463 Sudo bajo ataque: el vector “chroot to root”.

CVE-2025-32463 es una vulnerabilidad de escalada de privilegios local (LPE), reportada por Rich Mirch en el binario sudo. Esta vulnerabilidad permite a un usuario sin privilegios escalar a root mediante el abuso de entornos chroot y recursos del sistema, aprovechando configuraciones inseguras o entradas crafteadas específicamente. Este CVE invierte la lógica base de chroot, una mala gestión de recursos en sudo permiten a un usuario «romper la jaula» y obtener privilegios root.

MITRE define esta vulnerabilidad como Inclusion of Functionality from Untrusted Control Sphere (CWE-829). Afecta al binario sudo desde la versión 1.9.14 a 1.9.17, Vector:  CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H. Aquí puedes ver la lista completa con información más detallada sobre esta vulnerabilidad: https://nvd.nist.gov/vuln/detail/cve-2025-32463.

Explicación técnica

Este fallo proviene de la inclusión o uso de configuraciones y/o bibliotecas que residen en rutas controladas por usuarios dentro de un chroot. Es decir, sudo termina usando funcionalidades que no provienen de sus esferas de confianza.

Al invocar con chroot sudo intentará resolver nombres o cargar ciertos componentes desde el entorno controlado por chroot. Si el atacante controla estos archivos, puede inducir cargas o comportamientos maliciosos que no fueron previstos en un primer momento.

¿Que es chroot?

Chroot (Change root) es una función que permite ejecutar un proceso dentro de un entorno aislado, donde la carpeta elegida se convertirá en la «raíz» del sistema específicamente para ese proceso. En otras palabras, todo lo que el programa puede «ver» estará limitado a ese espacio virtual, es básicamente como «encerrarlo en una jaula».

El objetivo es aumentar la seguridad y crear entornos controlados, para pruebas o compilaciones, pero realmente no se comporta como un sandbox, lo que significa que si los permisos del proceso no se han manejado correctamente este podrá «escapar de la jaula» y acceder al sistema real.

Flujo de ataque

El atacante prepara un árbol de chroot controlado, fuerza a sudo a operar contra ese chroot y se aprovecha de que sudo, en contexto privilegiado, puede leer o cargar esos recursos sin validarlos. Al incluir funcionalidad desde una esfera no confiable (CWE-829), el atacante puede inducir la ejecución de código con privilegios elevados y acabar escalando a root. Este comportamiento es el objetivo del PoC público. A continuación lo desglosaremos y lo probaremos en un laboratorio controlado.

Bloque de código Linea 1-15 del poc público para CVE-2025-32463

Primer bloque (líneas 1–15)

  1. Creación del directorio temporal
    • STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX)
      Llama a mktemp para crear un directorio temporal con un nombre único bajo /tmp. STAGE guardará la ruta (por ejemplo /tmp/sudowoot.stage.K3a2bX) en la variable STAGE.
  2. Cambio al directorio temporal
    • cd ${STAGE?} || exit 1
      Cambiará el directorio actual a la ruta guardada previamente en STAGE. Si cd falla (por ejemplo, si el directorio no existe), el script saldrá con código 1.
  3. Determinación del comando a ejecutar
    • if [ $# -eq 0 ]; then
      Analiza el número de argumentos pasados al script.
      • Si no se le pasan argumentos ($# -eq 0), asignará CMD="/bin/bash" como comando por defecto.
      • Si se pasan argumentos, CMD="$@" guardará esos argumentos para usarlos más adelante como el comando a ejecutar.

Bloque de código Linea 16-31 del poc público para CVE-2025-32463

Segundo bloque (líneas 16–31)

  1. Escapado de la cadena para C
    • CMD_C_ESCAPED=$(printf '%s' "$CMD" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g')
      Prepara una versión de la cadena CMD donde los caracteres especiales (por ejemplo \ y ") quedan escapados. Esto permite insertarla de forma segura en un literal en código C y evita que la sintaxis del fichero se rompa.
  2. Generación dinámica del fichero fuente en C
    • cat > woot1337.c<<EOF ... EOF
      Crea un fichero fuente C inyectando dentro la cadena escapada. Es una técnica habitual en PoCs y scripts para generar código fuente de forma dinámica desde shell.
  3. Función con atributo constructor (comportamiento conceptual)
    • En el C generado aparece una función marcada con __attribute__((constructor)).
      Conceptualmente, las funciones con este atributo se ejecutan automáticamente cuando la librería se carga en un proceso. La función está diseñada para ejecutar el comando contenido en la cadena cuando la librería sea cargada.

Bloque de código Linea 32-39 del poc público para CVE-2025-32463

Tercer bloque (líneas 32–39)

  1. Creación de la estructura de trabajo
    • mkdir -p woot/etc libnss_
      Crea dos estructuras de directorio:
      • woot/etc — se usará como la estructura tipo chroot (archivos de configuración).
      • libnss_ — destinada a contener artefactos de biblioteca.
  2. Preparación de archivos de configuración
    • echo "passwd: /woot1337" > woot/etc/nsswitch.conf
      Escribe un archivo nsswitch.conf dentro del árbol preparado.
  3. Población del chroot con archivos del sistema
    • cp /etc/group woot/etc
      Copia un archivo legítimo del sistema al árbol creado para que la estructura resulte coherente y parezca completa.
  4. Compilación conceptual de una librería
    • gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c
      Invoca al compilador para producir una librería compartida a partir de woot1337.c. La idea general es transformar el código fuente en un objeto que pueda ser cargado por el enlazador dinámico.
  5. Invocación de sudo apuntando al chroot
    • sudo -R woot woot
      Ejecuta sudo con la opción -R/--chroot apuntando al árbol woot, de modo que sudo trate ese árbol como la raíz para la ejecución del comando indicado.
  6. Limpieza del entorno temporal
    • rm -rf ${STAGE?}
      Elimina el directorio temporal creado al inicio para limpiar rastro.

Prueba de concepto

Ahora que ha quedado claro el funcionamiento y el flujo de ataque de este PoC vamos a verlo de forma práctica, clonaremos el siguiente repositorio: https://github.com/pr0v3rbs/CVE-2025-32463_chwoot

Clonación del repositorio

ejecutaremos el scrip run.sh que nos creara un contenedor de docker con un Ubuntu 24.04 vulnerable.

Montaje del contenedor

Una vez el contenedor se haya montado directamente en la terminal tendremos acceso al mismo, podremos ver que si ejecutamos whoami somos el usuario pwn.

Whoami en máquina objetivo

Ahora al ejecutar el comando ls veremos un archivo llamado sudo-chwoot.sh el cual contiene el script desglosado anteriormente y que nos permitirá hacer la escalada de privilegios.

Whoami después de la ejecución del PoC

A primera vista, este PoC puede parecer directo y relativamente fácil de reproducir. Al final el objetivo de la mayoría de PoCs es automatizar un proceso que en la práctica exige horas de análisis, pruebas, fallos y ajustes, quedarse solo con una versión vulnerable y un script funcional es ver la punta del iceberg. Al desmenuzarlo, descubrimos que dentro del mismo hay complejidad y aprendizaje y es precisamente ese trabajo el que aporta verdadero valor.

Mitigaciones/Playbook

Referencias


MÁS CONTENIDO


  • Estudiantes de UNIZAR enfrentan un juego de ciberguerra de la OTAN junto a la UVa (Locked Shields 2026)


  • Convocado el IV Concurso TFETL para premiar TFG y TFM sobre tecnología libre en la Universidad de Zaragoza


  • RetroMañía 2026 celebra su 20ª edición con 15 actividades sobre retroinformática y videojuegos clásicos


  • Manuel González Regal presenta técnicas inéditas de persistencia en Linux en la RootedCON 2026


  • La Oficina de Software Libre de UNIZAR (OSLUZ) impulsa una nueva jornada de instalación Linux


  • Pedro Marco y Javier Sevillano desvelan cómo un troyano se comunicaba ocultando datos en imágenes enviadas por correo en la RootedCON 2026


  • Francisco Gan Pampols hablará sobre los retos geopolíticos actuales en Ibercaja de la mano de Rotary Club Zaragoza


  • GFT impulsa una jornada sobre digitalización, IA y nuevos modelos de negocio en XPLORA Ibercaja


  • NEOCOM 2026: Antonio Sanz impartirá una doble charla sobre ciberespionaje y laboratorios caseros de seguridad


  • Inscripciones abiertas para participar en Locked Shields 2026, el wargame de la OTAN


  • Araintel cubre RootedCON 2026


  • RootedCON 2026 desvela los secretos de ‘Enigma’


  • RootedCON 2026 reúne en Madrid a todo el sector de la ciberseguridad y ‘hackea’ récords de participación


Media Partners

ORO

PLATA

BRONCE

HEMOS COLABORADO CON