Vulnerabilidad Stack Clash

Vulnerabilidad Stack Clash permite a un atacante ejecutar código como root

Todos los sistemas operativos tienen sus problemas, a pesar de que se piense más comúmente en vulnerabilidades sobre Windows. Esta semana a Linux se le ha diagnosticado un problema de seguridad, que han bautizado como Stack Clash y que tiene el efecto de permitir a un tercero ejecutar código con privilegios de super-usuario o root.

Los primeros en escribir dicha vulnerabilidad han sido los expertos de Qualys Labs, que definen a Stack Clash como una vulnerabilidad de escalado de privilegios a nivel local, definida en CVE-2017-1000364 y que afecta a varias familias del sistema operativo open source, como son Linux, BSD y Solaris.

Detalles acerca de Stack Clash

Este problema reside en la gestión de memoria que realizan estos sistemas operativos, pudiendo ser aprovechada por atacantes para corromper la memoria y ejecutar código arbitrario.

Hoy mismo se han lanzado parches para muchas de las distribuciones Linux, mientras que los sistemas basados en OpenBSD, NetBSD (y otros BSD), así como Solaris en plataformas i386 o x64 serán actualizados en poco tiempo.

El problema que advierten algunos expertos es que este fallo de seguridad pueda concatenarse con otros para conseguir lanzar comandos con los máximos privilegios posibles.

Exploits que escalan privilegios locales

Investigadores de Qualys han desarrollado nada menos que 7 exploits diferentes y 7 pruebas de concepto para demostrar la vulnerabilidad. Todas son de escalado de privilegios local:

Un atacante que tenga cualquier tipo de acceso a un sistema afectado podría explotar Stack Clash y así obtener privilegios root.

El stack se refiere a una zona de la memoria utilizada por un programa durante su ejecución. Es flexible y se podrá ir ampliando si el ejecutable requiere más recursos pero, si crece demasiado, podría interferir con el “stack” de otro proceso. Si esto ocurre, un atacante sería capaz de forzar el crecimiento de un stack para sobre-escribir una porción de memoria de otro programa.

Hasta el momento no se ha verificado que sea explotable remotamente, por si mismo, aunque en combinación con otros problemas conocidos podría serlo fácilmente. Las pruebas de concepto se han centrado en 3 fases diferentes:

  • Clashing (colisionar) al stack con otra región de memoria: se asigna memoria hasta que el “stack” alcanza otra zona de memoria ajena, o hasta que otra región de memoria alcanza al stack (pila).
  • Jumping (saltar) sobre la página de protección del stack: se mueve el puntero de stack desde una región a otra diferente en la memoria, sin acceder a la página de protección de la pila.
  • Smashing (golpear) al stack u otra región de memoria: se sobre-escribe la pila con otra completamente ajena, o al contrario, moviendo el stack a otro diferente.

Mitigación de Stack Clash

Suponiendo que no estén disponibles, o no puedas reiniciar y aplicar los parches (que son la única medida 100% efectiva y recomendable a largo plazo) es posible limitar las posibilidades de que dicha vulnerabilidad tenga éxito cambiando algunas configuraciones.

  1. Modifica RLMIT_STACK por un valor más bajo. Este es valor máximo del stack o “pila” para aplicaciones en modo usuario.
  2. Modifica RLIMIT_AS por un valor más bajo. Este es el tamaño máximo de espacio virtual de memoria que un proceso puede reclamar.

Esto debe realizarse sobre los usuarios locales y servicios. En ningún caso debe establecerse un valor inferior a 1 MB.

No obstante, esto conlleva ciertos riesgos. Primero, aunque reduzcamos dicho valor este podría no ser suficiente para impedir todos los ataques, si por ejemplo se ocupa muy poca memoria de tipo stack, y por el contrario se usa de tipo heap. Segundo, si asignamos unos límites muy bajos podríamos interferir el correcto funcionamiento de nuestras propias aplicaciones.

Conclusiones

De momento no se tiene pensado publicar los exploits que aprovechan este fallo por motivos obvios: no hay actualizaciones suficientes ni tiempo para aplicarlas, así que habrá que esperar en caso de querer probarla. Puedes conseguir aún más datos aquí.

Deja tu comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s