Un fallo de seguridad recién divulgado que afecta a OpenSSH y a la biblioteca musl, conocido como '*sshole', permite a los atacantes iniciar sesión en determinadas cuentas de Alpine Linux y de otros sistemas Linux basados en musl configuradas para bloquear la autenticación mediante contraseña, tan solo introduciendo una contraseña de tamaño excesivo.
La vulnerabilidad solo afecta a servidores OpenSSH que se ejecutan en distribuciones Linux que utilizan la biblioteca C musl, entre ellas Alpine Linux, OpenWrt, Buildroot y Yocto, y únicamente bajo ciertas configuraciones de autenticación.
El investigador de seguridad Ozgun Kultekin, que descubrió el fallo y publicó sus detalles, señala que el problema existe desde 2016 y tiene su origen en la forma en que OpenSSH gestiona los errores de verificación de contraseña en sistemas que emplean musl.
El origen: cuentas bloqueadas con asterisco
Las cuentas Linux pueden configurarse para impedir el inicio de sesión con contraseña sustituyendo su hash de contraseña por un asterisco (*) en el archivo /etc/shadow. Como ese valor no es un hash válido, ninguna contraseña debería permitir el acceso a esas cuentas.
Sin embargo, un parche introducido en OpenSSH en 2016 para corregir una vulnerabilidad de enumeración de nombres de usuario, registrada como CVE-2016-6210, modificó el modo en que OpenSSH trataba las cuentas sin hashes de contraseña utilizables. Para evitar que los atacantes identificaran nombres de usuario válidos a través de diferencias en los tiempos de respuesta, se modificó OpenSSH para que realizara el hash de la contraseña incluso cuando una cuenta no tuviera un hash utilizable, incluidas las cuentas configuradas con * para bloquear el inicio de sesión por contraseña.
El problema radica en que la función crypt() de la biblioteca musl también devuelve * cuando falla el hash de la contraseña, incluso si la contraseña enviada supera su límite de 256 bytes. Esto significa que un atacante puede enviar una contraseña de tamaño excesivo y provocar que OpenSSH compare el * devuelto con el * almacenado en la cuenta, lo que da como resultado un inicio de sesión exitoso.
Cabe aclarar que el fallo no permite a los atacantes eludir las contraseñas en cuentas con hashes de contraseña válidos.
Condiciones necesarias para la explotación
Kultekin indica que la explotación requiere las siguientes condiciones:
- OpenSSH se ejecuta en un sistema Linux basado en musl, como Alpine Linux, OpenWrt, Buildroot o Yocto.
- La autenticación PAM está deshabilitada, como ocurre por defecto en el paquete openssh-server de Alpine Linux.
- La autenticación por contraseña SSH está habilitada.
- Al menos una cuenta tiene un asterisco (*) como hash de contraseña.
- Otra cuenta tiene un hash de contraseña válido.
El investigador advierte que las imágenes oficiales de Alpine Linux para AWS y Azure incluyen una cuenta predeterminada 'alpine' afectada con privilegios 'doas' sin contraseña, lo que podría permitir a los atacantes obtener acceso root.
Los sistemas que usan glibc, como Debian, Ubuntu y Fedora, así como los que emplean autenticación PAM, no son vulnerables a este ataque.
Kultekin afirma que descubrió la vulnerabilidad utilizando agentes de inteligencia artificial que ejecutaron cerca de 17.600 pruebas de autenticación con distintas configuraciones de OpenSSH, hashes de contraseña malformados y contraseñas de tamaño excesivo.
Corrección y mitigaciones
La vulnerabilidad se ha corregido en OpenSSH 10.6p2, y se recomienda a los administradores de Alpine Linux que actualicen sus paquetes de OpenSSH mediante el comando apk upgrade openssh.
Los administradores que no puedan instalar la actualización de inmediato pueden mitigar el problema desactivando la autenticación por contraseña SSH con la opción PasswordAuthentication no en la configuración de su servidor SSH y reiniciando el servicio SSH.
Kultekin añade que los administradores también pueden buscar indicios de explotación revisando los registros de autenticación SSH en pos de inicios de sesión basados en contraseña para cuentas que no deberían permitirlos.
En Alpine Linux, el siguiente comando puede revelar inicios de sesión SSH exitosos mediante contraseña. Si los registros muestran un inicio de sesión exitoso con contraseña para la cuenta alpine, los administradores pueden comprobar si esa cuenta tiene deshabilitada la autenticación por contraseña. Si el campo de contraseña de la cuenta contiene *, pero los registros SSH muestran un inicio de sesión exitoso con contraseña, podría indicar que se ha explotado la vulnerabilidad.


















Deja una respuesta