Čo sa stalo
Vývojári OpenSSH vydali 5. novembra 2026 urgentnú bezpečnostnú verziu OpenSSH 10.6p2. Rieši chybu CVE-2026-123158, ktorej jej objaviteľ Özgün Kültekin z firmy Wakefield dal prezývku „sshole“. Týka sa SSH servera sshd na Linuxe, ktorý používa knižnicu musl libc a heslá neoveruje cez PAM. Najznámejším takým systémom je Alpine Linux, ktorý v ten istý deň vydal vlastné bezpečnostné upozornenie a opravené balíky.
Podľa Alpine Linuxu sa útočník, ktorý sa dostane k vášmu SSH portu, môže za určitých podmienok prihlásiť bez znalosti hesla. Stačí mu jedno pripojenie a podľa Alpine to funguje zakaždým. Vývojár OpenSSH Damien Miller označil chybu za kritickú a správcom dotknutých systémov odporučil okamžite vypnúť prihlasovanie heslom alebo SSH úplne.
Firma Previdian, ktorá sleduje hrozby, podľa Help Net Security zachytila prvý pokus o zneužitie menej ako deväť hodín po zverejnení chyby a na svojom návnadovom serveri (honeypote) potvrdila úspešné získanie prístupu s právami root. Doteraz napočítala osem pokusov z jedinej adresy. Americká agentúra CISA chybu do katalógu zneužívaných zraniteľností KEV zatiaľ nezaradila a európska databáza EUVD zneužitie zatiaľ neeviduje.
Prečo je to nebezpečné
Ide o chybu typu „neočakávaná návratová hodnota“ (CWE-394). Pri overovaní hesla sshd zahašuje zadané heslo a výsledok porovná s hodnotou v súbore /etc/shadow. Účty bez hesla tam majú namiesto hašu len znak *. Funkcia crypt() v knižnici musl pri príliš dlhom hesle zlyhá a ako signál chyby vráti práve *, takže sa výsledok zhoduje s uloženou hodnotou a server prihlásenie pustí.
Predstavte si vrátnika, ktorý porovnáva odtlačok kľúča so zoznamom. Pri ľuďoch, ktorí kľúč nemajú, je v zozname napísané „X“. Keď sa čítačka pokazí, tiež vypíše „X“, vrátnik vidí zhodu a otvorí. Podľa Alpine útočník potrebuje poznať meno účtu bez hesla a na stroji musí existovať aspoň jeden iný účet s nastaveným heslom.
Útok ide cez sieť, nevyžaduje žiadne prihlásenie ani spoluprácu používateľa. Útočník získa príkazový riadok pod napadnutým účtom. Ak sa ten účet vie stať rootom, napríklad cez doas, ide o prevzatie celého servera, z ktorého môže pokračovať ďalej do vašej siete.
- CVSS 8,1 z 10 (vysoká závažnosť): skóre pridelila organizácia MITRE. CVSS je štandardná stupnica závažnosti. Hodnotenie nie je maximálne najmä preto, že útok vyžaduje konkrétne podmienky v konfigurácii.
- CISA KEV: katalóg chýb, ktorých zneužívanie potvrdila americká agentúra CISA. Táto chyba v ňom zatiaľ nie je.
- EPSS 0,98 % (6. novembra 2026): odhad pravdepodobnosti, že chybu niekto zneužije v najbližších 30 dňoch. Je vyšší ako pri zhruba 62 % známych chýb. Pri čerstvo zverejnenej chybe sa tento odhad ešte rýchlo mení.
Koho sa to týka
Chyba sa týka OpenSSH starších ako 10.6p2 na Linuxe s knižnicou musl libc bez PAM. Podľa vývojárov OpenSSH sa netýka iných systémov ako Linux, linuxov s glibc ani systémov, kde heslá overuje PAM. Objaviteľ chyby potvrdzuje, že Debian, Ubuntu, Fedora, Dropbear a OpenBSD sú v bezpečí. Preveriť odporúča OpenWrt, Buildroot, Yocto a mnohé Docker obrazy.
Na Alpine Linuxe ste podľa Alpine zasiahnutí, ak platí všetko z tohto:
- beží balík
openssh-server(zostavený bez PAM), aleboopenssh-server-pamsUsePAM no, PasswordAuthenticationjeyes, čo je predvolené nastavenie,- existuje účet s
*namiesto hesla v/etc/shadow:root(od zhruba Alpine 3.16, chráni ho však predvolenéPermitRootLogin prohibit-password), používatelia len s kľúčom, používatelia z adresárovej služby cez musl-nscd či používateľalpinev obrazoch tiny-cloud, - aspoň jeden lokálny účet má haš hesla typu
$5$alebo$6$.
Alpine uvádza ako dotknuté vydania 3.21 až 3.24 a edge aj staršie 3.16 až 3.20. Cloudové obrazy tiny-cloud od 3.18.11 po 3.24.3 majú používateľa alpine s doas bez hesla, teda s cestou k rootovi. Zraniteľné sa stanú, keď na stroji pribudne akýkoľvek haš $6$.
Netýka sa to kontajnerov bez sshd, systémov s PasswordAuthentication no, openssh-server-pam s UsePAM yes, zamknutých účtov s ! v /etc/shadow ani obrazov nastavených cez cloud-init, ktorý heslá vypína.
Ako zistiť, či ste zasiahnutí
Všetky príkazy nižšie len čítajú údaje a nič nemenia. Spúšťajte ich ako root. Najprv zistite verziu Alpine a nainštalovaného balíka OpenSSH:
cat /etc/alpine-release
apk info -v 2>/dev/null | grep openssh
Verziu balíka porovnajte so zoznamom v časti o oprave. Potom overte, či sshd beží a ako je nastavený:
rc-service sshd status
sshd -T | grep -iE 'passwordauthentication|usepam|permitrootlogin'
Nakoniec zistite, ktoré účty nemajú heslo (*) a ktoré majú haš $5$ alebo $6$. Príkazy vypíšu len mená účtov:
grep -E '^[^:]+:\*:' /etc/shadow | cut -d: -f1
grep -E '^[^:]+:\$[56]\$' /etc/shadow | cut -d: -f1
Ak máte starší balík, sshd beží, prihlasovanie heslom je zapnuté a oba zoznamy obsahujú aspoň jeden účet, server je zraniteľný.
Ako to opraviť
Opravu prináša OpenSSH 10.6p2. Alpine vydal opravené balíky pre všetky vetvy od 3.16 po edge, teda aj pre staršie vydania bez bežnej podpory. Opravený balík obsahujú aj vydania Alpine 3.21.10, 3.22.8, 3.23.8 a 3.24.4. Opravené verzie balíka openssh podľa vetvy:
- edge: 10.6_p2-r0
- 3.24: 10.3_p1-r2
- 3.23: 10.2_p1-r1
- 3.22: 10.0_p1-r11
- 3.21: 9.9_p2-r1
- 3.20: 9.7_p1-r6
- 3.19: 9.6_p1-r3
- 3.18: 9.3_p2-r4
- 3.17: 9.1_p1-r7
- 3.16: 9.0_p1-r6
- 1. Začnite servermi, ktorých SSH port je dostupný z internetu.
- 2. Aktualizujte balíky a reštartujte
sshd(príkazy nižšie). Samotná aktualizácia bežiaci proces nevymení, starý program by prijímal spojenia ďalej. - 3. Overte verziu príkazmi z časti o kontrole.
- 4. Pri cloudových inštanciách z obrazov tiny-cloud starších ako 3.21.10, 3.22.8, 3.23.8 a 3.24.4 aktualizujte každú bežiacu inštanciu.
apk upgrade -U -a
rc-service sshd restart
Ak hneď aktualizovať nemôžete, Alpine aj vývojári OpenSSH odporúčajú aspoň nastaviť PasswordAuthentication no v konfigurácii sshd a reštartovať ho. Damien Miller z OpenSSH pripúšťa aj úplné vypnutie SSH na dotknutých strojoch. Pred zmenou si overte, že funguje prihlásenie kľúčom, a aktuálne spojenie nechajte otvorené, kým neotestujete nové. Konfiguráciu pred reštartom skontrolujte príkazom sshd -t. Ak heslá na SSH nepotrebujete, odporúčame ich nechať vypnuté aj po aktualizácii.
Čo ak už ste mohli byť napadnutí
Alpine odporúča hľadať v /var/log/messages riadky od sshd s textom Accepted password for pri účtoch, ktoré heslo nemajú, napríklad alpine, root alebo používatelia len s kľúčom. Takýto záznam je vážny signál prieniku. Príkazy nižšie prehľadajú aj staršie a skomprimované logy:
grep -h "Accepted password for" /var/log/messages /var/log/messages.[0-9] 2>/dev/null
for f in /var/log/messages*.gz; do [ -e "$f" ] && gunzip -c "$f" | grep "Accepted password for"; done
- Skontrolujte používanie
doasa nedávno vytvorených používateľov. - Hľadajte nové súbory a neznáme kľúče v súboroch
authorized_keys. - Podľa Previdianu útočník prichádzal z jedinej adresy v Japonsku, ktorú firma uviedla pre Help Net Security. Používal príliš dlhé heslá a v neinteraktívnych SSH reláciách spúšťal prieskumné príkazy
id,unameahostname. Všímajte si preto prihlásení z neznámych adries.
Ak prihlásenie nemôžete vylúčiť, Alpine odporúča považovať stroj za kompromitovaný. Odpojte ho zo siete, zálohujte logy a prizvite odborníka na riešenie incidentov ešte pred preinštalovaním. Nespúšťajte „ukážkové“ exploity z GitHubu: Previdian varuje, že nie sú overené a môžu obsahovať malvér.