Alpine Linux ha emitido un aviso de seguridad sobre una vulnerabilidad en su paquete `openssh-server` que permite a un atacante omitir la autenticación por contraseña. El fallo afecta a sistemas donde OpenSSH se compila sin Pluggable Authentication Modules (PAM) o donde la configuración `UsePAM` está desactivada. Bajo estas condiciones, un atacante que pueda alcanzar el puerto SSH puede iniciar sesión en cualquier cuenta cuyo campo de contraseña esté configurado como `*` (una configuración común para cuentas que solo usan llaves) sin conocer ninguna contraseña. Este bypass funciona de manera consistente en una sola conexión y no requiere reintentos.

La raíz técnica del problema reside en la interacción entre OpenSSH y la biblioteca C `musl`. Cuando `sshd` se compila sin PAM, valida las contraseñas cifrando el intento mediante la función `crypt()` y comparándolo con el campo de contraseña almacenado. Si el campo almacenado de una cuenta es demasiado corto para contener una sal, `sshd` toma prestada la sal de otra cuenta en el sistema. Debido a que la función `crypt()` de la biblioteca `musl` devuelve `*` como indicador de error cuando una contraseña supera los 256 bytes, un atacante que proporcione una cadena de entre 257 y 1024 bytes activa este error. Dado que `*` es también el valor exacto almacenado para cuentas sin contraseña, el sistema valida incorrectamente el inicio de sesión como exitoso.

Esta vulnerabilidad afecta a una amplia gama de versiones de Alpine Linux, incluyendo las versiones 3.16 a 3.24 y la rama 'edge'. Específicamente, impacta a sistemas donde `PasswordAuthentication` está habilitado y al menos una otra cuenta local posee un hash de contraseña estándar `$5$` o `$6$`. Para remediar el problema, Alpine recomienda actualizar a las versiones corregidas del paquete (como 3.21.10, 3.22.8, 3.23.8 o 3.24.4) y reiniciar el demonio `sshd`. Alternativamente, los usuarios pueden cerrar el agujero de seguridad estableciendo `PasswordAuthentication no` en su configuración de SSH. Se aconseja a los usuarios revisar `/var/log/messages` en busca de entradas de 'Accepted password' para cuentas que solo deberían permitir acceso basado en llaves para determinar si ha ocurrido un compromiso.