Det perfekta mardrömsscenariot för en Linux-server är när allt en angripare behöver göra är att nå serverns Secure Shell-port (SSH), kliva rakt in och ta över den. Det är vad som hände Alpine Linux, den populära lättviktiga Linux-servern. För att lägga salt i såren hände detta bara dagar efter att Alpine Linux undkommit en säkerhetshål-stor kula för sin GitLab-implementation.

Som säkerhetsingenjören Gregory Bryant förklarade i sitt LinkedIn-inlägg: "De flesta autentiseringsbypass kommer från komplexa logikkedjor, men gårdagens Alpine Linux OpenSSH-sårbarhet (CVE-2026-123158) kokar ner till ett enda tecken: *."

Om du kör Alpine Linux (eller en annan musl-baserad distribution) med standardpaketet openssh-server (inga Pluggable Authentication Modules, eller PAM) och PasswordAuthentication aktiverat, kan en angripare logga in på konton med lösenord inaktiverat, eller endast nyckelbaserade konton, helt enkelt genom att skicka ett lösenord mellan 257 och 1024 byte långt.

Alpine Linux är inte det enda operativsystemet som använder musl, en lättviktsversion av standard C-biblioteket (libc). Andra operativsystem som använder musl och potentiellt är sårbara inkluderar Adélie Linux; Void Linux; Sabotage Linux; OpenWrt, en Android-variant; och Yocto Project, som används för att bygga inbäddade Linux-distributioner.

Wind River, som producerar den kommersiella inbäddade Linux-distributionen Wind River Linux, undersöker också problemet. En företrädare för företaget sa till mig: "Wind River tar säkerhet på allvar. Vi granskar aktivt den rapporterade sårbarheten och bedömer dess potentiella påverkan. Vi kommer att vidta lämpliga åtgärder vid behov."

Bakom kulisserna, när OpenSSH byggs utan PAM, verifierar det lösenord genom att hasha lösenordsförsöket med C-bibliotekets crypt()-funktion. Det jämför sedan resultatet med kontots lagrade lösenordsfält. Så långt allt väl.

Men när en nyckel är längre än 256 byte returnerar musl's crypt()-funktion strängen * som en felindikator. Det är också vad lösenordsfältet innehåller för alla konton utan lösenord, såsom endast nyckelbaserade konton. Således matchar "hashen" och inloggningen lyckas, och angriparen kliver in.

För att utnyttja det behöver en angripare bara namnet på ett sådant konto. Angriparen behöver också minst ett annat konto på maskinen med en 5- eller 6-lösenordshash, och sedan skicka ett lösenord på 257 till 1 024 byte. Enligt Alpine räcker en användare med lösenord för att göra alla lösenordslösa konton åtkomliga.

I Linux-system som använder glibc's crypt(), vilket är nästan alla, skulle samma försök returnera NULL vid fel, vilket sshd redan avvisar, så Debian, Ubuntu, Fedora etc. påverkas inte.

Enligt *sshole, gruppen som upptäckte problemet, är detta en bieffekt som har legat dold sedan 2016.

Alpine sa att varje utgåva de kontrollerade är påverkad: 3.21 till 3.24, edge och de äldre grenarna 3.16 till 3.20. Exponering kräver följande:

Root är inte direkt exponerad i de flesta fall. Det har levererats som root:* i basavbildningen sedan ungefär Alpine 3.16, men OpenSSH's standard PermitRootLogin prohibit-password blockerar det. Ett annat konto som kan bli root, till exempel via doas, ger fortfarande en angripare en väg till root.

Alpine pekade särskilt ut sina officiella tiny-cloud-avbildningar, versionerna 3.18.11 till 3.24.3, som särskilt sårbara. Dessa levereras med en alpine-användare med ett *-lösenordsfält och lösenordslös doas. De är säkra vid första uppstart men blir exploaterbara så snart någon 6-hash finns på maskinen. Det kan hända när en administratör sätter ett konsollösenord eller när användardata lägger till en användare med ett hashat lösenord, vilket innebär i princip alla.

Alpine släppte 3.21.10, 3.22.8, 3.23.8 och 3.24.4 i torsdags, med OpenSSH-fixen bland säkerhetsändringarna. Det publicerade också fixade paket för varje utgåva tillbaka till 3.16. Alpine 3.21 nådde slutet av supporten den 1 november.

Den nyligen släppta OpenSSH 10.6p2 undviker problemet i sshd. Alpines stabila grenar har en patch för samma problem. Du bör köra apk upgrade -U -a och sedan starta om th