sshole: la falla de OpenSSH que afecta a Alpine Linux
En pocas palabras: CVE-2026-123158 (sshole) permite loguearse sin contraseña en cuentas de Alpine Linux configuradas con “*” en /etc/shadow, enviando un password de 257 a 1024 bytes. OpenSSH lo parcheó con la versión 10.6p2 el 5 de noviembre de 2026, horas antes del primer intento de explotación detectado por Previdian.
CVE-2026-123158, bautizada sshole, deja que un atacante remoto entre sin contraseña a una cuenta de Alpine Linux con solo mandar un string de entre 257 y 1024 bytes. OpenSSH liberó el parche 10.6p2 el 5 de noviembre de 2026, horas antes de que Previdian registrara el primer intento de explotación real contra la vulnerabilidad OpenSSH Alpine Linux.
La vulnerabilidad OpenSSH Alpine Linux identificada como CVE-2026-123158 es un fallo de omisión de autenticación por contraseña en sshd que afecta a sistemas con musl libc sin PAM, la configuración por defecto del paquete openssh-server de Alpine. El investigador Özgün Kültekin, de Wakefield, reportó el bug y OpenSSH lo corrigió en la versión 10.6p2.
En este artículo:
- En 30 segundos
- ¿Qué permite hacer exactamente la vulnerabilidad sshole?
- ¿Por qué este bug tardó cuarenta años en aparecer?
- ¿Qué sistemas con la vulnerabilidad OpenSSH Alpine Linux están realmente expuestos?
- ¿Ya se explotó esta vulnerabilidad en la práctica?
- ¿Cómo se soluciona o mitiga sshole?
- ¿Qué está confirmado y qué no sobre CVE-2026-123158?
- Errores comunes al reaccionar a sshole
- Preguntas Frecuentes
- Conclusión
- Fuentes
En 30 segundos
- CVE-2026-123158 (sshole) permite loguearse sin contraseña en cuentas de Alpine Linux con campo “*” usando un string de entre 257 y 1024 bytes.
- El bug nace de la colisión entre tres decisiones de software hechas en 1980, 2012 y 2016, ninguna errónea por separado.
- Previdian detectó el primer intento de explotación menos de nueve horas después de publicado el CVE, con acceso root confirmado en un honeypot.
- OpenSSH 10.6p2 corrige el fallo; Alpine retroporteó el parche hasta la rama 3.16.
- Debian, Ubuntu y RHEL (glibc) quedan fuera de alcance, según confirmó Damien Miller, mantenedor de OpenSSH.
¿Qué permite hacer exactamente la vulnerabilidad sshole?
Sshole deja que cualquiera con acceso al puerto SSH inicie sesión en una cuenta sin contraseña configurada, mandando una password de entre 257 y 1024 bytes de largo. No hace falta adivinar ni robar ninguna credencial: alcanza un solo intento de login con el string del largo correcto (spoiler: no hace falta ni una contraseña real).
Ejemplo hipotético, solo para entender el mecanismo: imaginá una instancia cloud con una cuenta “alpine” que no tiene contraseña configurada (campo “*” en /etc/shadow) y que puede ejecutar doas hacia root sin pedir clave. Si en esa misma máquina existe otra cuenta cualquiera con un hash de contraseña real, un atacante que mande un string de 300 bytes como password contra la cuenta “alpine” logra loguearse, y de ahí escala directo a root. Este escenario no es un caso reportado puntualmente, es la combinación de condiciones que describe el análisis técnico de ox.security como la más común en imágenes oficiales de Alpine para AWS y Azure.
El mecanismo de fondo es una colisión de valores. Un campo de contraseña vacío en Linux guarda el carácter *. Y la función crypt() de musl, cuando recibe una contraseña demasiado larga, devuelve ese mismo * como señal de error. Comparás los dos valores y, aunque parezca un chiste, matchean.
¿Por qué este bug tardó cuarenta años en aparecer?

Porque ninguna de las tres piezas que lo causan fue diseñada pensando en las otras dos. Tres equipos distintos, en tres décadas distintas, tomaron decisiones razonables de forma aislada, y el problema solo existe donde esas tres decisiones se cruzan.
Unix adoptó * para marcar “sin contraseña” desde la documentación de 3BSD, allá por 1980. musl, en 2012, empezó a devolver ese mismo asterisco cuando crypt() rechaza un input de más de 256 bytes, un límite que se agregó específicamente para frenar ataques de denegación de servicio con passwords gigantes. Y en 2016, OpenSSH sumó lógica de “préstamo de salt” entre cuentas como parte del parche contra CVE-2016-6210, un bug distinto de enumeración de usuarios.
Un criterio útil para evaluar bugs de este tipo en tu propia infraestructura: cuando un sistema usa un mismo valor “centinela” (un carácter, un código de error, un string vacío) para señalar dos situaciones distintas, conviene preguntarse qué pasa si esos dos caminos de código terminan comparándose entre sí en algún punto. No hace falta que el valor esté mal elegido en ninguno de los dos lados; alcanza con que coincidan.
Cuando sshd corre sin PAM, que es como viene el paquete por defecto en Alpine, hashea la contraseña él mismo y compara el resultado directo contra el campo guardado. Subís un string de 300 bytes, crypt() devuelve *, lo compara contra el * guardado en /etc/shadow, matchean, entrás. Según el timeline técnico citado por dev.to, reproducir el bug no salió de leer código sino de fuerza bruta: se construyó sshd en cada combinación posible de glibc, musl, PAM y sin PAM, y se tiraron unos 17.600 intentos de login deliberadamente raros contra cada build. Todas las combinaciones se comportaron bien menos una: musl sin PAM.
¿Qué sistemas con la vulnerabilidad OpenSSH Alpine Linux están realmente expuestos?
Para saber si un sistema está expuesto, conviene responder estas cuatro preguntas en orden. Si la respuesta a las cuatro es “sí”, hay riesgo real; si cualquiera de las cuatro es “no”, el sistema queda fuera de alcance:
- ¿El servidor SSH corre musl libc sin PAM? Es la configuración por defecto del paquete openssh-server de Alpine, y también aparece en OpenWrt, Buildroot y Yocto, además de “un montón de imágenes Docker que bajaste alguna vez”, según el investigador citado en el reporte de Help Net Security.
- ¿La autenticación por contraseña está habilitada? Es el valor por defecto de OpenSSH, así que si nadie lo desactivó explícitamente, la respuesta suele ser sí.
- ¿Existe al menos una cuenta con “*” en el campo de contraseña? Las cuentas que solo aceptan login por clave SSH, el root de Alpine por defecto, o un usuario cloud-init sin contraseña entran en esta categoría.
- ¿Hay otra cuenta local con un hash real ($5$ o $6$)? Sin esta segunda cuenta, no hay salt real del que
sshdpueda “tomar prestado” para generar la comparación.
Debian, Ubuntu y RHEL quedan afuera directamente porque usan glibc. Damien Miller, mantenedor de OpenSSH, lo confirmó de forma explícita: ni glibc ni los setups con PAM entran en el alcance del bug.
¿Ya se explotó esta vulnerabilidad en la práctica?
Sí. Previdian, firma de inteligencia de amenazas, detectó el primer intento de explotación menos de nueve horas después de publicado el CVE, y confirmó acceso root exitoso en un honeypot corriendo Alpine Linux y OpenSSH reales, según reportó The Hacker News.
La telemetría registró ocho intentos de explotación en total, todos desde una misma dirección IP. Vale la aclaración: ningún otro medio confirmó un volumen mayor a esos ocho intentos, así que conviene no extrapolar un ataque masivo a partir de ese dato puntual.
En paralelo, INCIBE-CERT publicó su propia alerta el 6 de noviembre de 2026, bajo el identificador INCIBE-2026-842, con importancia “4 – Alta” y explotación marcada como “No” al momento de ese aviso. La diferencia de horas entre ambos reportes da una idea de lo rápido que se mueve este tipo de explotación una vez que el CVE sale público.
¿Cómo se soluciona o mitiga sshole?
La solución es actualizar a OpenSSH 10.6p2 o al paquete parcheado de tu distribución, y después reiniciar sshd a mano, porque instalar el paquete no reinicia el demonio que ya está corriendo en memoria. Complementá con nuestra guía de Linux para equipos DevOps.
- Actualizá el paquete openssh, con
apk upgrade -U -aen Alpine. El parche llegó retroporteado hasta la rama 3.16, con builds específicos para cada versión según la tabla publicada en el aviso de ox.security. - Reiniciá sshd manualmente, con
rc-service sshd restart. Si no reiniciás, seguís corriendo el binario viejo aunque el paquete ya figure como actualizado. - Si no podés parchear ya, poné
PasswordAuthentication noen la configuración efectiva de sshd y reiniciá el servicio. Esto cierra el bug puntual y de paso corta los ataques de fuerza bruta en general. - Auditá /etc/shadow en cada host basado en musl buscando cuentas con
*en el campo de contraseña, prestando atención extra a las imágenes cloud-init con el usuario “alpine” por defecto. - Reconstruí tus imágenes de contenedores, no alcanza con parchear el servidor que ya está corriendo si la imagen base de Docker sigue con el paquete viejo.
Si administrás VPS o instancias cloud para clientes en la región, este es el tipo de parche que conviene aplicar vía automatización y no dejar para el próximo mantenimiento programado. Para quienes buscan infraestructura con gestión de seguridad más directa, donweb.com es una opción de hosting y VPS pensada para el mercado argentino.
¿Qué está confirmado y qué no sobre CVE-2026-123158?
Confirmado está el mecanismo técnico, validado de forma independiente por ox.security y por el timeline citado en dev.to. También está confirmado el parche oficial, el retroporteo de Alpine a diez ramas distintas, y la explotación en el honeypot de Previdian.
- Confirmado: OpenSSH 10.6p2 corrige el bug, publicado el 5 de noviembre de 2026.
- Confirmado: explotación activa detectada por Previdian, con acceso root en un honeypot real.
- Confirmado: Debian, Ubuntu y RHEL no están afectados, según Damien Miller.
- No confirmado: volumen de explotación más allá de los ocho intentos desde una sola IP.
- No confirmado: si hubo compromisos en infraestructura de producción real, más allá del honeypot.
Errores comunes al reaccionar a sshole
- Asumir que “uso Alpine, estoy expuesto” sin chequear las otras condiciones. La exposición real depende de las cuatro condiciones juntas, no solo de la distro.
- Actualizar el paquete y no reiniciar sshd. El servicio sigue corriendo con el binario viejo en memoria hasta que lo reiniciás.
- Confundirlo con un bug de Ubuntu o Debian. El fallo requiere musl libc; sistemas glibc no entran en el alcance.
- Correr PoCs o scripts “checker” bajados de redes sociales. Mejor confiar en el paquete oficial de tu distribución que en un script sin verificar.
Preguntas Frecuentes
¿Qué es la vulnerabilidad sshole de OpenSSH?
Es un fallo de omisión de autenticación por contraseña, tracked como CVE-2026-123158, que afecta a OpenSSH en sistemas con musl libc sin PAM. Un atacante puede entrar a una cuenta sin contraseña configurada enviando un string de entre 257 y 1024 bytes como password.
¿Mi servidor Alpine Linux está afectado por CVE-2026-123158?
Depende de cuatro condiciones simultáneas: sshd sin PAM, autenticación por contraseña habilitada, una cuenta con * en el password y otra cuenta con hash real. El paquete openssh-server de Alpine cumple la primera condición de fábrica, pero hace falta revisar las otras tres antes de confirmar exposición. Relacionado: la guía completa de seguridad y vulnerabilidades.
¿Cómo parcheo OpenSSH en Alpine Linux?
Corré apk upgrade -U -a para instalar el paquete corregido y después rc-service sshd restart para reiniciar el demonio. Alpine retroporteó el fix hasta la rama 3.16, con versiones específicas para cada rama según el aviso oficial.
¿Esta vulnerabilidad afecta a Ubuntu o Debian?
No. El bug requiere musl libc, usada por Alpine y distros embebidas como OpenWrt, Buildroot o Yocto. Ubuntu, Debian y RHEL usan glibc y quedan confirmados fuera de alcance, según declaró Damien Miller, mantenedor de OpenSSH.
¿Ya se explotó esta vulnerabilidad en internet?
Sí, Previdian confirmó explotación activa menos de nueve horas después de publicado el CVE, con acceso root logrado en un honeypot real. La telemetría reportada muestra ocho intentos desde una sola IP, sin confirmación de volumen mayor por parte de otros medios.
Conclusión
Lo que cambió es simple: un bug de cuarenta años quedó expuesto porque alguien finalmente le tiró un password de largo absurdo a un sshd corriendo sin PAM. Lo que importa para vos es que, si corrés contenedores o VMs basados en Alpine, la ventana de “parcheo cuando tenga tiempo” ya se cerró, el honeypot de Previdian cayó en menos de nueve horas. Actualizá a OpenSSH 10.6p2, reiniciá sshd, y si no podés hacerlo ya, al menos desactivá la autenticación por contraseña. El resto, auditar cuentas con * y reconstruir imágenes viejas, es trabajo de fondo que conviene no postergar.






