Stack Clash, una importante vulnerabilidad en sistemas *nix

Publicado por Diego Córdoba en

Hoy hablaremos sobre Stack Clash, una vulnerabilidad grave encontrada en sistemas *nix, entre los que se encuentran Linux, Solaris y algunas variantes de BSD.


¿Qué es Stack Clash?

Es una vulnerabilidad, (CVE-2017-1000364) en la administración de memoria de varios sistemas operativos, incluidos Linux, OpenBSD, NetBSD, FreeBSD y Solaris, tanto en las arquitecturas i386 como en amd64.

Esta vulnerabilidad puede ser explostack clash vulnerability linuxtada por atacantes que corrompan la memoria y ejecuten código arbitrario.

Los investigadores de Qualys descubrieron esta vulnerabilidad y desarrollaron siete exploits y siete pruebas de concepto, y luego trabajaron cerca de los desarrolladores y fabricantes de los productos vulnerables para liberar parches de seguridad.

Hoy, 19/junio/2017, se están realizando esfuerzos coordinados para parchar todas las distribuciones, y ya pueden obtenerse los parches, por lo que es recomendable aplicarlos.

¿En qué consiste la vulnerabilidad?

Cada programa que corre en la computadora utiliza una región especial de memoria llamada Pila o Stack. Esta región es especial puesto que cambia de tamaño segstack clash vulnerability linux bsd unix nixún las necesidades del programa. Generalmente las aplicaciones la utilizan para almacenar argumentos de llamadas a funciones, y direcciones de retorno de las mismas.

Si el stack crece demasiado, puede «pisar» otra región de memoria de un programa, llamada montón, o heap, utilizada, por ejemplo, para almacenamiento de memoria dinámica en las aplicaciones.

Al pisar esta otra región de memoria, ocasiona confusión en el normal desenvolvimiento de las aplicaciones, y esta confusión puede ser explotada por un atacante sobreescribiendo el stack con el heap, o viceversa.

¿Y por qué Stack Clash?

El primer paso par explotar la vulnerabilidad es la de hacer «chocar» la región de stack con la de heap. Clash se traduce como chocar o colisionar al español.

¿Es una vulnerabilidad nueva?

La idea de hacer colisionar al stack con otras regiones de memoria no es nueva, y fue explotada por primera vez en el 2005, y luego en el 2010. Luego de esto, Linux introdujo una medida de protección contra este tipo de exploits: el stack guard-page.

¿Stack Clash represente una o varias vulnerabilidades?

Esta vulnerabilidad, la CVE-2017-1000364, demuestra que un stack guard-page de pocos kibibytes es insuficiente. Pero durante la investigación realizada por Qualys se descubrieron mas vulnerabilidades, algunas directa o indirectamente relacionadas a Stack Clash, por ejemplo, las vulnerabilidades CVE-2017-1000365 y CVE-2017-1000367.

¿Mi sistema se ve afectado?

stack clash vulnerability linux bsd unix nixSi estás usando Linux, OpenBSD, NetBSD, FreeBSD, o Solaris, en arquitecturas i386 o amd64, sí, estás afectado. Otros sistemas operativos y arquitecturas podrían ser vulnerables también.

¿Qué riesgos corremos?

Los exploits y pruebas de concepto demostraron que la vulnerabilidad permite una escalada de privilegios local: un atacante que tenga cualquier tipo de acceso a un sistema afectado, podrá explotar Stack Clash y obtener privilegios completos de root.

¿Es explotable remotamente?

Las investigaciones se focalizaron en exploits locales, pero no se sabe si puede ser explotada remotamente mediante alguna aplicación. No obstante, un exploit remoto de Stack Clash no es imposible… localmente no es difícil de demostrar, pero remotamente va a depender, seguramente, de detalles particulares de alguna aplicación.

Los investigadores de Qualys analizaron detenidamente Exim, el conocido servidor de correo electrónico open source, y determinaron que no permite vulnerar al sistema remotamente.

¿Cómo podemos protegernos?

La forma más simple y segura es actualizando el sistema… la gente de Qualys viene trabajando con los desarrolladores de sistemas y fabricantes de equipos desde principios de mayo, y a hoy ya se encuentran los parches disponibles para cada distro.

¿Qué pasa si no puedo (o no quiero) actualizar o reiniciar el sistema?

Como solución temporal, se puede configurar los límites RLIMIT_STACK y RLIMIT_AS para los usuarios locales y servicios remotos en algún valor razonablemente pequeño.

Si bien sirve para mejorar un poco la seguridad, ya que según las pruebas realizadas, igual puede terminar siendo vulnerable el sistema, y si los valores son muy pequeños, causará fallos en las aplicaciones que deberían correr normalmente.

Conclusiones y referencias

Para más detalles técnicos sobre la vulnerabilidad se puede visitar el sitio de Stack Clash Security Advisory, o los sitios de los desarrolladores de los principales sistemas afectados:

SUSE
https://www.novell.com/support/kb/doc.php?id=7020973

Red Hat
https://access.redhat.com/security/vulnerabilities/stackguard

Debian
https://www.debian.org/security/2017/dsa-3886
https://www.debian.org/security/2017/dsa-3887
https://www.debian.org/security/2017/dsa-3888
https://www.debian.org/security/2017/dsa-3889

Ubuntu
https://www.ubuntu.com/usn/

OpenBSD
https://ftp.openbsd.org/pub/OpenBSD/patches/6.1/common/008_exec_subr.patch.sig

Oracle Solaris
http://www.oracle.com/technetwork/security-advisory/alert-cve-2017-3629-3757403.html


Fuente original: https://blog.qualys.com/securitylabs/2017/06/19/the-stack-clash

Puede además verse el tweet original con el que Qualys anunció la vulnerabilidad encontrada.

stack clash vulnerability linux bsd unix nix

Esperamos que esta entrada sirva para tomar conciencia de que las vulnerabilidades afectan a todos los sistemas, y apliquemos los parches respectivos…

… y por qué no, aprendamos sobre este tipo de técnicas relacionadas con el ethical hacking y la seguridad informática 🙂

¡Hasta la próxima!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador