CybersecurityIn the news

Is Your Alpine sshd Exposed to SSHole, CVE-2026-123158? A Four-Condition Check

Yahia Aboushadi
Director of Brand and Marketing, Pyramid Systems
Reading time:
6 min.

On November 9, 2026, the Cybersecurity and Infrastructure Security Agency (CISA) added CVE-2026-123158, the OpenSSH flaw researchers call SSHole, to its Known Exploited Vulnerabilities (KEV) catalog with a November 12 due date. The flaw lets an attacker log in over SSH without a password, but only where four conditions line up, and two details decide whether a host that looks fixed really is: the version number a scanner reads and whether the daemon restarted.

What is SSHole (CVE-2026-123158)?

It is a password authentication bypass in sshd on Linux systems that use the musl C library with Pluggable Authentication Modules (PAM) disabled. The OpenSSH 10.6p2 release notes of November 5 describe a "critical security workaround" for those systems and say the project considers "the root cause of this bug to be outside sshd, but it is exploitable via sshd."

Alpine Linux's advisory explains it. Without PAM, sshd hashes the attempt with crypt() and compares it to the stored field, borrowing another account's salt when the stored field is too short to hold one. That is why a second account with a real hash matters. For a password over 256 bytes, musl's crypt() returns the string * as an error, and * is exactly what Alpine stores for an account with no password. The strings match and the login succeeds. Alpine says the attack "takes one connection, works every time, and needs no retries."

Which hosts are exposed?

Only those where all four conditions in Alpine's advisory hold.

Condition What to check Not exposed if
sshd built on musl without PAM Alpine's openssh-server package (built without PAM), or openssh-server-pam with UsePAM no glibc distribution, or openssh-server-pam with UsePAM yes
Password authentication on sshd -T shows passwordauthentication yes (the default); use sshd -T -C to test Match blocks PasswordAuthentication no, which cloud-init images set
An account whose password field is * Key-only users, directory users through musl-nscd, and root (reachable only with PermitRootLogin yes) Locked accounts (an exclamation mark in the field)
Another account with a $5$ or $6$ hash Any local user with a password set No local password hashes

Alpine says every release it checked is affected, 3.16 through 3.24 and edge. Ethiack says other musl systems such as OpenWrt and Buildroot may be exposed if they meet the conditions, and that glibc distributions such as Debian, Ubuntu, Fedora and RHEL are not affected. Root's default protection, PermitRootLogin prohibit-password, doesn't help if another reachable account can become root, for example through doas.

Alpine's official tiny-cloud images (the qcow2, VHD and AMI artifacts) from 3.18.11 through 3.24.3 ship an alpine user with a * field and passwordless doas. They are safe on first boot, Alpine says, but become exploitable for root once any $6$ hash appears, for example when an admin sets a console password. Images built from 3.21.10, 3.22.8, 3.23.8, 3.24.4 and later include the fixed package, which makes the point release the quickest key for an image inventory.

Vendor appliances are harder to see. Firmware built with Buildroot or OpenWrt may use musl, and the C library the build used is what matters. The vendor's advisory, not your scanner, settles whether a device is affected.

Containers that don't run sshd aren't affected, Alpine says. For images that do, a software bill of materials listing musl and openssh-server finds them faster than a scan; our SBOM post covers those inventories.

What fixes it, and why might a scanner disagree?

Upstream, OpenSSH 10.6p2. Alpine patched each branch without moving it to that release, so its fixed version numbers look old. The fixed packages are 10.6_p2-r0 on edge, 10.3_p1-r2 on 3.24, 10.2_p1-r1 on 3.23, 10.0_p1-r11 on 3.22 and 9.9_p2-r1 on 3.21, with fixes published back to 9.0_p1-r6 on 3.16. A rule that flags anything below 10.6p2 will keep flagging fixed Alpine hosts and bury the ones that still need work. Match on the distribution's package release instead.

The daemon is the other half. Alpine's advisory says "upgrading the package alone does not replace the running daemon." Until sshd restarts, the host still answers with the vulnerable code.

From our delivery teams: Close each SSHole ticket with two pieces of evidence, the installed package release and an sshd process start time later than the package install. A package list alone doesn't show the restart happened.

If you can't upgrade in time, Alpine's fallback is to set PasswordAuthentication no and restart sshd, after confirming key-based login works. Either step closes the hole, Alpine says.

Check the release line too. Alpine says 3.21 reached end of support on November 1, 2026 and 3.16 through 3.20 no longer get regular updates, though it published SSHole fixes for them. A host there is patched and still on unsupported software, a separate finding.

How does the November 12 KEV date apply?

The catalog lists November 12 and sets the forensicTriage field to "Yes," so the work is a fix plus a compromise check. The required action points to Binding Operational Directive (BOD) 26-04: apply vendor mitigations, follow the directive's guidance for cloud services, or stop using the product if no mitigation exists. It adds that "stakeholders are responsible for evaluating each asset's internet exposure and ensuring adherence to BOD 26-04 patching guidelines." Under BOD 26-04 the timeline also depends on each asset's exposure, as our KEV explainer describes, so your CISO's office decides which date governs an internal host.

Exploitation started before the listing. SecurityWeek reported on November 9 that WatchTowr and Previdian saw attacks in the wild, with Previdian counting 20 attempts from 13 IP addresses in 9 countries, first observed November 6. WatchTowr said only botnets and crypto miners had picked it up so far.

For the check itself, Alpine says to search /var/log/messages for sshd lines reading "Accepted password for" an account that has no password, then review doas use and recently created users, files and authorized keys on exposed machines. Alpine adds: "If you cannot rule out a login, treat the machine as compromised." Local logs may have rotated or been altered on a host that was entered, so search the copies in your central log store too; our OMB M-26-14 post covers the logging requirements behind them.

What to do before November 12

List every host, image and appliance that runs sshd on a musl-based system and test the four conditions; glibc hosts close out with a note of the distribution. Where all four hold, install the fixed package, restart sshd, record both and run the log search. Rebuild container images rather than patching running containers. Where an appliance vendor has no fix yet, turn off password logins or restrict SSH access, and document it.

Contractors running systems for an agency typically get their obligations through the contract. Ask the contracting officer or agency security office which timeline applies.

The Bottom Line

For most federal Linux estates built on glibc distributions, SSHole is a short inventory exercise. For Alpine hosts, appliances and images that run sshd, it means a fixed package, a restarted daemon and a log check, all recorded against the November 12 date. Hosts still on Alpine releases past end of support need a plan of their own, and our cybersecurity teams support that kind of FISMA and NIST work.

FAQ

Is RHEL or Ubuntu affected by CVE-2026-123158?

Ethiack's analysis says glibc distributions such as Debian, Ubuntu, Fedora and RHEL are not affected, and neither are systems using PAM. The OpenSSH release notes describe the bug as affecting Linux systems that use musl libc with PAM disabled. Check your distribution's own security page for its position.

What is the fixed version for SSHole?

Upstream, OpenSSH 10.6p2, released November 5, 2026. Alpine patched its supported and older branches without moving them to 10.6p2: for example 10.3_p1-r2 on 3.24, 10.2_p1-r1 on 3.23 and 10.0_p1-r11 on 3.22. Restart sshd after the upgrade.

Are Docker containers built on Alpine affected?

Alpine says Docker and other containers that do not run sshd are not affected. A container that does run sshd with password logins needs the same check as a host. We'd put the fix in the image and rebuild, rather than patching a running container.

How do I tell whether a host was attacked through SSHole?

Alpine's advisory says to search /var/log/messages for sshd lines reading "Accepted password for" an account that has no password, such as alpine, root or a key-only user, and to review doas use and recently created users, files and authorized keys. It says that if you cannot rule out a login, treat the machine as compromised.

Sources

  1. CISA, Known Exploited Vulnerabilities Catalog, JSON data feed (entries added November 9, 2026)
  2. OpenSSH, Release Notes, OpenSSH 10.6p2 (November 5, 2026)
  3. Alpine Linux, Security advisory, openssh-server password authentication bypass (November 5, 2026)
  4. Ethiack, CVE-2026-123158 (sshole), OpenSSH Password Bypass on Alpine Linux (November 5, 2026)
  5. SecurityWeek, OpenSSH Rushes Patches for 'SSHole' Authentication Bypass (November 6, 2026)
  6. SecurityWeek, Hackers Exploiting 'SSHole' Authentication Bypass in OpenSSH (November 9, 2026)

How we researched this. Every number, date and requirement here is checked against the sources listed above, primary documents first, and the post is fact-checked again before publication. When a rule, date or status changes, we update the post and log the change below. Read our editorial standards or send a correction.

Yahia Aboushadi
About the author. Yahia Aboushadi is Director of Brand and Marketing at Pyramid Systems, an employee-owned federal IT firm in Fairfax, Virginia, that has delivered for federal agencies since 1995. . Connect on LinkedIn.

Continue reading

Related Insights

More from Pyramid Systems on federal cybersecurity.

Network cables in a server rack patch panel under green light, the kind of infrastructure OMB M-26-14 logging covers

Cybersecurity

09 November 2026
OMB M-26-14 Deadlines: Logging Plans Due November 18, 2026, Then Three Maturity Marks

OMB M-26-14 replaced M-21-31. Agency logging plans are due November 18, 2026, then maturity deadlines follow. What the memo requires and how retention changed.

Read more
Lines of code on a dark screen, illustrating software covered by a secure software development attestation form

Cybersecurity

07 November 2026
Is the Secure Software Development Attestation Form Still Required?

OMB no longer requires agencies to collect the secure software development attestation form. What M-26-05 changed and what agencies can still ask for.

Read more
Ethernet cables plugged into a network switch in a rack, illustrating the Networks pillar of the CISA zero trust maturity model

Zero Trust & Identity

06 November 2026
How to Score an Agency Against the CISA Zero Trust Maturity Model

The CISA zero trust maturity model is a guide, not a rule. How it lines up with OMB M-22-09 and how to score it row by row, with a real 2026 audit as the example.

Read more
Fiber optic cables connected to a network switch in a server rack

Cybersecurity

05 November 2026
Ivanti Connect Secure CVE-2026-111357: Why the October 13 Patch Isn't Enough

Ivanti Connect Secure builds from October 13 remain exposed to CVE-2026-111357. Fixed builds, KEV dates, and why a clean Integrity Checker result settles nothing.

Read more