Close Menu

    Subscribe to Updates

    Get the latest tech news, how-to guides and quick fixes from Technology Ripple, delivered straight to your inbox.

    ← Back

    Thank you for your response. ✨

    By signing up, you agree to our terms and our Privacy Policy.

    What's Hot

    Tesla Is Ending the Cybertruck and Refunding Some Deposits

    November 10, 2026

    Apple Watch Won’t Pair After iOS 27? How to Fix It

    November 10, 2026

    Why Instagram Now Uses AI Age Detection on Teens

    November 10, 2026
    Technology RippleTechnology Ripple
    Subscribe
    • Latest News
    • AI
    • Apple
    • Smart Tech
    • Startups
    • Gaming
    • Phones
    • Cybersecurity
    • Fintech
    Technology RippleTechnology Ripple
    Home » Blog » What to Do About the OpenSSH SSHole Flaw on Your Server
    Cybersecurity

    What to Do About the OpenSSH SSHole Flaw on Your Server

    Daniel ReedBy Daniel ReedNovember 10, 202613 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
    An admin working at a desk beside a server rack, illustrating the OpenSSH SSHole fix
    Share
    Facebook Twitter LinkedIn Pinterest Email

    Key Takeaways

    1. 1
      Who SSHole Affects: The OpenSSH SSHole flaw CVE-2026-123158 bypasses password checks on unpatched musl systems with password logins enabled and PAM off. A hashing error can match a key-only account’s asterisk when another local account has a SHA-256 or SHA-512 password hash.
    2. 2
      Patch and Restart: On Alpine Linux, check your branch and installed OpenSSH revision, install the fixed package, then restart sshd. Recreate affected Docker containers from a fixed image, and use OpenSSH 10.6p2 or later if you build from upstream.
    3. 3
      Block Password Logins: If you can’t patch OpenSSH against SSHole, confirm your SSH key works, set PasswordAuthentication no, and restart sshd. If you can’t rule out a break-in after checking /var/log/messages, rebuild from a clean image and rotate the server’s credentials.

    Attackers started trying the OpenSSH SSHole flaw less than nine hours after its November 5 disclosure, and CISA added it to its Known Exploited Vulnerabilities catalog on November 9. If you run Alpine Linux or another musl-based system with an unpatched OpenSSH server that checks passwords without PAM, update OpenSSH, restart sshd, and turn off password logins. Standard Ubuntu, Debian, Fedora, and RHEL installs are outside the affected group.

    What’s at stake? If your server meets the conditions below, someone who can reach port 22 can sign in to an account that was meant to reject passwords. On some Alpine cloud images, that account can give them root access. Here are the facts to check first.

    ItemDetails
    Name and CVESSHole, also written *sshole, tracked as CVE-2026-123158
    SeverityCVSS 8.1 High. OpenSSH describes its fix as critical.
    Disclosed and fixedNovember 5, 2026, with the upstream fix in OpenSSH 10.6p2.
    Who is exposedUnpatched OpenSSH on musl-based Linux with PAM off, password logins on, and the account conditions below
    Outside the affected groupStock Ubuntu, Debian, Fedora, and RHEL, plus PAM-enabled setups, Dropbear, macOS, and OpenBSD
    ExploitedAttempts began within hours. Previdian confirmed root access on a honeypot. CISA listed the flaw on November 9.
    Alpine fixUpgrade the openssh package, then restart sshd
    Quick workaroundSet PasswordAuthentication no and restart sshd.

    What the OpenSSH SSHole Bug Actually Does

    A key-only account on your server can have an asterisk in its password field instead of a password hash. When musl fails to hash an unusually long password, it can return that same asterisk as an error. An unpatched sshd can read the two matching values as a successful password check. So how did an error end up looking like a valid login?

    The behavior dates back to 2012, when musl began returning an asterisk for that failure. In 2016, OpenSSH changed how it checks accounts without passwords to make valid usernames harder to guess. Around 2022, Alpine started shipping root with an asterisk in its password field so key logins could still work.

    Özgün Kültekin of Wakefield reported the flaw on November 4. OpenSSH released 10.6p2 the next day. The project traced the cause outside sshd and changed the server so it could avoid the false match.

    Is Your Server Exposed to SSHole

    Seeing OpenSSH on your server tells you very little on its own. For SSHole to work against an unpatched server, all four of these conditions have to be true.

    • musl without PAM. Your Linux system uses musl, and sshd checks passwords without PAM. That includes Alpine’s standard openssh-server package or its PAM build with UsePAM no.
    • Password logins enabled. Your server allows password authentication. OpenSSH defaults to PasswordAuthentication yes unless your configuration changes it.
    • An account with an asterisk. Check for a login-eligible account with * in its password field. Examples include key-only users and the alpine user on tiny-cloud images. Directory users served through musl-nscd can qualify too.
    • A real password hash elsewhere. At least one other local account must have a SHA-256 hash starting with $5$ or a SHA-512 hash starting with $6$.

    Systems You Can Stop Worrying About

    Debian’s tracker labels some package versions vulnerable based on their version numbers. A standard Debian install uses glibc and PAM, which puts it outside the exploitable setup. The same check lets you rule out these systems and accounts.

    • Stock Ubuntu, Debian, Raspberry Pi OS, Fedora, RHEL, Rocky Linux, and AlmaLinux.
    • macOS, OpenBSD, and OpenWrt devices using the default Dropbear server.
    • OpenSSH servers that check passwords through PAM or enforce PasswordAuthentication no, including cloud images where cloud-init has applied that directive.
    • Individual accounts locked with ! in the password field.

    Where Home Labs and Small Sites Get Caught

    • Alpine VPS or VM. Start here if you run home lab services exposed to the internet and your SSH port is reachable too.
    • Alpine on AWS or Azure. Check instances launched from tiny-cloud images in the 3.18.11 to 3.24.3 range. Setting a console password can add the hash that makes a previously safe instance exploitable.
    • Proxmox LXC or Docker. Check inside Alpine containers that run sshd, including custom builds. If you use linuxserver/openssh-server, check whether you changed PASSWORD_ACCESS from its default of false.
    • Routers and embedded devices. Check musl-based OpenWrt, Buildroot, and Yocto devices that run OpenSSH. On OpenWrt, look for devices where you replaced Dropbear.

    What PermitRootLogin Does and Doesn’t Protect

    The default PermitRootLogin prohibit-password blocks direct password logins as root. On affected tiny-cloud images, though, an attacker who gets in as alpine can use passwordless doas to become root. Check the accounts that can become root as well as the root login rule.

    How to Check Your OpenSSH Version and Setup

    Start with the machine or container that actually runs sshd. These checks take you from the operating system to the package revision and the accounts the flaw could affect.

    1. Confirm the OS and C library. On Alpine, read the release file, then check what sshd links against and look for musl, glibc, and libpam.
    cat /etc/alpine-release
    ldd /usr/sbin/sshd
    1. Check the OpenSSH version. The first command reports the client version and the second reports the server version where supported, but both show upstream numbers.
    ssh -V
    sshd -V
    1. Find the Alpine package revision. Compare the full revision with the table below, since Alpine 3.24 has the fix in 10.3_p1-r2 even though OpenSSH still reports 10.3.
    apk info -v | grep '^openssh'
    1. Read the SSH configuration. Run this as root to see the global values, then check Match blocks and files under /etc/ssh/sshd_config.d/ for rules that allow passwords for specific connections.
    sshd -T | grep -Ei '^(usepam|passwordauthentication|permitrootlogin) '
    1. Check local account types. Run both commands as root to list usernames with an asterisk first and usernames with a $5$ or $6$ hash second, without printing any hashes.
    awk -F '\072' '$2 == "*" {print $1}' /etc/shadow
    awk -F '\072' '$2 ~ /^\$[56]\$/ {print $1}' /etc/shadow
    1. Check the package on other distributions. Use the first command on Debian or Ubuntu and the second on RHEL or Fedora to see which server package you have installed.
    dpkg -l openssh-server
    rpm -q openssh-server

    Stick to local checks. Previdian warns that unverified SSHole scripts on GitHub could contain malware.

    Fixed Alpine Package Versions by Branch

    Alpine applied the patch to older OpenSSH versions, so the full package revision tells you whether your branch has the fix. Find your branch below and compare your installed revision with the first fixed package in the Alpine Linux security advisory.

    Alpine branchFirst fixed openssh packageNotes
    edge10.6_p2-r0Uses the upstream fix
    3.2410.3_p1-r2Included in 3.24.4
    3.2310.2_p1-r1Included in 3.23.8
    3.2210.0_p1-r11Included in 3.22.8
    3.219.9_p2-r1Included in 3.21.10. Support ended November 1, 2026.
    3.209.7_p1-r6Out of support. Package fix only.
    3.199.6_p1-r3Out of support. Package fix only.
    3.189.3_p2-r4Out of support. Package fix only.
    3.179.1_p1-r7Out of support. Package fix only.
    3.169.0_p1-r6Out of support. Package fix only.

    If you run Alpine 3.15 or earlier, upgrade Alpine or disable password logins, since those branches received no fixed package. If you build OpenSSH from upstream, use 10.6p2 or later.

    How to Patch OpenSSH SSHole on Alpine, Docker and Other Systems

    The fixed package is only part of the job. On Alpine, the running SSH server keeps using the old code until you restart it. In Docker, you need to recreate the container from a fixed image. Start with the steps for the system that actually runs sshd.

    Alpine Servers and VMs

    1. Update the packages. Run the upgrade as root on your Alpine server or VM.
    apk upgrade -U -a
    1. Restart the SSH server. Once the upgrade succeeds, restart sshd so it loads the patched code.
    rc-service sshd restart
    1. Verify the result. Compare your installed package revision with the table above and confirm that SSH is using the password authentication policy you expect.
    apk info -v | grep '^openssh'
    sshd -T | grep -i '^passwordauthentication '

    Docker Containers Built on Alpine

    1. Find the containers running SSH. List your running containers, then replace CONTAINER with the name of one you want to check. Look for sshd in the process list and the openssh-server package in the package output. Containers without a running SSH server are outside the scope of SSHole.
    docker ps
    docker exec CONTAINER ps
    docker exec CONTAINER apk info -v | grep '^openssh-server'
    1. Get a fixed image. Pull the updated image if someone else maintains it. If you build it yourself, rebuild on Alpine 3.24.4 or later and include the updated OpenSSH package.
    2. Recreate the container. Restarting the old container keeps it on the old image. For a service that pulls its image, run both Compose commands and replace SSH_SERVICE with your service name. If you’ve already rebuilt the image locally, run the second command to recreate the service.
    docker compose pull SSH_SERVICE &&
      docker compose up -d --force-recreate SSH_SERVICE

    Cloud Images, Routers and Other musl Devices

    • Running Alpine cloud instances. Patch your existing AWS or Azure instances directly. A fixed image in the catalog only helps instances launched from that image.
    • Routers and embedded devices. If your device runs OpenSSH on musl, install the fixed package or firmware. On OpenWrt, you can also switch back to Dropbear.
    • Unsupported Alpine releases. Move to a supported branch. If you’re on Alpine 3.15 or earlier, turn off password logins while you arrange the upgrade.

    Temporary Fixes If You Can’t Update Today

    Turning off SSH password authentication blocks the bypass. If you’re making the change over SSH, keep your current session open until you’ve tested a fresh key login. Follow these steps on Alpine.

    1. Test your key. Open a second connection and confirm you can sign in with your SSH key.
    2. Turn off password authentication. On Alpine 3.19 or later with the default configuration, put PasswordAuthentication no in /etc/ssh/sshd_config.d/00-no-passwords.conf. On older releases, edit /etc/ssh/sshd_config directly. Check the main file and included files for PasswordAuthentication yes, including inside Match blocks, and change those directives to no.
    3. Validate and restart. Run this as root so sshd restarts only if the configuration check passes.
    sshd -t && rc-service sshd restart
    1. Verify before you disconnect. Look for passwordauthentication no, then open a fresh key-based session before closing the one you kept open.
    sshd -T | grep -i '^passwordauthentication '
    • Restrict port 22. Limit it to your IP through a firewall or cloud security group, or stop exposing it publicly by putting SSH behind a VPN.
    • Keep direct root access limited. Leave PermitRootLogin at prohibit-password or set it to no.
    • Check PAM and account locks. Alpine’s openssh-server-pam with UsePAM yes is outside the affected configuration. On builds without PAM, locking an account with ! also blocks its key logins.
    • Turn off unused SSH. If you never connect to the machine over SSH, disable the service.

    Signs Someone Already Got In

    If your server was exposed, look back through its SSH logs even after you patch. Start with /var/log/messages on Alpine or your central logs, then check for changes made after a suspicious login.

    • Unexpected password login. Look for Accepted password for entries naming root, alpine, or a key-only user that should reject passwords. Check for a failure followed by success in the same session.
    • Changes to access. Look for unfamiliar keys in authorized_keys, especially for alpine or root, along with new users or doas activity you can’t account for.
    • Changes to the system. Look for new scripts in /etc/init.d or edits to /etc/hosts, /etc/resolv.conf, or /etc/apk/repositories.
    • Unexpected processes. Check for a second sshd listening on a port such as 2222 or an unexplained jump in CPU usage.

    Previdian observed attackers inspecting an Alpine honeypot and confirmed that they gained root access. GreyNoise observed attackers probe cloud instance metadata, try to retrieve password hashes and SSH keys, add their own SSH keys, and run a Python agent for remote control. WatchTowr identified botnets and crypto miners among the early users. SANS honeypots recorded a peak of 713 unusually long password attempts on November 6.

    If you find a suspicious login you can’t rule out, treat the machine as compromised.

    1. Rebuild the machine from a clean image.
    2. Rotate the SSH keys, API tokens, cloud credentials, and deployment credentials it held.
    3. Check the other machines it could reach.

    Your Next Steps This Week

    If you run a standard Ubuntu or Debian server, you can set aside this particular alert. If Alpine runs your SSH server, check its package revision today. Subscribe to your distribution’s security announcements, and use a recent self-hosted server vulnerability as a reminder to follow updates for the other software you run. Here’s what to put on your list.

    • Check what runs SSH. Include your VMs and containers.
    • Patch and restart. Restart sshd on Alpine hosts and recreate affected containers from a fixed image.
    • Tighten account access. Keep SSH key-only, restrict who can reach it, and consider adding a second factor to your logins on services that support it.
    • Review your logs. Check whether any key-only account accepted a password while your server was exposed.

    FAQs

    Does SSHole affect your Ubuntu or Debian server?

    Standard Ubuntu and Debian servers are outside the scope of SSHole because they use glibc and PAM. Debian’s tracker can label a package version vulnerable even though the standard Debian configuration lacks the conditions this bypass requires.

    Which OpenSSH release closes the SSHole hole?

    OpenSSH 10.6p2 is the first upstream release with the fix. On Alpine, look for the fixed package revision for your branch, since Alpine also patched older OpenSSH versions.

    Why does your patched Alpine box still say OpenSSH 10.3?

    Your Alpine box still shows OpenSSH 10.3 because Alpine added the fix to the version it already shipped. Check the -r part of the installed package revision. On Alpine 3.24, the first fixed package is 10.3_p1-r2.

    Is turning off password logins enough on its own?

    Yes, turning off SSH password authentication blocks this bypass. Make sure the rule applies to every connection, including those covered by Match blocks, and restart sshd. Install the fixed package when you can.

    Do you need to patch every Alpine Docker container you run?

    You only need to patch Alpine containers that run an affected OpenSSH server. Recreate each affected container from a fixed image so it starts with the updated package.

    Can this bug affect your OpenWrt router?

    Your OpenWrt router is outside the affected group if you use its default Dropbear server. If you installed OpenSSH, check whether it runs on musl, checks passwords without PAM, and allows password logins.

    Alpine Linux Home Lab Linux Security OpenSSH Vulnerabilities
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleHow to Get AWS Credits and Apply Them to Your Account
    Next Article One UI 9 Mobile Data Not Working? 10 Fixes for Wi-Fi and SIM Drops
    Daniel Reed, Technology Ripple author
    Daniel Reed

    Account security, online scams, and digital privacy are central to Daniel Reed’s coverage at Technology Ripple. He studied cybersecurity with a specialization in network security and digital forensics. In his role as Cybersecurity and Privacy Writer, he explains threats and the practical steps readers can take to protect themselves.

    Related Posts

    Industry News

    Tesla Is Ending the Cybertruck and Refunding Some Deposits

    November 10, 2026
    Apple

    Apple Watch Won’t Pair After iOS 27? How to Fix It

    November 10, 2026
    AI

    Why Instagram Now Uses AI Age Detection on Teens

    November 10, 2026
    Top Posts

    10 Simple Ways to Charge Your Phone Without a Charger

    August 8, 2025

    ChatGPT Memory Full? What It Means and How to Fix It

    October 14, 2026

    Why are iPhones more Expensive in Europe?

    November 20, 2024
    Latest Reviews

    Subscribe to Updates

    Get the latest tech news, how-to guides and quick fixes from Technology Ripple, delivered straight to your inbox.

    ← Back

    Thank you for your response. ✨

    By signing up, you agree to our terms and our Privacy Policy.

    Most Popular

    10 Simple Ways to Charge Your Phone Without a Charger

    August 8, 2025

    ChatGPT Memory Full? What It Means and How to Fix It

    October 14, 2026

    Why are iPhones more Expensive in Europe?

    November 20, 2024
    Our Picks

    Tesla Is Ending the Cybertruck and Refunding Some Deposits

    November 10, 2026

    Apple Watch Won’t Pair After iOS 27? How to Fix It

    November 10, 2026

    Why Instagram Now Uses AI Age Detection on Teens

    November 10, 2026

    Subscribe to Updates

    Get the latest tech news, how-to guides and quick fixes from Technology Ripple, delivered straight to your inbox.

    ← Back

    Thank you for your response. ✨

    By signing up, you agree to our terms and our Privacy Policy.

    Technology Ripple
    • Home
    • About
    • Contact
    • Editorial Policy
    • Privacy Policy
    © 2026 Technology Ripple. Tech news, how-to guides and fixes.

    Type above and press Enter to search. Press Esc to cancel.