Seguridad

HoleyBeep: escalado de permisos en Linux usando Beep

El programa Beep, disponible en la mayoría de distribuciones, no parecía mantenerse desde el año 2013 a pesar de emplear el ejecutable el bit SUID




Parece casi una broma, como así evidencia la web creada para la ocasión (holeybeep.ninja) con un gran sentido del humor, pero fallos como estos no hacen más que demostrar la falta de auditoría de código, más en casos como estos en los que el programa hace uso del bit ‘SUID’.

El bit ‘SUID’, permite la ejecución de un programa como otro usuario (el creador del ejecutable) para así poder realizar operaciones que normalmente no podría realizar el usuario que emplea el programa. Un ejemplo clásico es el comando ‘passwd’: este  programa requiere modificar el archivo protegido del sistema (‘/etc/shadow’) donde se almacenan las contraseñas de los usuarios, pero un usuario común requiere poder cambiar su propia contraseña (pero no la del resto de usuarios). En este caso, el programa ‘passwd’ se ejecuta como root a pesar de emplearse por un usuario sin permisos, y es el programa el encargado de asegurar que el usuario no pueda realizar acciones que pongan el sistema en riesgo.

En el caso que nos ocupa, el programa Beep, que hace uso del bit ‘SUID’ para ejecutarse como root por un usuario común, llevaba varios años sin actualizarse. Cualquiera pensaría que un programa de este tipo, de tan solo 375 líneas de código y tantos años a sus espaldas (la versión 1.2.2 es de 2002) no contaría con vulnerabilidades, lo que ha quedado patente que no es así. La vulnerabilidad (CVE-2018-0492es provocada por un efecto carrera que permitiría escribir a un archivo protegido tal y como se explica en Pirhack’s Blog, y así escalar privilegios. 

La vulnerabilidad, de la que ya hay un ejemplo de explotación, aprovecha que la función ‘handle_signal del programa es un signal (permitiendo su ejecución en cualquier momento), para así ejecutarse manteniendo el valor anterior de la variable console_type, y el nuevo de la variable console_fd, y así poder escribir a cualquier archivo.

Por suerte el programa no se encuentra instalado de serie en distribuciones como Debian, aunque sí es un paquete conocido y utilizado por scripts. Aunque las vulnerabilidades para escalado de permisos son comunes, los ejecutables que hacen uso del bit ‘SUID’ deberían ser los primeros en ser analizados en busca de este tipo de errores.

Juan José Oyague
joyague@hispasec.com

Más información:

Holey Beep:






Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.