Co se stalo
Vývojáři OpenSSH vydali 5. listopadu 2026 urgentní bezpečnostní verzi OpenSSH 10.6p2. Řeší chybu CVE-2026-123158, které její objevitel Özgün Kültekin z firmy Wakefield dal přezdívku „sshole“. Týká se SSH serveru sshd na Linuxu, který používá knihovnu musl libc a hesla neověřuje přes PAM. Nejznámějším takovým systémem je Alpine Linux, který týž den vydal vlastní bezpečnostní upozornění a opravené balíčky.
Podle Alpine Linuxu se útočník, který se dostane k vašemu SSH portu, může za určitých podmínek přihlásit bez znalosti hesla. Stačí mu jedno připojení a podle Alpine to funguje pokaždé. Vývojář OpenSSH Damien Miller označil chybu za kritickou a správcům dotčených systémů doporučil okamžitě vypnout přihlašování heslem, případně SSH úplně.
Firma Previdian, která sleduje hrozby, podle Help Net Security zachytila první pokus o zneužití necelých devět hodin po zveřejnění chyby a na svém návnadovém serveru (honeypotu) potvrdila úspěšné získání přístupu s právy root. Zatím napočítala osm pokusů z jediné adresy. Americká agentura CISA chybu do katalogu zneužívaných zranitelností KEV zatím nezařadila a evropská databáze EUVD zneužití zatím neeviduje.
Proč je to nebezpečné
Jde o chybu typu „neočekávaná návratová hodnota“ (CWE-394). Při ověřování hesla sshd zahašuje zadané heslo a výsledek porovná s hodnotou v souboru /etc/shadow. Účty bez hesla tam mají místo hashe jen znak *. Funkce crypt() v knihovně musl při příliš dlouhém heslu selže a jako signál chyby vrátí právě *, takže se výsledek shoduje s uloženou hodnotou a server přihlášení pustí.
Představte si vrátného, který porovnává otisk klíče se seznamem. U lidí, kteří klíč nemají, je v seznamu napsáno „X“. Když se čtečka porouchá, vypíše také „X“, vrátný vidí shodu a otevře. Podle Alpine útočník potřebuje znát jméno účtu bez hesla a na stroji musí existovat alespoň jeden jiný účet s nastaveným heslem.
Útok probíhá přes síť, nevyžaduje žádné přihlášení ani spolupráci uživatele. Útočník získá příkazový řádek pod napadeným účtem. Pokud se tento účet umí stát rootem, například přes doas, jde o převzetí celého serveru, ze kterého může pokračovat dál do vaší sítě.
- CVSS 8,1 z 10 (vysoká závažnost): skóre přidělila organizace MITRE. CVSS je standardní stupnice závažnosti. Hodnocení není maximální hlavně proto, že útok vyžaduje konkrétní podmínky v konfiguraci.
- CISA KEV: katalog chyb, jejichž zneužívání potvrdila americká agentura CISA. Tato chyba v něm zatím není.
- EPSS 0,98 % (6. listopadu 2026): odhad pravděpodobnosti, že chybu někdo zneužije během příštích 30 dnů. Je vyšší než u zhruba 62 % známých chyb. U čerstvě zveřejněné chyby se tento odhad ještě rychle mění.
Koho se to týká
Chyba se týká OpenSSH starších než 10.6p2 na Linuxu s knihovnou musl libc bez PAM. Podle vývojářů OpenSSH se netýká jiných systémů než Linuxu, linuxů s glibc ani systémů, kde hesla ověřuje PAM. Objevitel chyby potvrzuje, že Debian, Ubuntu, Fedora, Dropbear a OpenBSD jsou v bezpečí. Prověřit doporučuje OpenWrt, Buildroot, Yocto a mnoho Docker obrazů.
Na Alpine Linuxu jste podle Alpine zasaženi, pokud platí vše z následujícího:
- běží balíček
openssh-server(sestavený bez PAM), neboopenssh-server-pamsUsePAM no, PasswordAuthenticationjeyes, což je výchozí nastavení,- existuje účet s
*místo hesla v/etc/shadow:root(zhruba od Alpine 3.16, chrání ho ale výchozíPermitRootLogin prohibit-password), uživatelé jen s klíčem, uživatelé z adresářové služby přes musl-nscd či uživatelalpinev obrazech tiny-cloud, - alespoň jeden lokální účet má hash hesla typu
$5$nebo$6$.
Alpine uvádí jako dotčená vydání 3.21 až 3.24 a edge i starší 3.16 až 3.20. Cloudové obrazy tiny-cloud od 3.18.11 po 3.24.3 mají uživatele alpine s doas bez hesla, tedy s cestou k rootovi. Zranitelné se stanou, jakmile na stroji přibude jakýkoli hash $6$.
Netýká se to kontejnerů bez sshd, systémů s PasswordAuthentication no, openssh-server-pam s UsePAM yes, zamčených účtů s ! v /etc/shadow ani obrazů nastavených přes cloud-init, který hesla vypíná.
Jak zjistit, zda jste zasaženi
Všechny příkazy níže pouze čtou data a nic nemění. Spouštějte je jako root. Nejprve zjistěte verzi Alpine a nainstalovaného balíčku OpenSSH:
cat /etc/alpine-release
apk info -v 2>/dev/null | grep openssh
Verzi balíčku porovnejte se seznamem v části o opravě. Pak ověřte, zda sshd běží a jak je nastavený:
rc-service sshd status
sshd -T | grep -iE 'passwordauthentication|usepam|permitrootlogin'
Nakonec zjistěte, které účty nemají heslo (*) a které mají hash $5$ nebo $6$. Příkazy vypíší jen jména účtů:
grep -E '^[^:]+:\*:' /etc/shadow | cut -d: -f1
grep -E '^[^:]+:\$[56]\$' /etc/shadow | cut -d: -f1
Pokud máte starší balíček, sshd běží, přihlašování heslem je zapnuté a oba seznamy obsahují alespoň jeden účet, je server zranitelný.
Jak to opravit
Opravu přináší OpenSSH 10.6p2. Alpine vydal opravené balíčky pro všechny větve od 3.16 po edge, tedy i pro starší vydání bez běžné podpory. Opravený balíček obsahují i vydání Alpine 3.21.10, 3.22.8, 3.23.8 a 3.24.4. Opravené verze balíčku openssh podle větve:
- 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čněte servery, jejichž SSH port je dostupný z internetu.
- 2. Aktualizujte balíčky a restartujte
sshd(příkazy níže). Samotná aktualizace běžící proces nevymění, starý program by přijímal spojení dál. - 3. Ověřte verzi příkazy z části o kontrole.
- 4. U cloudových instancí z obrazů tiny-cloud starších než 3.21.10, 3.22.8, 3.23.8 a 3.24.4 aktualizujte každou běžící instanci.
apk upgrade -U -a
rc-service sshd restart
Pokud nemůžete aktualizovat hned, Alpine i vývojáři OpenSSH doporučují alespoň nastavit PasswordAuthentication no v konfiguraci sshd a restartovat ho. Damien Miller z OpenSSH zmiňuje i možnost SSH na dotčených strojích úplně vypnout. Před změnou si ověřte, že funguje přihlášení klíčem, a stávající spojení nechte otevřené, dokud nové neotestujete. Konfiguraci před restartem zkontrolujte příkazem sshd -t. Pokud hesla na SSH nepotřebujete, doporučujeme je nechat vypnutá i po aktualizaci.
Co když už jste mohli být napadeni
Alpine doporučuje hledat v /var/log/messages řádky od sshd s textem Accepted password for u účtů, které heslo nemají, například alpine, root nebo uživatelé jen s klíčem. Takový záznam je vážný signál průniku. Příkazy níže prohledají i starší a komprimované 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
- Zkontrolujte používání
doasa nedávno vytvořené uživatele. - Hledejte nové soubory a neznámé klíče v souborech
authorized_keys. - Podle Previdianu útočník přicházel z jediné adresy v Japonsku, kterou firma uvedla pro Help Net Security. Používal příliš dlouhá hesla a v neinteraktivních SSH relacích spouštěl průzkumné příkazy
id,unameahostname. Všímejte si proto přihlášení z neznámých adres.
Pokud přihlášení nemůžete vyloučit, Alpine doporučuje považovat stroj za kompromitovaný. Odpojte ho ze sítě, zazálohujte logy a přizvěte odborníka na řešení incidentů ještě před přeinstalací. Nespouštějte „ukázkové“ exploity z GitHubu: Previdian varuje, že nejsou ověřené a mohou obsahovat malware.