Tuskira AdvisoryReported, unconfirmedLast updatedNovember 6, 2026

CVE-2026-123158

OpenSSH password bypass on Alpine and other musl systems without PAM; exploitation attempts reported

Latest change
First published. Previdian reports exploitation attempts. Not on CISA KEV.

Reachable if sshd runs on Alpine or another musl system without PAM, password logins are on, one account has * as its password field and another has a $5$ or $6$ hash

Affected
Alpine 3.16 to 3.24 and edge, and other musl systems running sshd without PAM
Exploitation
8 attempts reported by Previdian. OpenSSH, Alpine and CISA have reported none. Not on KEV.
Fix
OpenSSH 10.6p2 or Alpine's fixed package, then restart sshd
Can't patch today
Set PasswordAuthentication no and restart sshd

CVE-2026-123158 lets an attacker log in to an OpenSSH server without a valid password on Linux systems that use the musl C library with PAM turned off. Alpine Linux's openssh-server package is built that way. Alpine says "An attacker who can reach your SSH port can log in without knowing any password." It works against accounts whose password field is *, and only when at least one other account on the machine has a $5$ or $6$ password hash.

Root is not exposed by default. Alpine says OpenSSH's default PermitRootLogin prohibit-password protects root unless PermitRootLogin yes is set, but another account that can become root, for example through doas, is a way in. The fix is OpenSSH 10.6p2 or Alpine's fixed package, followed by a restart of sshd. Previdian reports exploitation attempts against this CVE; OpenSSH, Alpine and CISA have not reported exploitation, and it is not on CISA's KEV.

Vendor
OpenSSH (OpenBSD) and Alpine Linux
Product
OpenSSH sshd
Affected versions
sshd in OpenSSH before 10.6p2 on Linux when musl libc is used without PAM (NVD). Alpine 3.16 through 3.24 and edge (Alpine)
Vulnerable component
sshd password authentication when built without PAM, through musl's crypt()
CVSS
8.1 (MITRE as CNA, CVSS 3.1); OpenSSH calls 10.6p2 "a critical security workaround." NVD has not added its own score
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H (MITRE)
CWE
CWE-394 Unexpected Status Code or Return Value (MITRE, per NVD)
Exploitation
Reported, unconfirmed
CISA KEV added
Patch
OpenSSH 10.6p2 upstream; Alpine fixed openssh packages on every branch back to 3.16. Restart sshd after upgrading

Is it reachable for you?

How it works. Per Alpine, when sshd is built without PAM it checks a password by hashing the attempt with crypt() and comparing the result to the stored password field. "musl's crypt() returns the string * as an error indicator when the key is over 256 bytes long. * is also exactly what the stored field contains for every account with no password, so the 'hash' matches and the login succeeds." Alpine says the attack sends "a very long password (257 to 1024 bytes)" and "works every time." OpenSSH says "We consider the root cause of this bug to be outside sshd, but it is exploitable via sshd and can be avoided there," and credits Özgün Kültekin of Wakefield.

Who is affected. Per Alpine, all of these must be true.

  • You run the Alpine openssh-server package, which is built without PAM, or openssh-server-pam with UsePAM no.
  • PasswordAuthentication is yes, "the OpenSSH default, unless you changed it."
  • An account has * as its password field. That includes root (shipped as root:* since about Alpine 3.16), key-only users created without a password, users from a directory service through musl-nscd, and the alpine user in the official cloud images.
  • At least one local account has a $5$ or $6$ password hash.

Who is not affected, per Alpine. Containers that do not run sshd, systems with PasswordAuthentication no, openssh-server-pam with UsePAM yes, locked accounts (! in the password field), systems where no account has a $-style hash, and cloud images set up through cloud-init, which writes PasswordAuthentication no. NVD's description limits the bug to Linux with musl and no PAM; it does not name glibc distributions such as Ubuntu, Debian or RHEL.

  1. Check that sshd runs, and how it was built. On Alpine, see whether openssh-server or openssh-server-pam is installed and, for the PAM build, whether UsePAM is yes.
  2. Check that the running sshd is fixed. Compare the openssh package to Alpine's fixed versions below, then confirm sshd was restarted. Alpine says "Upgrading the package alone does not replace the running daemon."
  3. Check password authentication. Run sshd -T | grep -i passwordauthentication, including any Match blocks. Alpine's safe result is passwordauthentication no.
  4. Check the accounts. In /etc/shadow, list accounts with * and any with a $5$ or $6$ hash. The bypass needs both.
  5. Check the path to root. Run sshd -T | grep -i permitrootlogin. If it is yes, root is reachable directly. Otherwise check whether any * account has doas or other ways to become root.
  6. Check Alpine cloud images separately. Alpine says the official images "from 3.18.11 through 3.24.3 ship an alpine user with a * password field and passwordless doas. They are safe on first boot. They become exploitable as soon as any $6$ hash exists on the machine." Images built from 3.21.10, 3.22.8, 3.23.8, 3.24.4 and later include the fixed package.

Fixed versions. Upstream, OpenSSH 10.6p2 (released November 5, 2026). Alpine's fixed openssh packages are edge 10.6_p2-r0, 3.24 10.3_p1-r2, 3.23 10.2_p1-r1, 3.22 10.0_p1-r11, 3.21 9.9_p2-r1, 3.20 9.7_p1-r6, 3.19 9.6_p1-r3, 3.18 9.3_p2-r4, 3.17 9.1_p1-r7 and 3.16 9.0_p1-r6. Alpine 3.21.10, 3.22.8, 3.23.8 and 3.24.4 include the fix.

Exploitation, as reported. Previdian's record for this CVE says its sensors "have observed 8 exploitation attempts, 1 unique attacker IP, and 1 country," first seen November 6, with confidence "Confirmed." Previdian notes confidence "does not mean the attempt succeeded." OpenSSH, Alpine and CISA have not reported exploitation.

Quell checks whether an Alpine or other musl-based server with password logins on has an SSH port reachable from the internet, and whether a password-less account on it can become root, across every system you run. See how Quell works

What Quell checks for this CVE
Alpine or other musl servers with password logins on and an SSH port reachable from the internet
Password-less accounts on those servers that can become root
Across every system you run.
See how Quell works

Compensating controls (test them, don't assume them)

These come from Alpine's advisory. Each works only under the condition at the end of its line.

  • Exploitation. Turn off password logins with PasswordAuthentication no and restart sshd. Alpine says either this or the update "closes the hole," and gives exact commands, including a drop-in file that Alpine reads from 3.19 onward. This only helps if sshd -T then prints passwordauthentication no, and only after you confirm key login works before closing your current session.
  • Exploitation. Lock accounts that never need to log in by setting ! instead of *. Alpine says locked accounts "cannot log in with a password or a key," so this only suits accounts that don't need key logins either.
  • Execution. Keep PermitRootLogin at the default prohibit-password and review doas rules for accounts with * passwords. Alpine says the default protects root but "does not help if another account that can log in is able to become root." This only helps if no reachable account can escalate, which is exactly what the cloud images' alpine user can do.

Upgrading OpenSSH, then restarting sshd, is the fix.

What to look for in logs

Alpine: "Look in /var/log/messages for sshd lines reading Accepted password for an account that has no password (alpine, root, or any key-only user)." OpenSSH publishes no indicators.

If you patched late. Upgrading does not undo a login that already happened. Alpine says to "Review doas use and recently created users, files and authorized keys on exposed machines. If you cannot rule out a login, treat the machine as compromised."

How Tuskira helps

Tuskira is an agentic cyber defense platform that connects to the 200+ security and IT tools you already run. When a new critical vulnerability lands, Tuskira answers three questions.

Is there a reachable path? For example, whether an Alpine or other musl-based server with password logins on has an SSH port reachable from the internet, and whether a password-less account on it can become root.

Would your controls stop it? Tuskira tests the controls you already run, such as your WAF, firewall rules and EDR, against the path.

Can you close the gap now? Quell stages the compensating control change through your existing tools, with your approval, then re-tests to confirm the path is closed.

The vendor patch is the complete fix. Quell reduces exposure and proves your controls work in the meantime.

See how Quell handles emerging threats

FAQ

Am I exposed to CVE-2026-123158?

Yes, if sshd runs a build without PAM on musl (Alpine's openssh-server, or openssh-server-pam with UsePAM no), password logins are on, an account has * as its password field, and another account has a $5$ or $6$ hash.

Is CVE-2026-123158 being exploited?

Previdian reports 8 exploitation attempts from one attacker IP, first seen November 6, and says that does not mean the attempts succeeded. OpenSSH, Alpine and CISA have not reported exploitation, and it is not on CISA KEV as of November 6, 2026.

Can an attacker log in as root?

Not with OpenSSH's default settings, per Alpine, unless PermitRootLogin yes is set. An account that can become root, for example through doas, is another way in.

Does this affect Ubuntu, Debian or RHEL?

NVD limits the bug to Linux with musl libc and no PAM, and names Alpine as the example. It does not name glibc distributions.

I only run Alpine in Docker containers. Am I exposed?

Not if the container doesn't run sshd, per Alpine.

Is upgrading the package enough?

No. Restart sshd afterward. Alpine says upgrading alone does not replace the running daemon.

Updates

Nov 6, 2026. First published. Previdian reports exploitation attempts; not on CISA KEV.

Sources

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

We publish an advisory when a vulnerability is Critical or on CISA KEV, has one identifiable component to check, and has a public proof of concept or reported exploitation. Advisories are updated as exploitation status changes.