Alpine OpenSSH password bypass: how to tell if your SSH was hit
Quick answer
Alpine Linux published a Nov 5 advisory: on openssh-server builds without PAM (the default package), an attacker who can reach your SSH port can log into accounts whose password field is * by sending a 257–1024 byte password — no real password needed. The issue is tracked as CVE-2026-123158. Fix: update openssh and restart sshd, or set PasswordAuthentication no and restart (Alpine advisory, Nov 5; OpenSSH 10.6p2 / GHSA-4fcc-vm97-gx3x).

Who’s affected
You are in scope if all of these are true:
- You run Alpine’s
openssh-server(no PAM) oropenssh-server-pamwithUsePAM no. PasswordAuthenticationisyes(OpenSSH default unless you changed it).- The machine has an account with password field
*(normal for key-only users,root:*since ~Alpine 3.16, thealpineuser on tiny-cloud images, or directory-service users via musl-nscd). - At least one local account has a
$5$or$6$password hash (one passworded user is enough to unlock the*accounts).
Affected releases Alpine checked: 3.16 through 3.24 and edge.
Who’s not affected
- Containers that do not run
sshd. - Systems with
PasswordAuthentication no(including many cloud-init images). openssh-server-pamwithUsePAM yes.- Locked accounts (
!in the shadow password field). - Machines with no
$-style password hashes at all. - Debian/Ubuntu/Fedora-style PAM setups are outside Alpine’s advisory scope for this bypass path.
How to check
- Confirm you are on Alpine and running
sshd(rc-service sshd statusorps | grep sshd). - Check auth settings:
sshd -T | grep -i passwordauthenticationand whether PAM is in use. - Look for shadow
*accounts:getent shadow | awk -F: '$2=="*"{print $1}'(as root). - Review logs for impossible password logins:
/var/log/messageslines likeAccepted password foron accounts that have no password (alpine,root, or key-only users). - On exposed hosts, also review
doasuse and recently added users, files, andauthorized_keys.
What to do
- Update now:
apk upgrade -U -a, then restartsshd(rc-service sshd restart). Package upgrade alone does not replace the running daemon. Fixed point releases include Alpine 3.21.10, 3.22.8, 3.23.8, 3.24.4 (and backports through 3.16). - If you cannot update yet: set
PasswordAuthentication no(keep a working key session open; test a new login before you disconnect), then restartsshd. - If you cannot rule out a login: treat the machine as compromised — rotate keys, audit accounts, and rebuild from a known-good image when needed.
- tiny-cloud images: older images become exploitable once any
$6$hash appears (for example after setting a console password). Update or disable password auth on every running instance.
FAQ
- Does this hit my Docker app container? Only if that container itself runs
sshdunder the conditions above. Most app containers do not. - Is root automatically takeable? Default
PermitRootLogin prohibit-passwordblocks password root logins; Alpine warns another password-reachable account that candoasto root is still enough. - Is this the same as yesterday’s DreamHost story? No. DreamHost was a hosted File Manager credential exposure. This is an Alpine/OpenSSH authentication bypass on servers you run.
