<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OpenWrt – Linux und Ich</title>
	<atom:link href="https://linuxundich.de/en/tag/openwrt/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxundich.de/en</link>
	<description>A German Linux blog, in English</description>
	<lastBuildDate>Thu, 05 Nov 2026 16:19:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>
	<item>
		<title>OpenSSH Vulnerability *sshole: Now Long Passwords Are a Problem Too</title>
		<link>https://linuxundich.de/en/openssh-vulnerability-sshole-musl-alpine-openwrt/</link>
					<comments>https://linuxundich.de/en/openssh-vulnerability-sshole-musl-alpine-openwrt/#respond</comments>
		
		<dc:creator><![CDATA[Christoph Langner]]></dc:creator>
		<pubDate>Thu, 05 Nov 2026 16:19:24 +0000</pubDate>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Alpine Linux]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[OpenWrt]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>
		<guid isPermaLink="false">https://linuxundich.de/en/openssh-vulnerability-sshole-musl-alpine-openwrt/</guid>

					<description><![CDATA[Log in as root via SSH with any password longer than 256 bytes: the *sshole vulnerability hits OpenSSH on systems with musl libc. The Linux desktop is off the hook, routers, containers and embedded devices not so much.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For decades we have all been hearing the same sermon: short passwords are a security problem. Use a long passphrase instead, ideally with special characters, ideally from a password manager. As of today, we know that long passwords are a problem too. At least when they are longer than 256 bytes and hit an OpenSSH server running without PAM on musl libc. Because then every password is the right one.</p>



<h2 class="wp-block-heading">An asterisk is an asterisk</h2>



<p class="wp-block-paragraph">The vulnerability goes by the lovely name <a href="https://sshhole.com/">*sshole</a> and was found by Özgün Kültekin (Wakefield). Under the right conditions, an attacker can log in via SSH with any password between 257 and 1024 bytes. And of all accounts, it works on the ones that are actually locked and are not supposed to have a password at all. That can include root.</p>



<p class="wp-block-paragraph">The cause is almost comical. Instead of a password hash, locked accounts often just have a <code>*</code> in <code>/etc/shadow</code>. musl&#8217;s <code>crypt()</code> function also returns a <code>*</code> when something goes wrong while processing the password. And that is exactly what happens with passwords over 256 bytes. OpenSSH then compares asterisk with asterisk, finds them equal, and politely waves the visitor through.</p>



<p class="wp-block-paragraph">This was not caused by a single blunder, but by several changes that were harmless on their own. In 2012, musl introduced both the return value on failure and the length limit. In 2016, OpenSSH plugged a timing leak and, in doing so, made sure the bug also reaches real users with <code>*</code>. Nobody noticed for about ten years.</p>



<h2 class="wp-block-heading">All clear for the Linux desktop</h2>



<p class="wp-block-paragraph">If you run sshd on your Arch machine, your Ubuntu laptop or your little Debian home server, you can sit back and relax. The big distributions use glibc instead of musl and have OpenSSH check passwords through PAM in their default configuration. So the path to the asterisk comparison is never open in the first place. According to the analysis, Debian, Ubuntu and Fedora are not affected, and neither are OpenBSD and Dropbear.</p>



<p class="wp-block-paragraph">Only systems where all of these points come together are affected:</p>



<ul class="wp-block-list">

<li>Linux with musl libc (such as Alpine Linux, OpenWrt, Buildroot or Yocto)</li>


<li>OpenSSH without PAM</li>


<li>password authentication enabled</li>


<li>at least one account with <code>*</code> as the password field in <code>/etc/shadow</code></li>


<li>at least one other account with a valid password hash</li>

</ul>



<h2 class="wp-block-heading">It gets creepy where nobody is looking</h2>



<p class="wp-block-paragraph">On paper, the list sounds like a niche. On Alpine Linux, however, it is the default: the <code>openssh-server</code> package works without PAM there, password logins are on, and root has had a <code>*</code> as its hash since Alpine 3.16. On top of that, the official images for AWS and Azure come with a user named alpine that becomes root via doas without a password. One long password, one <code>doas</code>, done.</p>



<p class="wp-block-paragraph">OpenWrt itself ships with Dropbear as its SSH server, which is not affected. But if you switched your router to OpenSSH, say for SFTP, you should take a closer look. It gets really unpleasant with Buildroot and Yocto. Manufacturers use them to build firmware for routers, NAS boxes, cameras, industrial controllers and all kinds of IoT stuff. Very few data sheets tell you what exactly is inside.</p>



<p class="wp-block-paragraph">And these are exactly the boxes that like to sit directly on the internet. They are the devices you set up once and never touch again, because they just work. Updates come, if at all, only when the manufacturer remembers that it once sold the thing. In my opinion, that is the real creepy part of this vulnerability, not the Linux desktop.</p>



<h2 class="wp-block-heading">What you should do now</h2>



<p class="wp-block-paragraph">OpenSSH released version <a href="https://www.openssh.org/releasenotes.html#10.6p2">10.6p2</a> today, which catches the problem on the OpenSSH side. On Alpine Linux, you get the update through the package manager as usual with <code>apk upgrade openssh</code>. Other distributions fix the bug with a backported security patch. Restart the SSH service afterwards so the new version is really the one listening. With off-the-shelf firmware, all you can do is look for an update from the manufacturer.</p>



<p class="wp-block-paragraph">If you cannot update right away, turn off password login in <code>sshd_config</code>:</p>



<pre class="wp-block-code"><code>PasswordAuthentication no</code></pre>



<p class="wp-block-paragraph">Before you do, make sure that key-based access works, of course, or you will lock yourself out. On Alpine, you can also do this as a separate configuration file and then restart the service:</p>



<pre class="wp-block-code"><code>echo &quot;PasswordAuthentication no&quot; &gt; /etc/ssh/sshd_config.d/00-no-passwords.conf
rc-service sshd restart</code></pre>



<p class="wp-block-paragraph">Honestly: an SSH server with password login sitting wide open on the internet was not a good idea even before *sshole. Passwords that are too short get guessed, and as of today, the ones that are too long are suspicious as well. The best password for SSH is still none at all, it is a key. Do you run Alpine boxes or an OpenWrt router with OpenSSH, and do you actually know what SSH server your devices on the net are running?</p>
<hr><p>☕ <strong>Support Linux und Ich</strong><br>Thanks for reading <a href="https://linuxundich.de/en/">Linux und Ich</a>. If you enjoy the blog and would like to support my work, you will find more information on the <a href="https://linuxundich.de/en/support/">donation page</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://linuxundich.de/en/openssh-vulnerability-sshole-musl-alpine-openwrt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
