Vulnerabilidad en Linux afecta a Sudo y permite elevación de privilegios local
CVE-2021-3156 es el identificador de la última vulnerabilidad reportada en sistemas Linux recientemente, que afecta a uno de los componentes clave del sistema. Sudo, en base a la misma, permitiría en ciertas versiones la elevación de privilegios por parte de un usuario local, sin autenticar.
Ya lo he dicho más de una vez, no por tratarse de Linux un sistema operativo está libre de ataques contra el mismo, ni de errores en su programación. Un ejemplo similar a este lo vimos el pasado Octubre de 2019 con el bypass de Sudo.
Sudo es un componente vital de los sistemas basados en Linux, es un comando preinstalado en el mismo que nos permite ejecutar programas con los permisos de otro usuario, sin tener que cambiarnos al mismo, como su homólogo Run as en Windows.
Desbordamiento de pila en Linux permite elevación de privilegios
El CVE-2021-3156 viene de la mano de Qualys, quienes por otro lado tienen una excelente herramienta de Gestión de Vulnerabilidades. Baron Samedit es el nombre que le han dado a esta vulnerabilidad concreta.
Podría haber sido empleada para que cualquier usuario con acceso físico a un sistema se convirtiera fácilmente en dueño del mismo, obteniendo los privilegios del usuario root. Sin requerir autenticación, lo que es mucho peor.
Estamos ante una vulnerabilidad de tipo «desbordamiento de pila» o heap overflow descubierta a mediados de Enero. Ha sido informada con tiempo suficiente para que haya podido solventarse.
Detalles técnicos
El problema lo provoca la forma incorrecta en que Sudo interpreta los backslash o «barra invertida» (\) que le son pasados en los argumentos. Este fallo fue provocado nada menos que en 2011 y afecta a las versiones 1.8.2 hasta la 1.8.31p2 de Sudo. La commit es 8255ed69.
Cuando sudo ejecuta un comando en modo shell, ya sea con la opción -s o -i, escapa de los caracteres especiales en los argumentos dados, a través de un backslash, antes de evaluar la política de sudoers (que no espera los caracteres de escape) si el comando se ejecuta de este modo.
Un fallo en el código que elimina los caracteres de escape, leerá más allá de la cadena si esta termina con un carácter tipo contrabarra sin escapar. En circunstancias normales esto no sería problema, dado que sudo lo habría hecho en los argumentos pasados al comando.
Pero, como explican desde Qualys, es posible ejecutar sudoedit con las opciones -i o -s debido a la combinación con otro fallo a la hora de parsear el código pasado al terminal. Dado que el comando no está realmente siendo ejecutado, sudo no neutralizará los caracteres especiales.
Es decir, no se está comprobando si un comando está siendo lanzado o no, sino simplemente que está presente la bandera «shell» y esto es lo que hace que el fallo sea aprovechable.
Sistemas afectados
Qualys ha publicado 3 PoC que les han permitido obtener privilegios completos de root y que afectan a versiones principales de Linux, como Ubuntu 20.04, Debian 10 (Sudo 1.8.27) o Fedora 33 con Sudo 1.9.2.
A continuación os dejo un video demostrativo para la CVE-2021-3156 que además podría explotarse en otros sistemas diferentes a los comentados.
Categories
deweloper View All
Trabajo como consultor de ciberseguridad y me gusta lo que hago. Aficionado a la informática / tecnología en general, me gusta compartir con la gente lo poco que sé. También soy aficionado al deporte y los videojuegos.