SLUBStick: de un error de memoria al control total de Linux

SLUBStick: de un error de memoria al control total de Linux

Científicos encuentran una forma de eludir la protección del núcleo de Linux con un 99% de efectividad.

image

Especialistas de la Universidad Técnica de Graz (Austria) presentaron un nuevo ataque al cross-cache del núcleo de Linux llamado SLUBStick, que permite convertir una vulnerabilidad limitada del montón en la capacidad de leer y escribir memoria de forma arbitraria, lo que da a los atacantes la posibilidad de elevar privilegios o escapar de contenedores.

El ataque fue probado en las versiones del núcleo de Linux 5.9 y 6.2, demostrando la alta versatilidad del método. En los experimentos se utilizaron 9 vulnerabilidades existentes tanto en sistemas de 32 bits como de 64 bits.

SLUBStick demostró su efectividad incluso con las protecciones modernas del núcleo activas: Supervisor Mode Execution Prevention (SMEP), Supervisor Mode Access Prevention (SMAP) y Kernel Address Space Layout Randomization (KASLR).

Los detalles del ataque se presentarán en la conferencia Usenix Security Symposium, que tendrá lugar a finales de agosto. Los investigadores mostrarán la elevación de privilegios y la salida de contenedores en la versión más reciente de Linux con las protecciones activadas.

Detalles técnicos de SLUBStick

El núcleo de Linux gestiona la memoria asignando y liberando bloques de memoria (slabs) para varios tipos de estructuras de datos. Las vulnerabilidades en el proceso de gestión de memoria pueden permitir a los atacantes distorsionar o manipular las estructuras de datos, lo que se denomina un ataque cross-cache. Generalmente, estos ataques tienen éxito en aproximadamente el 40% de los casos y a menudo ocasionan fallos del sistema.

SLUBStick utiliza vulnerabilidades del montón, como la doble liberación (double-free), uso después de la liberación (use-after-free, UAF) o escritura fuera de los límites (out-of-bounds), para manipular el proceso de asignación de memoria. Luego, el ataque utiliza un canal lateral de sincronización para determinar el momento exacto de asignación y liberación de bloques de memoria, lo que permite al atacante predecir y controlar la reutilización de la memoria.

Con esta información, la probabilidad de explotar con éxito un ataque cross-cache aumenta al 99%, lo que hace que SLUBStick sea muy práctico.

La conversión de una vulnerabilidad del montón en la capacidad de leer y escribir memoria de forma arbitraria se realiza en tres etapas:

  1. Liberar ciertos bloques de memoria y esperar a que el núcleo los reutilice.
  2. Asignar nuevamente los bloques de manera controlada para que sean utilizados para estructuras de datos críticas, como las tablas de páginas.
  3. Después de recuperar los bloques, el atacante sobrescribe las entradas de las tablas de páginas, obteniendo la capacidad de leer y escribir datos en cualquier área de la memoria.

Impacto real en la seguridad

Como la mayoría de los ataques utilizando canales laterales, SLUBStick requiere acceso local a la máquina objetivo con capacidad de ejecución de código. Además, el ataque requiere la presencia de una vulnerabilidad del montón en el núcleo de Linux, que será utilizada para obtener acceso a la memoria.

El ataque tiene varias ventajas para los atacantes. Incluso para aquellos que ya tienen capacidad de ejecución de código, SLUBStick proporciona la capacidad de elevar privilegios, eludir las protecciones del núcleo, escapar de contenedores o utilizarlo como parte de una cadena de ataque compleja.

La elevación de privilegios puede ser utilizada para obtener acceso root, lo que permite realizar cualquier operación, y la salida del contenedor permite escapar del entorno aislado y acceder al sistema host. En la fase post-explotación, SLUBStick puede modificar estructuras o hooks del núcleo para mantener una presencia persistente, lo que dificulta la detección del malware.

Para aquellos que deseen profundizar en SLUBStick y experimentar con la explotación de vulnerabilidades, los investigadores han publicado todos los detalles en un informe técnico y han colocado el código en un repositorio de GitHub.


Tu privacidad está muriendo lentamente, pero nosotros podemos salvarla

¡Únete a nosotros!