HighCVSS 3.1 8.1CVE-2026-123158Alpine / musl

Is your Alpine OpenSSH server exposed to the password login bypass?

Yes, if all four hold: PAM off (Alpine default), PasswordAuthentication yes, an account with password field *, and another with a $5$ or $6$ hash. Rate High, CVSS 3.1 8.1 (CVE-2026-123158). Fix with OpenSSH 10.6p2 or Alpine's backport, then restart sshd. Tiny Cloud is safe until a $6$ hash appears on the host.

CVE-2026-123158, CVSS 3.1 8.1 High, not in CISA KEV

MITRE rates CVE-2026-123158 CVSS 3.1 8.1 High. OpenSSH's 10.6p2 release notes say the release contains a critical security workaround for musl with PAM disabled; OpenSSH only called the workaround critical, and we rate the issue High (8.1). It is not in CISA's Known Exploited Vulnerabilities catalogue (catalog 2026.11.04 predates the CVE). No primary source reports exploitation. Upgrade and restart sshd, or disable password authentication now.

At a Glance

Based on the Alpine advisory, OpenSSH 10.6p2 release notes and CVE-2026-123158 as of 5 November 2026. Last updated 5 November 2026, 18:50 GMT.

5 Nov

OpenSSH releases 10.6p2; notes describe a critical security workaround for musl without PAM.

5 Nov

Alpine publishes its openssh-server advisory and fixed packages back to 3.16.

5 Nov

MITRE publishes CVE-2026-123158 at 15:46 GMT (CVSS 3.1 8.1 High).

5 Nov

Not in CISA KEV (catalog 2026.11.04). No primary source reports exploitation.

Affected and fixed

ScopeStatusAction
Alpine openssh-server (PAM off), PasswordAuthentication yesAffected when * and $5$/$6$ accounts existapk upgrade -U -a, then restart sshd
Alpine 3.21.10, 3.22.8, 3.23.8, 3.24.4 and later point releasesFixed package includedConfirm the package version, then restart sshd
edge and 3.16 to 3.24 fixed openssh packagesFixed in-branch (backports)edge ships 10.6_p2-r0; stable branches carry a backport, not always 10.6p2 itself
OpenSSH 10.6p2 and laterFixed upstreamOpenSSH describes 10.6p2 as containing a critical security workaround for musl without PAM
glibc distros (Debian, Ubuntu, Fedora) and sshd with UsePAM yesNot affectedStill prefer PasswordAuthentication no where you can
OpenWrt, Buildroot, Yocto shipping OpenSSH without PAMUnverifiedNot named in Alpine or OpenSSH primary sources; treat as possible until you confirm libc and PAM

Are you exposed? All four must be true

  • PAM off: Alpine's default openssh-server (no PAM), or openssh-server-pam with UsePAM no.
  • PasswordAuthentication yes: the OpenSSH default unless you changed it. cloud-init images that set no are not exposed.
  • An account with *: no password set. Includes default root since about Alpine 3.16 (still protected by PermitRootLogin prohibit-password unless set to yes), key-only users, directory users without a shadow entry, and the Tiny Cloud alpine user.
  • A $5$ or $6$ hash somewhere: one local password hash is enough to make every * account reachable with a 257 to 1,024 byte password.

Official Tiny Cloud images (3.18.11 to 3.24.3) are safe until a $6$ hash appears on the host (safe on first boot). Once any $6$ hash exists, the alpine user with passwordless doas can reach root. apk upgrade alone is not enough; you must restart sshd.

What to Do in the Next 24 Hours

Proactive on the left. Reactive on the right. Tick both tracks.

Proactive: Check Exposure and Fix

Find every Alpine sshd first. Go key-only, then upgrade and restart.

Free Detection Pack

Built by the CybaVerse threat hunt team for businesses, internal IT teams and MSPs. Check each host's exposure offline and hunt for signs of abuse. Everything is read-only.

Verdicts

  • PATCHEDFixed package or OpenSSH 10.6p2 or later. Reminds you to restart sshd if it was running before the upgrade.
  • LIKELY VULNERABLEUnfixed version with all four conditions holding.
  • UNKNOWNMissing inputs so exposure cannot be ruled out.
  • NOT EXPOSEDPasswordAuthentication no, PAM on, no * account, or no $5$/$6$ hash. Still upgrade.

Exit codes

CodeMeaning
0PATCHED
1LIKELY VULNERABLE
2UNKNOWN
3NOT EXPOSED
4SUSPICIOUS LOGIN in auth log
5Error, such as bad usage or an unreadable file

MSPs can use the exit code in RMM or scheduled jobs to flag hosts at scale. With a CSV, the exit code is the worst row. Exit 4 overrides when the auth log has a hit.

Know the limits

  • Both checkers are read-only and offline. They only read the files you point them at, send no network traffic, write nothing and contain no exploit payloads.
  • No indicators of compromise have been published, and the pack contains none. The hunts look for behaviour.
  • OpenWrt, Buildroot and Yocto are unverified: they are not named in the Alpine or OpenSSH primary sources.
  • None of the KQL has been run against a live tenant. Fields and paths marked UNVERIFIED depend on your connectors. Prefer the hand-written KQL over Sigma conversions where they disagree.
  • sshd does not log password length, so there is no log query for the 257 to 1,024 byte attempt itself.

What is in the pack

FileWhat it does
check-openssh-musl-bypass.shOffline exposure checker for Linux and macOS (bash)
Check-OpenSSHMuslBypass.ps1The same checker in PowerShell 7
KQL (8 queries)Microsoft Sentinel and Defender XDR hunts Q1 to Q8
Sigma (3 rules)Linux sshd, file and doas rules, plus Kusto conversions
tests/Fixtures, bash and Pester tests and a sandboxed no-network run
README.mdVerified facts, corrections, limits and usage

Reactive: How to Hunt

No indicators of compromise have been published. Hunt for password logins on accounts that should not accept them. CybaOps can run these hunts across your estate or your clients'.

If you suspect compromise

  • Isolate the host and keep its logs and disk for investigation.
  • Rotate credentials, SSH keys and any secrets that account could reach. Do not keep an exposed key as a fallback.
  • Review doas/sudo, new users, authorized_keys and persistence.
  • Rebuild from a known good image where you cannot clear the host with confidence.
  • Upgrade openssh (or disable password authentication), restart sshd, and keep monitoring.

Upgraded does not mean clean

Restarting a fixed sshd stops new password bypasses. It does not undo a login that already happened. Every exposed host should be hunted, not just upgraded.

OpenSSH Alpine Password Bypass FAQ

Short answers based on the Alpine advisory, OpenSSH release notes and CVE-2026-123158 as of 5 November 2026.

What is the OpenSSH Alpine password login bypass?

When sshd is built and run without PAM on musl Linux, a password between 257 and 1,024 bytes can succeed against an account whose stored password field is * (no password set). musl's crypt() returns * as an error for oversized keys, which matches the stored field. One other account with a $5$ or $6$ hash is enough to make every * account reachable.

Does it have a CVE?

Yes. MITRE published CVE-2026-123158 on 5 November 2026 at 15:46 GMT (CVSS 3.1 8.1 High). Alpine's advisory, posted earlier the same day, said no CVE had been assigned at the time of writing. OpenSSH's 10.6p2 release notes describe the release as containing a critical security workaround for Linux systems that use musl libc with PAM disabled; that is OpenSSH's wording, not a separate score.

Is it being exploited?

No primary source reports exploitation. CVE-2026-123158 was not in CISA's Known Exploited Vulnerabilities catalogue when we checked on 5 November 2026 (catalog 2026.11.04, which predates the CVE). Do not wait for KEV: upgrade and restart sshd, or disable password authentication now.

Are Debian and Ubuntu affected?

No. Debian, Ubuntu and other glibc distributions are not in scope of the musl-without-PAM path OpenSSH describes, and neither is sshd with UsePAM yes. OpenWrt, Buildroot and Yocto are not named in the Alpine or OpenSSH primary sources; builds that ship OpenSSH without PAM on musl are unverified and should be checked.

Do I need to restart sshd after upgrading?

Yes. On Alpine, apk upgrade -U -a alone is not enough: the upgrade does not replace the running daemon. You must run rc-service sshd restart (or equivalent) after the package update. Alpine stable branches often carry a backported package rather than 10.6p2 itself; still restart after the upgrade.

Who is affected on Alpine?

All four must be true: PAM is off (Alpine's default openssh-server, or openssh-server-pam with UsePAM no); PasswordAuthentication is yes; at least one account has * as its password field; and at least one other local account has a $5$ or $6$ hash. Official Tiny Cloud images from 3.18.11 to 3.24.3 ship an alpine user with passwordless doas. They are safe until a $6$ hash appears on the host (safe on first boot).

Can root be reached with a password login?

Default root is protected by PermitRootLogin prohibit-password, even when root's password field is *. Root is only reachable with password login if PermitRootLogin is set to yes. Tiny Cloud still reaches root through the alpine user plus passwordless doas once the four conditions hold and a $6$ hash exists.

How do we fix it on Alpine?

Run apk upgrade -U -a, then restart sshd with rc-service sshd restart. apk upgrade alone is not enough. Fixed packages are on edge and 3.16 to 3.24; point releases 3.21.10, 3.22.8, 3.23.8 and 3.24.4 include the fix. Upstream, install OpenSSH 10.6p2 or later.

We cannot upgrade today. What is the workaround?

Confirm key-based login works and keep your current session open. Set PasswordAuthentication no and restart sshd. Alpine's drop-in under /etc/ssh/sshd_config.d/ is only read from Alpine 3.19 onward; older releases need the main sshd_config edited (Alpine's advisory includes a sed that also covers Match blocks). Confirm with sshd -T | grep -i passwordauthentication.

How do we know if we were attacked?

Search logs for Accepted password for on accounts that should not have a password (alpine, root, or any key-only user). On Alpine, check /var/log/messages. If you cannot rule a login out, treat the host as compromised: rotate credentials and keys, review doas/sudo, new users, authorized_keys and persistence, and rebuild if you are unsure.

Protect Your Linux Estate, and Your Clients'

CybaOps monitors your servers, endpoints and cloud workloads, whether that's your own business or your clients'. UK-based analysts monitor alerts 24/7, run these threat hunts and act on pre-approved response actions, and CybaOps drives remediation through to a verified fix, so proactive checks and reactive response happen in one place.