5 listopada 2026 roku projekt OpenSSH wydał Portable OpenSSH 10.6p2, awaryjną poprawkę dla CVE-2026-123158, nazwaną sshole przez badacza, który ją odkrył.
Na podatnych systemach wystarczająco długie hasło uwierzytelnia konto, które w ogóle nie ma hasła. Zakres jest wąski: Linux zbudowany na bibliotece musl z wyłączonym PAM, co w praktyce oznacza Alpine i to, co na nim zbudowano.
Dwie rzeczy sprawiają, że to więcej niż notka o poprawce. Luka odwraca założenie, na którym administratorzy opierają się codziennie, a sposób, w jaki OpenSSH to rozegrał, jest publicznym zerwaniem z tym, jak branża od dwudziestu lat zarządza ujawnianiem podatności.
Czy Cię to dotyczy?
Uruchom jako root na każdym hoście:
sshd -T | grep -i -E 'passwordauthentication|usepam'Jeśli logowanie hasłem jest wyłączone albo PAM włączony, problem Cię nie dotyczy. Możesz przestać czytać.
W pozostałych przypadkach muszą zajść wszystkie cztery warunki naraz:
Warunek | Szczegół |
|---|---|
libc | musl, nie glibc |
PAM | wyłączony |
Logowanie hasłem | włączone, czyli ustawienie domyślne OpenSSH |
Konta | jedno z |
Debian, Ubuntu, Fedora i wszystko, co używa PAM, są poza zakresem, podobnie jak systemy spoza Linuksa i serwer Dropbear. Ryzyko siedzi w Alpine Linux oraz kontenerach, routerach i urządzeniach wbudowanych na nim zbudowanych, a także w systemach Buildroot i Yocto.
Pakiet openssh-server w Alpine budowany jest bez PAM, a logowanie hasłem jest domyślnie włączone, i dlatego to ta dystrybucja jest głównym przypadkiem.
Napraw to
Zaktualizuj. OpenSSH 10.6p2 albo pakiet dla Twojej gałęzi Alpine:
edge10.6_p2-r0,3.2410.3_p1-r2,3.2310.2_p1-r1,3.2210.0_p1-r11.Zrestartuj sshd. W Alpine:
rc-service sshd restart. Sama aktualizacja pakietu zostawia działający proces na starym kodzie.Przebuduj obrazy kontenerów, zamiast łatać działające kontenery, bo inaczej poprawka zniknie przy kolejnym wdrożeniu.
Jeśli nie możesz teraz aktualizować, ustaw
PasswordAuthentication noi zrestartuj usługę. To bezpośrednie zalecenie opiekuna OpenSSH Damiena Millera: „ustaw PasswordAuthentication=no albo wyłącz SSH na tych systemach NATYCHMIAST".
Wydania Alpine starsze niż 3.16 nie dostaną poprawionego pakietu. Jeśli sshd jest tam wystawiony, jedyną drogą jest migracja.
Na 5 listopada nie zgłoszono żadnych ataków, a luka nie figurowała w katalogu znanych wykorzystywanych podatności CISA.
Na czym polega błąd
Zagrożone są konta z pojedynczą gwiazdką w polu hasła, co oznacza, że hasła nigdy nie ustawiono. Zwykle rezerwuje się je do logowania wyłącznie kluczem, więc administrator zakłada, że logowanie hasłem jest niemożliwe.
Zderzają się tu dwa rozsądne zachowania.
Gdy sshd działa bez PAM, sam sprawdza hasła. Dla konta z gwiazdką pożycza sól od innego konta, żeby nieudane logowanie trwało tyle samo co prawdziwe. Dodano to w 2016 roku, by napastnicy nie rozpoznawali istniejących nazw użytkowników po czasie odpowiedzi.
Niezależnie od tego funkcja crypt() w musl odrzuca hasła dłuższe niż 256 bajtów i zwraca gwiazdkę jako znacznik błędu.
Próba logowania hasłem o 257 znakach sprawia więc, że musl zwraca gwiazdkę. sshd porównuje ją z zapisanym polem, w którym też jest gwiazdka. Wartości się zgadzają. Dopasowanie powstaje z samej długości. Hasło nie musi niczego przypominać.
Działa dowolny ciąg od 257 do 1024 znaków, za każdym razem, przy jednym połączeniu. Ocena CVSS 8,1. Badacz Özgün Kültekin z firmy Wakefield znalazł błąd, wykonując około 17 600 nietypowych logowań przeciwko dwunastu kompilacjom sshd, przy użyciu agentów AI.
Poprawka sprawia, że sshd odrzuca dopasowanie, gdy zapisane pole jest krótsze niż cztery znaki. OpenSSH opisuje to jako obejście przyczyny leżącej poza sshd.
Szersza sprawa: OpenSSH przestaje czekać
Poprawkę bezpieczeństwa zwykle wstrzymuje się na kilka tygodni. Projekt po cichu informuje dystrybucje Linuksa, one przygotowują własne pakiety i wszyscy publikują tego samego dnia. Ta praktyka nazywa się embargiem i istnieje po to, żeby użytkownicy nie zostali bez ochrony, gdy dystrybucje dopiero nadrabiają.
OpenSSH dowiedział się o tej luce w środę, a wydał poprawkę w czwartek. Miller wyjaśnił dlaczego: projekt zaobserwował ostatnio wiele przypadków szybkiego ponownego odkrywania błędów przez agentów AI, czasem w ciągu godzin, i uznaje dziś „długie okresy embarga za praktykę niebezpieczną, służącą przede wszystkim napastnikom".
Logika jest prosta, gdy się ją nazwie. Embargo chroni użytkowników tylko dopóki tajemnica się trzyma. Jeśli zautomatyzowany system potrafi odtworzyć błąd z commita, poprawki albo wzmianki na liście dyskusyjnej w ciągu godzin, tajemnica się nie trzyma, a opóźnienie chroni już tylko tego, kto szybciej zareaguje na poszlakę.
Jest w tym zgrabna symetria: agenci AI znaleźli ten błąd i agenci AI są powodem, dla którego na nim nie siedziano.
Dwa zastrzeżenia. Miller powołuje się na zaobserwowane przypadki, nie opisując ich, więc to osąd doświadczonego opiekuna projektu, a nie opublikowany materiał dowodowy. Krótsze embarga mają też realny koszt, i dlatego starsze gałęzie Alpine oraz opiekunowie obrazów spędzili ten tydzień na nadrabianiu.
Tę samą presję widzieliśmy trzy tygodnie temu przy PHP2Shell, gdzie embargo pękło przed czasem, a eksploatacja zaczęła się przed publicznym ujawnieniem. Jeśli ocena OpenSSH się utrzyma, model rządzący obsługą podatności od dwudziestu lat zmienia kształt, a nikt jeszcze nie ustalił, czy sprzyja to obrońcom, czy napastnikom.
Część warta zachowania
Pole hasła z gwiazdką oznacza brak hasła, a brak hasła powinien oznaczać brak logowania hasłem. Na systemach musl bez PAM oznaczał dowolne hasło powyżej 256 znaków. Błąd mieszkał w szczelinie między dwoma komponentami, z których każdy zachowywał się sensownie na własnych warunkach, a żaden z projektów nie rozważył ich połączenia.
Każdy, kto lata temu wyłączył logowanie hasłem po SSH, zgodnie z zaleceniami powtarzanymi od dekady, nigdy nie był na to narażony. Mechanizm, który nic nie kosztuje, zamienił krytyczne obejście uwierzytelniania w niezdarzenie.
To jest warte więcej niż sama poprawka. Poprawka usuwa ten błąd. Logowanie wyłącznie kluczem usuwa także następny.