Menos de nueve horas después de publicarse la vulnerabilidad CVE-2026-123158, Previdian detectó el primer intento de explotación. La firma confirmó que uno de los ataques consiguió acceso root en un honeypot con Alpine Linux y OpenSSH. La falla, bautizada SSHole, permite eludir la autenticación por contraseña en ciertas configuraciones de Linux basadas en musl.
Previdian contabilizó ocho intentos, todos procedentes de la dirección IP 89.116.89[.]18, geolocalizada en Japón y detectada por un mismo sensor. Según Ryan Dewhurst, fundador y CEO de la empresa, el atacante envió contraseñas demasiado largas y, tras entrar en sesiones SSH no interactivas, ejecutó comandos de reconocimiento como id, uname y hostname.
La vulnerabilidad está identificada como CVE-2026-123158 y tiene una puntuación CVSS de 8,1. Afecta a OpenSSH en sistemas Linux que usan la biblioteca C musl y no verifican las contraseñas mediante PAM; Alpine Linux incluye esa combinación en la configuración predeterminada de su servidor OpenSSH. El problema se corrigió en OpenSSH 10.6p2.
Una cadena de condiciones permite entrar sin contraseña
SSHole no abre cualquier cuenta protegida por contraseña. Para que el ataque funcione, la máquina debe tener al menos una cuenta cuyo campo de contraseña contenga un asterisco (*), usado en cuentas sin contraseña utilizable, y otra cuenta local con un hash de contraseña. También deben estar habilitados los accesos por contraseña y darse las condiciones específicas de compilación y autenticación.
El atacante, que no necesita credenciales ni claves SSH, envía una contraseña de entre 257 y 1.024 bytes. En la configuración afectada, ese intento desencadena un fallo al calcular el hash. La biblioteca musl devuelve entonces un asterisco, que coincide con el valor guardado para la cuenta sin contraseña. OpenSSH interpreta la coincidencia como una autenticación válida.
Alpine explica que basta con que exista un usuario local con un hash que empiece por $5$ o $6$ para que las cuentas sin contraseña puedan quedar expuestas. En cambio, las cuentas bloqueadas cuyo campo empieza por ! no pueden iniciar sesión con contraseña ni con clave, y no son el objetivo descrito en el aviso.
El acceso obtenido conserva los permisos de la cuenta comprometida. Safe Security advirtió que las consecuencias dependen de esos privilegios y que, además de permitir una conexión SSH no autorizada, la intrusión podría exponer credenciales de despliegue, secretos de aplicaciones e infraestructura conectada, con posibilidades de movimiento lateral o interrupción de servicios.
El origen se remonta a un cambio de OpenSSH de 2016
Özgün Kültekin, investigador de Wakefield que descubrió la falla, situó su origen en un cambio de OpenSSH introducido en 2016 para corregir CVE-2016-6210, un problema que permitía deducir qué nombres de usuario existían en un servidor. El cambio hacía que sshd calculara un hash incluso cuando la cuenta no tenía un hash utilizable, tomando la sal de otra cuenta.
La segunda pieza está en musl. Según el análisis publicado por Alpine, su función crypt() devuelve * cuando recibe una clave de más de 256 bytes. Ese mismo carácter ocupa el campo de contraseña de las cuentas que no tienen una contraseña configurada. Al comparar el resultado del cálculo con el valor almacenado, el servidor puede aceptar el acceso.
Help Net Security recoge que Kültekin probó compilaciones de sshd con distintas combinaciones y realizó unos 17.600 intentos de inicio de sesión inusuales. Solo la compilación con musl y sin PAM aceptó accesos que debía rechazar. El investigador también atribuyó parte de ese trabajo a agentes automatizados: “oh did i say “i”? sorry. i had agent swarms. a lot of them. let’s not get into it”.
Alpine indica que el problema afecta a las versiones de su distribución desde la 3.16 hasta la 3.24 y a edge, siempre que se cumplan las demás condiciones. La cuenta root aparece con * en la imagen base desde aproximadamente Alpine 3.16, pero la configuración predeterminada de OpenSSH, PermitRootLogin prohibit-password, impide acceder a root directamente mediante contraseña. El riesgo puede reaparecer si se permite el acceso directo o si una cuenta accesible puede elevar privilegios con doas.
Las imágenes tiny-cloud pueden convertir el acceso en root
El aviso de Alpine identifica un caso concreto en sus imágenes oficiales tiny-cloud: los artefactos qcow2, VHD y AMI de las versiones 3.18.11 a 3.24.3 incluyen un usuario alpine sin contraseña y con acceso a doas sin contraseña. Están a salvo en el primer arranque, pero pasan a ser vulnerables cuando existe un hash $6$ en la máquina, por ejemplo, si un administrador establece una contraseña de consola o los datos de usuario crean una cuenta con hashed_passwd.
En esa situación, un atacante podría entrar como alpine y usar doas para convertirse en root. Alpine aclara que las imágenes construidas con las versiones 3.21.10, 3.22.8, 3.23.8, 3.24.4 y posteriores incorporan el paquete corregido. Las instancias que ya están en ejecución deben actualizar OpenSSH o desactivar la autenticación por contraseña.
La falla no afecta a sistemas basados en glibc, como Debian, Ubuntu y Fedora, ni a sistemas que usan PAM para comprobar contraseñas. Tampoco afecta a Dropbear ni a sistemas que no ejecutan sshd en sus contenedores. Red Hat afirma que sus productos no están afectados: sus compilaciones de OpenSSH usan glibc y PAM de forma predeterminada.
Previdian añadió SSHole a su propia lista de vulnerabilidades explotadas. CISA no la ha incluido en su catálogo KEV, según Help Net Security. Dewhurst sostuvo que los atacantes están acelerando sus tiempos con ayuda de la inteligencia artificial y describió esta falla como particularmente sencilla de explotar. No obstante, las observaciones publicadas por Previdian se limitan a los ocho intentos procedentes de una única dirección.
Actualizar no basta si sshd sigue ejecutándose
La corrección está disponible en OpenSSH 10.6p2. Alpine publicó paquetes actualizados para sus ramas y especifica que instalar el paquete no sustituye el proceso sshd que ya está en ejecución: hay que reiniciar el servicio. Para sus ramas estables, las versiones corregidas de OpenSSH son 10.3_p1-r2 en Alpine 3.24, 10.2_p1-r1 en 3.23, 10.0_p1-r11 en 3.22 y 9.9_p2-r1 en 3.21. También hay paquetes para ramas anteriores: 9.7_p1-r6 en 3.20, 9.6_p1-r3 en 3.19, 9.3_p2-r4 en 3.18, 9.1_p1-r7 en 3.17 y 9.0_p1-r6 en 3.16. La rama edge incorpora 10.6_p2-r0.
Alpine recomienda actualizar OpenSSH y reiniciar el servicio. Si todavía no es posible aplicar la actualización, aconseja desactivar la autenticación por contraseña en la configuración de SSH y reiniciar sshd. El equipo de OpenSSH, por medio de Damien Miller, pidió a quienes utilicen Linux con musl y sin PAM que deshabiliten de inmediato la autenticación por contraseña o SSH en esos sistemas.
Para buscar indicios de acceso, Alpine recomienda revisar /var/log/messages en busca de líneas de sshd con el texto “Accepted password for” asociadas a cuentas que no deberían aceptar contraseñas, como alpine, root o usuarios que solo deberían entrar con clave. También pide revisar el uso de doas, las cuentas creadas recientemente, los archivos y las claves autorizadas. Si no se puede descartar un inicio de sesión, recomienda tratar la máquina como comprometida.
El análisis de Help Net Security menciona pruebas de concepto publicadas en GitHub, pero Previdian advierte que no están verificadas y podrían contener malware. En paralelo, Alpine publicó paquetes corregidos incluso para versiones antiguas: la rama 3.21 llegó al fin de soporte el 1 de noviembre de 2026, pero el equipo afirma haber publicado correcciones para cada versión hasta la 3.16.
Fuentes: The Hacker News, Help Net Security, teapawt, Alpine Linux, Red Hat Customer Portal