ACTIVELY MONITORED//Verified: Nov 10, 2026
Vulnerability WatchCloud Defense
4 min read

CVE-2026-123158: Detect & Patch OpenSSH SSHole Bypass

••By CyberNewsAI Threat Research Team•VERIFIED INTEL
Digital illustration depicting OpenSSH daemon terminal on Alpine Linux breached by oversized authentication payloads exposing root shells.

SOC Briefing Summary :: Executive Key Takeaways

  • [01]Unauthenticated remote attackers are actively exploiting CVE-2026-123158 (SSHole) against Alpine Linux and musl-based container environments.
  • [02]Root-cause stems from musl libc crypt() returning an asterisk (*) on oversized passwords, which OpenSSH falsely evaluates as a valid hash match.
  • [03]Immediate remediation requires upgrading to OpenSSH 10.6p2, disabling password authentication, and revoking compromised session tokens.
SHARE INTEL:Reddit

Executive Summary

A critical authentication bypass flaw in OpenSSH, tracked as CVE-2026-123158 and codenamed SSHole (or *sshole), is undergoing active exploitation in the wild less than nine hours following its public disclosure. Rated CVSS 3.1: 8.1 (High), the vulnerability allows unauthenticated remote attackers to gain instant root or administrative shell access to Linux systems running OpenSSH built against the musl C library with Pluggable Authentication Modules (PAM) disabled—most notably the default OpenSSH server deployment in Alpine Linux.

Discovered by security researcher Ozgun Kultekin and patched in OpenSSH 10.6p2, the flaw enables attackers to authenticate into accounts configured without usable passwords (such as root, alpine, or SSH key-only accounts) by submitting oversized password payloads. Threat intelligence telemetry from Previdian and GreyNoise confirmed successful in-the-wild root compromises on honeypots, with adversaries immediately running automated post-exploitation reconnaissance scripts, querying cloud metadata services, and deploying custom Python command-and-control agents like the TAC Agent.

---

Technical Vulnerability Analysis & Attack Chain

Attack Chain Flow
// Attack Chain Flow

Root-Cause & Exploitation Mechanics

The root cause of CVE-2026-123158 stems from an unintended interaction between OpenSSH's legacy anti-enumeration protections and the cryptographic hashing behavior of musl libc:

  1. The 2016 Anti-Enumeration Heritage (`CVE-2016-6210`): In 2016, OpenSSH introduced a timing mitigation to prevent attackers from determining valid usernames based on response delays. When an invalid user was requested, or when an account was disabled at the system level, the daemon executed a dummy hashing operation to equalize CPU consumption.
  2. The Password-Disabled State in `/etc/shadow`: In standard Linux conventions, an account configured with no password or set for key-only access contains an asterisk (*) or exclamation mark (!) in the password hash field of /etc/shadow.
  3. musl libc Buffer Limits on `crypt()`: When an attacker submits a password string between 257 and 1,024 bytes long during an SSH login attempt, musl libc's crypt() function encounters an internal length limit. Rather than processing the string, musl fails the hashing operation and returns an error representation value: an asterisk (*).
  4. Faulty String Comparison Logic: OpenSSH's sshd authentication handler receives the return value of crypt(). Instead of recognizing the asterisk as a failure indicator from the C library, sshd treats the returned * as the legitimate computed hash. It then compares this returned * with the hash stored in /etc/shadow:
QUERY / DETECTION_RULE
C
// Conceptual flaw representation in sshd authentication check
if (strcmp(computed_hash, shadow_hash) == 0) {
    auth_success(); // True when computed_hash == "*" and shadow_hash == "*"
}
  1. Affected Scope Constraints: The vulnerability does not affect systems utilizing the standard GNU C Library (glibc, used by Debian, Ubuntu, RHEL, and Fedora) because glibc handles oversized password strings differently. It also does not impact installations that enforce password validation through PAM or use alternative daemons like Dropbear. However, lightweight container images, Kubernetes pods, and edge appliances based on Alpine Linux—which use musl libc without PAM—are directly vulnerable out of the box.

---

MITRE ATT&CK Tactics, Techniques & Procedures (TTPs)

MITRE ATT&CK • OPERATIONAL TTP MAPPING
TacticTechnique IDTechnique NameOperational Context
Initial AccessT1190Exploit Public-Facing ApplicationRemote authentication bypass against exposed OpenSSH services on Alpine Linux
Defense EvasionT1556Modify Authentication ProcessExploiting musl libc hash failure to bypass password verification
ExecutionT1059.004Command and Scripting Interpreter: Unix ShellSpawning non-interactive and interactive root shells over SSH sessions
DiscoveryT1082System Information DiscoveryAdversary reconnaissance executing id, uname -a, and hostname
DiscoveryT1580Cloud Infrastructure DiscoveryAutomated scanning of cloud buckets, metadata, and local databases
PersistenceT1098.004Account Manipulation: SSH Authorized KeysPost-exploitation planting of attacker public keys in ~/.ssh/authorized_keys
CollectionT1530Data from Cloud Storage ObjectStaging bulk data dumps from cloud object storage
ExfiltrationT1567.002Exfiltration Over Web ServiceExfiltrating compressed databases to external cloud hosts

---

Threat Actor Profile & Exploitation Telemetry

Telemetry captured by threat intelligence firms Previdian and GreyNoise observed active exploitation commencing less than nine hours following initial vulnerability disclosure. Threat actors deployed automated scanning harnesses targeting port 22 on public IPv4 ranges.

A honeypot running an unpatched Alpine Linux container with OpenSSH was compromised by an actor operating from IP address `89.116.89[.]18` (geolocated to Japan). Telemetry recorded eight distinct exploit attempts. Upon gaining root access via the oversized password payload, the adversary executed non-interactive reconnaissance commands, queried cloud metadata services, and attempted to deploy the TAC Agent—a Python command-and-control implant featuring shell command execution, file transfer capabilities, and automated persistence routines.

---

Detection & SOC Mitigation Playbook

1. Concrete Remediation & Workarounds

Organizations operating Alpine Linux containers, virtual machines, or appliances must take immediate protective action:

  • Step 1: Upgrade OpenSSH Packages: Update to OpenSSH 10.6p2 or the latest distribution security release and restart the daemon:
QUERY / DETECTION_RULE
BASH / CLI
# On Alpine Linux
pk update && apk upgrade openssh
c-service sshd restart
  • Step 2: Disable Password Authentication (Immediate Mitigation): If packages cannot be immediately updated, disable password authentication entirely in /etc/ssh/sshd_config:
QUERY / DETECTION_RULE
BASH / CLI
# Enforce key-only authentication
ed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
ill -HUP $(pgrep -f sshd)
  • Step 3: Harden Disabled Password Hashes in `/etc/shadow`: Ensure passwordless or disabled accounts use ! or !* rather than a standalone *:
QUERY / DETECTION_RULE
BASH / CLI
# Check for vulnerable asterisk password fields
wk -F: '$2 == "*" {print $1}' /etc/shadow

# Lock accounts to prepend exclamation mark
asswd -l root
  • Step 4: Audit Post-Exploitation Artifacts: Inspect compromised nodes for unauthorized changes to doas, sudo, and SSH keys, as well as unauthorized startup services linked to TAC Agent:
QUERY / DETECTION_RULE
BASH / CLI
at /root/.ssh/authorized_keys
at /home/*/.ssh/authorized_keys
ind / -mmin -120 -type f 2>/dev/null | grep -E "(bin|etc|var)"

2. Network & Perimeter Defenses

  • SSH Port 22 Restriction: Never expose OpenSSH listening ports directly to the public internet on container hosts or edge systems. Place administrative interfaces behind WireGuard, Tailscale, or corporate bastion jump hosts.
  • Threat Actor IP Blocking: Block inbound connections from known scanning host `89.116.89[.]18` at perimeter firewalls.

3. Endpoint Detection & Hunting Query

Sigma Rule: OpenSSH Authentication Accepted for Disabled Account

QUERY / DETECTION_RULE
SIGMA / YAML
title: OpenSSH Authentication Accepted for Passwordless Account
id: d7e21a48-52f1-43b9-a891-c918239048a1
status: experimental
description: Detects successful password authentication on OpenSSH for accounts that should not have a password configured (indicative of CVE-2026-123158 SSHole exploitation).
references:
  - https://thehackernews.com/2026/11/hackers-exploited-openssh-sshole-flaw.html?ref=cybernewsai.com
author: CyberNewsAI Threat Research Team
logsource:
  category: auth
  product: linux
detection:
  selection_accepted:
    message|contains: 'Accepted password for'
  selection_accounts:
    message|contains:
      - 'Accepted password for root'
      - 'Accepted password for alpine'
  condition: selection_accepted and selection_accounts
falsepositives:
  - Legitimate password authentication on systems where root or alpine has an explicitly assigned password (strongly discouraged).
level: critical
tags:
  - attack.initial_access
  - attack.t1190
  - attack.defense_evasion
  - attack.t1556

Microsoft Sentinel / Defender Hunting Query (KQL)

QUERY / DETECTION_RULE
SENTINEL / KQL
// Hunt for OpenSSH password authentication on root or service accounts on Linux endpoints
syslog
| where ProcessName == "sshd"
| where SyslogMessage has "Accepted password for"
| extend User = extract(@"Accepted password for (\S+)", 1, SyslogMessage),
         ClientIP = extract(@"from (\S+)", 1, SyslogMessage),
         Port = extract(@"port (\d+)", 1, SyslogMessage)
| where User in~ ("root", "alpine", "nobody", "daemon") or ClientIP == "89.116.89.18"
| project TimeGenerated, HostName, ProcessName, User, ClientIP, Port, SyslogMessage
| order by TimeGenerated desc

---

Indicator TypeValueContext
IP Address89.116.89.18Threat actor source IP observed in honeypot exploitation (Japan)
VulnerabilityCVE-2026-123158OpenSSH authentication bypass on musl libc (SSHole)
Patched ReleaseOpenSSH 10.6p2Authoritative upstream patch release
Exploited TargetAlpine Linux (Default sshd)Primary vulnerable Linux distribution deployment
Indicators of Compromise (IOCs)
4 Identified
ip89.116.89.18
cveCVE-2026-123158
domainOpenSSH (pre-10.6p2 on musl libc)
domainOpenSSH 10.6p2
SHARE INTEL:Reddit
OPERATIONS_BROADCAST

Watch Full Video Briefings on YouTube

Subscribe to CyberNewsAI on YouTube for animated threat vectors, CISO breakdowns, and security briefings.

SUBSCRIBE_ON_YOUTUBE