SSHole – CVE-2026-123158

On 5 November 2026, OpenSSH issued emergency release 10.6p2 to block sshole, CVE-2026-123158: on a musl-based Linux system without PAM, Alpine Linux among them, an account with no password accepts any password between 257 and 1,024 bytes long. Previdian reports a first exploitation attempt less than nine hours after the CVE was published, and root access obtained on one of its honeypots.

TLP:CLEAR   PAP:CLEAR   Unlimited disclosure, no restriction on use.
Published
7 November 2026
Subject
CVE-2026-123158, sshole, OpenSSH 10.6p2
Distribution
Public
Confidence
High
Sources
12

The facts

On 5 November 2026, the OpenSSH project released version 10.6p2 of its portable edition, presented as a critical security workaround. It blocks a password authentication bypass in the sshd server, named sshole by its discoverer, Özgün Kültekin, of the company Wakefield. CVE (1) CVE-2026-123158 was published the same day at 15:46 UTC (2) by MITRE, acting as CNA (3).

The flaw affects Linux systems whose C library is musl and whose SSH (4) server checks passwords without going through PAM (5). Alpine Linux is the main example: its openssh-server package is built without PAM, and password authentication remains enabled by default. On these systems, an account with no password, that is an account whose password field is * in /etc/shadow, accepts any password between 257 and 1,024 bytes long as soon as another local account holds a SHA (6) hash of type $5$ or $6$. The accounts at risk are those reserved for key-based authentication, users coming from a directory service and, on Alpine’s official cloud images, the alpine user, which can become root through doas without a password.

Alpine Linux’s advisory describes an attack in a single connection, successful every time, with no retries. The CVE record gives a CVSS (7) 3.1 score of 8.1, high severity, with high attack complexity; OpenSSH uses the qualifier “critical” without publishing a score. The project places the root cause outside sshd, in the behaviour of musl’s crypt() function, but ships the fix in sshd, where the flaw is exploitable.

Not affected, according to OpenSSH, Alpine and the researcher: non-Linux systems, glibc-based Linux distributions such as Debian, Ubuntu or Fedora, systems that check passwords through PAM, and the Dropbear SSH server.

The takeaway

Update the openssh package then restart sshd: updating the package does not replace the running daemon. Where an immediate update is not possible, PasswordAuthentication no closes the attack path, a measure that OpenSSH developer Damien Miller asks to apply immediately on any musl system without PAM. Alpine’s stable branches carry the fix under version numbers lower than 10.6p2: comparing against the upstream version alone is not enough to conclude.

Timeline, discovery and credits

The flaw arises from the meeting of independent technical choices, made by two projects four years apart, followed by an Alpine configuration change in 2022. The researcher reconstructs its history on sshhole.com and in the GitHub repository that accompanies the publication.

DateEventSource
9 August 2012musl changes crypt() to return "*" instead of a null pointer on failure, as many programs did not check for failure (commit b3c4cc12)sshhole.com, The Hacker News
29 August 2012musl adds SHA-256 and SHA-512 hashes to crypt(), with a 256-byte key limit to protect against denial of service (commit 88bf5a8a)sshhole.com, The Hacker News
15 July 2016OpenSSH fixes CVE-2016-6210, a username enumeration through response timing: for an account with no usable hash, sshd borrows the salt of another account; change shipped in OpenSSH 7.3p1Researcher’s repository, The Hacker News
May 2019CVE-2019-5021: Alpine’s Docker images have an empty root password; fixed by locking the root account with !Researcher’s repository
2022Alpine 3.16 replaces root:! with root:*, as locking with ! also blocks SSH keys when PAM is not in usesshhole.com, Alpine advisory
31 December 2024musl mailing list: BusyBox’s passwd command fails on a 257-byte password; limit and return value kept, sshd is not mentionedsshhole.com
30 October 2026An OpenSSH security review fixes the handling of bcrypt hashes in the pick_salt() function, without touching the flawResearcher’s repository
3 November 2026Discovery through a differential authentication matrix across C libraries and build options; reported to OpenSSH, patch returned in under an hour according to the researcherResearcher’s repository
4 November 2026Alpine and musl notifiedResearcher’s repository
5 November 2026Release of OpenSSH 10.6p2 and of commit 4353fdc; announcement by Damien Miller on the openssh-unix-dev list; fixed packages and Alpine advisory for every branch from 3.16 to edge; sshhole.com goes onlineOpenSSH, Alpine, researcher
5 November 2026, 15:46 UTCPublication of the CVE-2026-123158 record by MITRE; enrichment through the ADP (8) container of the US agency CISA (9), with an SSVC (10) assessmentCVE record
5 to 6 November 2026First exploitation attempt observed by Previdian less than nine hours after the CVE was published; root access confirmed on a honeypot; eight attempts in totalHelp Net Security, citing Previdian
6 November 2026, 04:56 UTCLatest known update of CISA’s ADP container in the CVE recordCVE record

Fig. 1. Timeline reconstructed from the OpenSSH release notes, Damien Miller’s announcement, the Alpine Linux advisory, the CVE record, sshhole.com and the TIMELINE.md file of the oz9un/sshole repository, The Hacker News and Help Net Security.

A one-day gap remains on the date of the report. The researcher dates it to 3 November; in his message of 5 November, Damien Miller states that the team learned of the problem “yesterday”. The Alpine advisory and The Hacker News article of 5 November state that no CVE identifier had been assigned at the time of writing; the record was published the same day.

Discovery method

The researcher states that he built sshd in every combination he could think of (glibc or musl, with or without PAM, with or without a shadow file) and submitted around 17,600 unusual login attempts to these builds: malformed hashes, inconsistent accounts, very long passwords. Every build returned the same decision for every attempt, except the musl build without PAM. He adds that he worked with swarms of AI (11) agents. His repository mentions a test bench of 17 environments, including a cloud image under QEMU, OpenWrt, Buildroot and directory users, whose detail has not been published.

The OpenSSH 10.6p1 and 10.6p2 release notes observe that flaws identified by AI tools are subsequently rediscovered independently by other researchers, and announce more frequent releases. Damien Miller adds that the team now considers long embargo periods a dangerous practice that mainly benefits attackers, after several cases of rapid rediscovery by AI agents, sometimes within hours.

Credits

The report is credited to Özgün Kültekin, of Wakefield. Alpine thanks Damien Miller and Darren Tucker, of OpenSSH, for the fix and the 10.6p2 release, Timo Teräs for help with the analysis and Natanael Copa for building and uploading the packages.

How the bypass works

When built without PAM, sshd checks a password itself in the sys_auth_passwd() function: it computes the hash of the submitted password with crypt(), reusing the salt of the stored hash, then compares the result with the stored field using strcmp(). Equality means authentication. An account with no password carries * in this field; since no hash can equal *, this account in principle refuses any password authentication.

The * field is too short to contain a salt. Since the fix for CVE-2016-6210 in 2016, sshd then borrows, through the pick_salt() function, the salt of another account on the system whose hash starts with $, so that the response time does not reveal the absence of a usable hash. The submitted password is therefore hashed with a third-party account’s salt, then compared with *.

For the $5$ (SHA-256) and $6$ (SHA-512) types, musl’s crypt() function refuses any key longer than 256 bytes and returns the string * as an error indicator. This string is identical to the stored field of the account with no password: strcmp() reports equality and sshd accepts the connection. The upper bound of 1,024 bytes is the maximum password length accepted by sshd, set by the MAX_PASSWORD_LEN constant.

StepValueOrigin
Stored field of the targeted account*Unix convention for accounts with no password; root:* on Alpine since about version 3.16
Salt used for the computationSalt of another account, for example $6$abc$pick_salt(), fix for CVE-2016-6210, OpenSSH 7.3p1
Submitted password257 to 1,024 bytesmusl’s 256-byte limit; sshd‘s 1,024-byte limit
Result of crypt()*musl’s error value since August 2012
Comparisonstrcmp("*", "*") == 0, authentication acceptedsys_auth_passwd() in sshd

Fig. 2. Sequence described by the Alpine Linux advisory and the oz9un/sshole repository, cross-checked against the code changed by commit 4353fdc.

Why other configurations escape the flaw

  • with PAM, the check goes through the PAM module, which, according to the researcher, does not call crypt() for a * field
  • with glibc, distributions go through PAM; the researcher also notes that libxcrypt, adopted by Debian, returns *0 on failure, a value that does not match *
  • an account locked with ! does not match * and stays closed, according to the Alpine advisory
  • with no $-type hash on the machine, no $5$ or $6$ salt can be borrowed, and the computation does not go through musl’s SHA functions that carry the 256-byte limit; the Alpine advisory excludes these systems, and the researcher specifies that a fresh system with no password set is not exposed
Method note

OpenSSH describes its change as a workaround and considers that the root cause lies outside sshd. The behaviours involved are documented: the comment in musl’s crypt_sha512.c file states that * is returned on error. The flaw lies in their combination, which no test chain covered: according to the researcher, OpenSSH tests on OpenBSD and glibc, and musl does not test sshd.

Exposure conditions

The Alpine advisory sets four cumulative conditions on the machine, to which the attacker’s side adds network access to the SSH port and the name of an account with no password. A single account with a password is enough to make every account without one reachable.

ConditionDefault situation on AlpineWhat neutralises the condition
sshd linked against musl and checking passwords without PAMopenssh-server package built without PAMopenssh-server-pam with UsePAM yes; with UsePAM no, the machine remains exposed
PasswordAuthentication yesOpenSSH default valuePasswordAuthentication no, written in particular by cloud-init
An account whose password field is *root:* since about 3.16; alpine user of the tiny-cloud imagesLocking with !, which also blocks key-based authentication without PAM
At least one other local account with a $5$ or $6$ hashAbsent on a fresh system; appears as soon as an administrator sets a passwordNo $-type hash on the machine

Fig. 3. Exposure conditions according to the Alpine Linux advisory of 5 November 2026, supplemented by the oz9un/sshole repository for locking with !.

Accounts at risk

  • root, shipped as root:* in the base image since about Alpine 3.16; the default value PermitRootLogin prohibit-password protects it, unless PermitRootLogin yes is set. This protection does not hold if another exposed account can become root, for example through doas
  • accounts reserved for key-based authentication, created with adduser without a password or with usermod -p '*'
  • users coming from a directory service through musl-nscd (nslcd, winbind, sssd), which have no entry in the shadow file
  • the alpine user of the official tiny-cloud cloud images, which has passwordless doas

tiny-cloud cloud images

The official tiny-cloud images from versions 3.18.11 to 3.24.3 ship an alpine user with a * field, allowed to use doas without a password. They are not exposed at first boot. They become exposed as soon as a $6$ hash exists on the machine, for example when an administrator sets a console password or when user data creates an account with hashed_passwd. The attacker then gets a shell as alpine, then root privileges through doas. The researcher and Cyber Press cite the official images for Amazon Web Services and Azure. Images built from versions 3.21.10, 3.22.8, 3.23.8, 3.24.4 and later include the fixed package; instances launched from an earlier image must be updated individually.

Beyond Alpine

The researcher cites other musl-based systems to examine: OpenWrt, Buildroot, Yocto, postmarketOS, Void in its musl variant and Chimera. OpenWrt uses Dropbear by default; the flaw only concerns installations where an administrator has added the OpenSSH server, as The Hacker News points out. TheCyberThrone extends the inventory to cloud instances, containers, network appliances and embedded Linux environments.

For containers, the Alpine advisory specifies that those that do not run sshd are not affected. The researcher points out that many Docker images rely on musl; exposure depends on the presence of a listening sshd. Cyber Press likewise stresses that running a musl distribution or an Alpine container is not enough to establish exposure.

The researcher’s repository states that the PoC (12) works at least as far back as Alpine 3.18, and that the oldest combination tested, OpenSSH 7.5p1 on musl 1.1.16 in 2017, is also vulnerable. The flaw has existed since salt borrowing was introduced in OpenSSH 7.3p1, in 2016.

Impact

The attacker obtains a session with the privileges of the targeted account, within the limits of the access controls specific to sshd. The bypass affects neither the protocol’s encryption nor existing passwords. On vulnerable tiny-cloud images, the alpine account gives access to root privileges; on a machine where PermitRootLogin yes is set, the root account is directly reachable.

Affected versions and fixed packages

The CVE record declares OpenSSH before version 10.6p2 on the Linux platform as affected, with a default status of “unaffected” for other versions. Its description restricts the flaw to systems using musl without PAM. The weakness listed is CWE (13) 394, unexpected status code or return value. The record carries the vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H, score 8.1.

Point of caution

The record’s CPE (14) range, cpe:2.3:a:openbsd:openssh:*:*:*:*:*:*:*:* with a versionEndExcluding bound at 10.6p2, carries neither the musl condition nor the PAM condition. A tool relying on it alone flags any version earlier than 10.6p2, including on a glibc-based distribution. Conversely, Alpine’s stable branches are fixed by backporting the patch under their original version number, for example 10.3_p1-r2 for Alpine 3.24: a comparison with 10.6p2 would wrongly classify them as vulnerable. TheCyberThrone likewise recommends relying on the vendor package rather than on a comparison with the upstream version alone.

Alpine Linux fixed packages

BranchFixed version of the openssh packageBranch status
edge10.6_p2-r0Development
3.2410.3_p1-r2Supported; included in 3.24.4
3.2310.2_p1-r1Supported; included in 3.23.8
3.2210.0_p1-r11Supported; included in 3.22.8
3.219.9_p2-r1End of support on 1 November 2026; included in 3.21.10
3.209.7_p1-r6Unsupported, package published
3.199.6_p1-r3Unsupported, package published
3.189.3_p2-r4Unsupported, package published
3.179.1_p1-r7Unsupported, package published
3.169.0_p1-r6Unsupported, package published

Fig. 4. Fixed versions of the openssh package by branch, according to the Alpine Linux advisory of 5 November 2026. Point releases 3.21.10, 3.22.8, 3.23.8 and 3.24.4 contain the fixed package.

The update is done with apk upgrade -U -a, followed by a service restart with rc-service sshd restart. For a build from source, OpenSSH version 10.6p2 carries the change; the researcher provides the upstream patch unchanged in his repository and states that it applies to every version since 7.3p1.

What the 10.6p2 fix changes

Commit 4353fdc, titled “avoid password authn bypass”, changes three files: auth-passwd.c, openbsd-compat/port-uw.c and openbsd-compat/xcrypt.c, with 34 lines added and 17 removed. Its message restates the project’s position: the root cause is not considered internal to OpenSSH, but the project is in a position to avoid it.

  • a MIN_PASSWORD_HASH_LEN constant, set to 4, is introduced in auth-passwd.c: the comparison only succeeds if the stored field is at least four characters long, which excludes *
  • shadow_pw() now returns a copy of the password field, obtained with xstrdup(), instead of a pointer into the C library’s static buffer; the copy is wiped with freezero() after use
  • pick_salt() frees and wipes each intermediate copy while iterating over the accounts

The researcher sums up the effect: sshd no longer performs the comparison when the stored field is too short to be a real hash, and stops using a pointer into the C library’s static buffer. The packages of Alpine’s stable branches carry a patch addressing the same problem.

Version 10.6p2 also includes functional fixes already present on the V_10_6 stable branch, among them acceptance of the post-quantum hybrid signature algorithm ssh-mldsa44-ed25519 as a certificate authority signature algorithm and a fix for CPU consumption related to ChannelTimeout.

Measures when updating is not yet possible

OpenSSH, Alpine and the researcher converge: disabling password authentication fully closes the attack path. Damien Miller asks to set PasswordAuthentication=no or to disable SSH immediately on the systems concerned. The Alpine advisory details the procedure, to be run as root after checking that key-based authentication works, keeping the current session open until a new login succeeds:

  • mkdir -p /etc/ssh/sshd_config.d
  • echo 'PasswordAuthentication no' > /etc/ssh/sshd_config.d/00-no-passwords.conf
  • sed -i.bak -e '1i PasswordAuthentication no' -e 's/^\(\s*PasswordAuthentication[^y#]*\)yes/\1no/i' /etc/ssh/sshd_config
  • sshd -t && rc-service sshd restart
  • sshd -T | grep -i passwordauthentication, which should print passwordauthentication no

The drop-in configuration file is only read by Alpine’s default configuration from version 3.19 onwards; earlier versions ignore it, hence the sed command. It replaces yes with no on every PasswordAuthentication line of /etc/ssh/sshd_config, including inside a Match block, adds the directive at the top of the file and keeps the original as /etc/ssh/sshd_config.bak. To roll back, delete /etc/ssh/sshd_config.d/00-no-passwords.conf and restore /etc/ssh/sshd_config.bak.

TheCyberThrone adds restricting SSH access to trusted network sources and reviewing accounts intended for key-only authentication. Locking these accounts with ! is not an alternative on a system without PAM: it also blocks key-based authentication, which is why Alpine abandoned this value for root in 2022.

Point of caution

Updating the openssh package does not restart the running sshd: the old binary keeps accepting connections until the service is restarted. Alpine and The Hacker News point this out, as does SOCRadar as cited by Help Net Security. A machine that is updated but not restarted remains exposed.

State of exploitation and disclosure

Disclosure took place without a long embargo. According to the researcher, the flaw was reported on 3 November, Alpine and musl were notified on the 4th, and the fixed release came out on 5 November, together with Alpine’s packages and the explanatory page sshhole.com. The researcher’s repository published the same day a verification script, a PoC reproducible in a Docker container and the patch. The PoC sends a first arbitrary password, then a 300-character string; the attack.py script shows rejection at 256 characters and success at 257.

Findings on exploitation differ by date and source, and should be kept apart:

  • on 5 November, The Hacker News stated that no attacks exploiting the flaw had been reported
  • on 6 November, Help Net Security reported Previdian’s observations: a first attempt less than nine hours after the CVE was published, then root access confirmed on a honeypot running a real Alpine and OpenSSH installation; eight attempts in total, all from a single IP (15) address located in Japan and caught by a single sensor
  • according to Previdian, the attacker used oversized passwords, then ran the reconnaissance commands id, uname and hostname in non-interactive SSH sessions
  • Previdian added the vulnerability to its own catalogue of exploited vulnerabilities; CISA had not added it to its KEV (16) catalogue according to Help Net Security
  • CISA’s SSVC assessment in the CVE record, updated on 6 November at 04:56 UTC, gives exploitation at PoC stage, exploitation not automatable and total technical impact
  • PoCs are published on GitHub; the CVE record references two reproduction repositories in addition to the researcher’s. Previdian warns that PoCs published on GitHub are unverified and may contain malware
  • no attribution to an actor has been made public
Method note

The exploitation reported by Previdian comes from a single sensor and a single source address; it is not publicly corroborated by an independent source, and Previdian’s data was consulted through Help Net Security. Access obtained on a honeypot establishes the feasibility of the attack against an exposed target, not the scale of exploitation on production systems. The absence of a KEV catalogue entry is no proof of absence of exploitation. Previdian links the observed speed to attackers’ use of AI and to the simplicity of exploitation.

Detection and verification

Checking a machine’s exposure

The check.sh script in the oz9un/sshole repository checks the five conditions: C library, sshd build with or without PAM, value of PasswordAuthentication, accounts with a * field and presence of a $5$ or $6$ hash. It reports the missing condition when the machine is not exposed. The same checks can be run by hand on Alpine, as root:

  • installed package version, to compare with figure 4: apk info -v openssh
  • server variant installed: apk info -e openssh-server openssh-server-pam
  • effective value of password authentication: sshd -T | grep -i passwordauthentication
  • accounts with a * field: awk -F: '$2=="*"{print $1}' /etc/shadow
  • accounts with a $5$ or $6$ hash: awk -F: '$2 ~ /^\$[56]\$/{print $1}' /etc/shadow

Users coming from a directory service through musl-nscd have no entry in /etc/shadow and therefore do not appear in these lists, although they are exposed according to the Alpine advisory.

Looking for a compromise

The Alpine advisory recommends searching /var/log/messages for sshd lines of the form Accepted password for naming an account with no password, such as alpine, root or an account reserved for key-based authentication, for example with grep 'Accepted password for' /var/log/messages. On exposed machines, it also recommends reviewing doas use and recently created accounts, files and authorised keys. If a login cannot be ruled out, the machine should be treated as compromised. The oversized password travels inside the encrypted SSH channel: its length cannot be observed on the network, and the search relies on the machine’s logs.

Published indicators

IndicatorTypeContextSource
89.116.89[.]18IPv4 addressSource of the eight attempts observed, including root access on a honeypot; located in JapanPrevidian, via Help Net Security
id, uname, hostnameCommandsReconnaissance run after authentication, in non-interactive SSH sessionsPrevidian, via Help Net Security

Fig. 5. Indicators made public as of 6 November 2026. The address is defanged with brackets.

Source qualification

The OpenSSH release notes and commit, Damien Miller’s announcement, the Alpine Linux advisory, the CVE record, sshhole.com and the researcher’s repository are primary sources, read in full. The Hacker News, Help Net Security, Cyber Press and TheCyberThrone are specialist press sources; the Reddit discussion is a community source.

ItemStatusComment
Fixed upstream version 10.6p2, released on 5 November 2026corroboratedRelease notes, Damien Miller’s announcement, CVE record, Alpine advisory and press articles consistent.
Exposure conditionscorroboratedAlpine advisory, sshhole.com, researcher’s repository, The Hacker News, Help Net Security and Cyber Press consistent.
Mechanism: salt borrowing and the * value from crypt()corroboratedAlpine advisory, sshhole.com, The Hacker News; consistent with the code changed by commit 4353fdc.
Range of 257 to 1,024 bytescorroboratedAlpine advisory, researcher, The Hacker News, Cyber Press and Help Net Security; the PoC rejects 256 and accepts 257.
tiny-cloud images 3.18.11 to 3.24.3corroboratedAlpine advisory, The Hacker News, Help Net Security citing SOCRadar.
Fixed versions of the openssh package by branchsingle sourceAlpine advisory; values taken from a text conversion of the page, visual check on the rendered page to be done.
CVSS 3.1 score of 8.1single sourceCVE record, CNA MITRE, repeated by TheCyberThrone; OpenSSH uses “critical” without a score.
Report date of 3 Novembersingle sourceResearcher’s repository; Damien Miller’s message of 5 November places the team’s awareness on the previous day.
Observed exploitation and indicatorssingle sourcePrevidian, reported by Help Net Security; not consulted directly, not corroborated by an independent source.
Absence from CISA’s KEV cataloguesingle sourceHelp Net Security; catalogue not consulted directly. CISA’s SSVC assessment gives exploitation at PoC stage.
Range of 256 to 1,024 charactersdiscardedCVE record description; contradicted by musl’s limit, rejection above 256 bytes, and by the PoC.
No CVE identifierdiscardedAlpine advisory and The Hacker News of 5 November; superseded by the publication of the record the same day.
Wording of the Reddit discussion, accounts “configured to block password authentication”discardedWording taken from BleepingComputer, inaccurate: the attack requires PasswordAuthentication yes; the targeted accounts simply have no password set.

Assessment

Exposed Alpine servers not updated
Authentication without a password in a single connection, as soon as the four conditions are met; public PoC, exploitation reported on a honeypot.
High
tiny-cloud images 3.18.11 to 3.24.3
alpine user with a * field and passwordless doas: root privileges as soon as a $6$ hash is present.
High
Package updated without restarting sshd
The old binary keeps serving connections; the machine appears patched in the package inventory.
High
Inventory based on the CPE or the upstream version
CPE range without the musl or PAM condition; Alpine branches fixed under version numbers lower than 10.6p2.
Moderate
musl-based embedded systems and containers
Exposure to be established case by case: OpenSSH present rather than Dropbear, build without PAM, accounts and configuration.
Moderate
glibc systems or systems checking through PAM
Outside the vulnerable path according to OpenSSH, Alpine and the researcher.
Low
Method note

Analysis based on the OpenSSH 10.6p2 release notes, Damien Miller’s announcement of 5 November 2026, commit 4353fdc, the Alpine Linux advisory of 5 November 2026, the CVE-2026-123158 record in its 6 November 04:56 UTC version, sshhole.com and the oz9un/sshole repository, together with the articles by The Hacker News, Help Net Security, Cyber Press and TheCyberThrone, consulted on 6 November 2026. The levels in the grid reflect judgement. The state of exploitation is evolving; a KEV catalogue entry or the publication of further indicators would warrant an update of this article.

Glossary

  1. CVE (1): Common Vulnerabilities and Exposures, the public identifier assigned to a vulnerability.
  2. UTC (2): Coordinated Universal Time.
  3. CNA (3): CVE Numbering Authority, an organisation authorised to assign CVEs and publish their records; here, MITRE.
  4. SSH (4): Secure Shell, an encrypted protocol for remote administration and file transfer.
  5. PAM (5): Pluggable Authentication Modules, the modular authentication interface of Unix and Linux systems.
  6. SHA (6): Secure Hash Algorithm, a family of hash functions; the $5$ and $6$ types of crypt() rely on SHA-256 and SHA-512.
  7. CVSS (7): Common Vulnerability Scoring System, the system used to rate the severity of vulnerabilities.
  8. ADP (8): Authorized Data Publisher, an organisation authorised to enrich a CVE record with additional data.
  9. CISA (9): Cybersecurity and Infrastructure Security Agency, the United States cybersecurity and infrastructure security agency.
  10. SSVC (10): Stakeholder-Specific Vulnerability Categorization, a vulnerability prioritisation method based on decision points.
  11. AI (11): Artificial Intelligence.
  12. PoC (12): Proof of Concept, code demonstrating that exploitation is feasible.
  13. CWE (13): Common Weakness Enumeration, a classification of software weaknesses.
  14. CPE (14): Common Platform Enumeration, a standardised naming scheme for products and versions, used by vulnerability management tools.
  15. IP (15): Internet Protocol, the addressing protocol of the Internet.
  16. KEV (16): Known Exploited Vulnerabilities, CISA’s catalogue of vulnerabilities whose exploitation has been observed.

Sources

  1. OpenSSH, OpenSSH 10.6p2 Release Notes, 5 November 2026. openssh.org/releasenotes
  2. Damien Miller, urgent security release: 10.6p2, openssh-unix-dev list, 5 November 2026. marc.info
  3. OpenSSH Portable, commit avoid password authn bypass, 4353fdc, 5 November 2026. github.com/openssh/openssh-portable
  4. Alpine Linux, Security advisory: openssh-server password authentication bypass, 5 November 2026. alpinelinux.org
  5. CVE Program, record CVE-2026-123158, CNA MITRE, published 5 November 2026, updated 6 November 2026, JSON record from the cvelistV5 repository. github.com/CVEProject/cvelistV5
  6. Özgün Kültekin, *sshole, 5 November 2026. sshhole.com
  7. Özgün Kültekin, oz9un/sshole repository: README, TIMELINE.md, check.sh, PoC and patch, November 2026. github.com/oz9un/sshole
  8. The Hacker News, Swati Khandelwal, OpenSSH Issues Emergency Fix for Flaw Letting Long Passwords Bypass SSH Auth on Alpine Linux, 5 November 2026. thehackernews.com
  9. Help Net Security, Sinisa Markovic, OpenSSH flaw exploited in the wild just hours after disclosure (CVE-2026-123158), 6 November 2026. helpnetsecurity.com
  10. Cyber Press, Tamilselvan, Critical OpenSSH Authentication Bypass Lets Hackers Log In Without Knowing Passwords, 6 November 2026. cyberpress.org
  11. TheCyberThrone, PravinKarthik, SSHole: OpenSSH Authentication Bypass, CVE-2026-123158, 6 November 2026. thecyberthrone.in
  12. Reddit, r/cybersecurity, discussion relaying a BleepingComputer article, 6 November 2026. reddit.com/r/cybersecurity

Marked TLP:CLEAR, PAP:CLEAR. Unlimited disclosure, no restriction on use.

The analysis presented here reflects the author’s own views and rests on the public sources listed above.