Gorące
Cyberbezpieczeństwo

Luka w SSH otwiera Linuksa długim hasłem. Atak trwa, łatki już są

Hasło dłuższe niż 256 dowolnych znaków daje w części systemów z Linuksem dostęp do konta root. Cztery dni po ujawnieniu błędu SSHhole firmy bezpieczeństwa widzą pierwsze udane włamania.

Piotr Olszewski

· 5 min czytania

Wielka pluszowa maskotka Tux, pingwin Linuksa, na konferencji Linux Day 2022 w Mediolanie
Fot. User:Kowalski7cc / Wikimedia Commons, CC0

Żeby zdobyć uprawnienia administratora na podatnym urządzeniu z Linuksem, nie trzeba znać hasła ani mieć klucza. Wystarczy wpisać w okienko logowania SSH dowolny ciąg dłuższy niż 256 znaków, choćby 257 razy literę „a”. W podatnej konfiguracji system uzna go za poprawne hasło do konta, które hasła w ogóle nie ma. A takim kontem może być root, czyli pełna władza nad maszyną.

Błąd, nazwany SSHhole, odkrył Ozgun Kultekin, badacz bezpieczeństwa z Wakefield. Publicznie znany jest od czwartku 5 listopada, a już w poniedziałek 9 listopada kilka firm bezpieczeństwa potwierdziło, że luka jest wykorzystywana w prawdziwych atakach. Ostrzega przed nią także amerykańska agencja CISA. Przewidywania, że skończy się na masowych włamaniach, sprawdzają się szybciej, niż zakładali nawet pesymiści. Najbardziej niepokoi jednak co innego: SSHhole nie jest błędem w jednym programie. Powstał na styku dwóch, z których każdy działa poprawnie według własnej logiki, a razem zostawiają otwarte drzwi przez dekadę.

Gwiazdka, która znaczy dwie rzeczy

SSH to protokół, którym administratorzy zdalnie logują się do serwerów i urządzeń sieciowych, a jego najpopularniejszą implementacją jest OpenSSH. W ścisłym sensie OpenSSH nie zawiera tu błędu. Kłopot bierze się z tego, jak rozmawia z innym oprogramowaniem.

Linux przechowuje skróty haseł w pliku /etc/shadow. Skrót działa jak matematyczny odcisk palca: system nie trzyma samego hasła, tylko jego przetworzoną postać, i przy logowaniu porównuje odciski. Jeśli w polu hasła stoi gwiazdka „*”, konto nie ma hasła, a do logowania służą na przykład klucze kryptograficzne. Tak standardowo ustawia się niektóre rodzaje kont.

Drugim uczestnikiem tej rozmowy jest musl, lekka alternatywa dla powszechnie używanej standardowej biblioteki języka C. Kiedy jej funkcja dostaje do zaszyfrowania hasło dłuższe niż 256 znaków, zgłasza błąd i zwraca właśnie gwiazdkę. OpenSSH porównuje ją z gwiazdką zapisaną w /etc/shadow, stwierdza zgodność i wpuszcza użytkownika. Red Hat opisał to jako „błędną interpretację tego, czy ciąg znaków ma być skrótem hasła”. Jeden znak oznacza więc jednocześnie „to konto nie przyjmuje haseł” i „coś poszło nie tak”, a program po drugiej stronie nie potrafi tych znaczeń odróżnić.

Ciąg nie może być dowolnie długi, bo podatne systemy akceptują hasła od 257 do 1024 znaków. Lukę oceniono na 8,1 w dziesięciostopniowej skali powagi.

Egzotyczne nazwy, ogromna skala

Atak nie działa na każdym Linuksie, bo musi zajść kilka warunków jednocześnie. OpenSSH musi współpracować z biblioteką musl i nie może korzystać z PAM, czyli modułów, które w wielu dystrybucjach obsługują uwierzytelnianie i sprawdzanie dostępu do kont. Na maszynie musi też istnieć co najmniej jedno konto z hasłem zaszyfrowanym funkcją SHA256 lub SHA512 oraz konto bez hasła, oznaczone gwiazdką. Ubuntu na laptopie czy serwer z Red Hatem korzystają z klasycznej biblioteki C, więc są bezpieczne.

Tyle że te warunki spełnia mnóstwo sprzętu, często w domyślnej konfiguracji. Musl jest standardem m.in. w Alpine Linux i OpenWrt. Nazwy brzmią egzotycznie, ale Alpine należy do najczęściej wybieranych systemów do kontenerów w chmurze, czyli lekkich, odizolowanych środowisk, w których firmy uruchamiają swoje aplikacje. OpenWrt to z kolei otwarte oprogramowanie do domowych i firmowych routerów, które instalują hobbyści i które przejęli również duzi producenci sprzętu. Na musl opierają się także narzędzia do budowania systemów dla urządzeń wbudowanych, od sprzętu sieciowego po elektronikę przemysłową.

Podatne są wszystkie wersje OpenSSH dla musl wydane w ostatniej dekadzie. Patrick Gray i zespół newslettera Risky Bulletin, którzy nazwali sprawę „głupim błędem”, zwracają uwagę na skalę: „te nazwy brzmią jak projekty bez znaczenia, ale ekspozycja jest absolutnie poza skalą”.

Atakującym sprzyja jeszcze prostota. W internecie dostępne są miliony serwerów SSH, a sprawdzenie, czy któryś da się otworzyć długim hasłem, zajmuje sekundy. Nie trzeba niczego łamać ani zgadywać, wystarczy wysyłać ten sam ciąg pod kolejne adresy i patrzeć, które drzwi ustąpią.

Pułapki złapały intruzów

Najpełniejszy obraz ataków dała firma Greynoise, która utrzymuje w Azji Południowo-Wschodniej honeypoty, czyli celowo wystawione na atak maszyny-pułapki do obserwowania włamań na żywo. W poniedziałek poinformowała, że grupa oznaczona jako GT10 przeprowadziła w jej pułapkach „dojrzałe włamania”. Greynoise dotarło potem do serwera grupy, a na nim do listy potencjalnych kolejnych ofiar i części narzędzi z kampanii.

Głównym z nich jest tylna furtka nazwana TAC Agent. Pozwala wykonywać polecenia na przejętej maszynie, rozpoznawać system i pozostawać w nim także po restarcie. Napisano ją w Pythonie, więc tam, gdzie Pythona brakuje, GT10 sama go instaluje. Kod zawiera komentarze po chińsku i według oceny Greynoise najpewniej wygenerowała go sztuczna inteligencja.

GT10 nie działa w pojedynkę. Firma watchTowr już w piątek, dzień po ujawnieniu luki, widziała próby jej wykorzystania związane z botnetami, czyli sieciami zdalnie sterowanych przejętych urządzeń, oraz z kryptowalutami. Przejęty router albo kontener może zatem kopać waluty albo atakować następne cele. Firma Previdian zarejestrowała w swoich czujnikach 20 prób ataku z 13 adresów IP w dziewięciu krajach. To jeszcze nie fala, a jednak kilka niezależnych grup sięgnęło po nową lukę w ciągu zaledwie kilku dni.

Łatka jest, routery poczekają

Twórcy OpenSSH wydali poprawkę w czwartek, dzień po tym, jak dowiedzieli się o problemie. Choć uznali, że źródło błędu leży poza ich kodem, zabezpieczyli program tak, żeby atak przestał działać. Aktualizacje bezpieczeństwa opublikował też Alpine Linux.

Użytkownicy OpenSSH powinni więc zainstalować aktualizację natychmiast, a ci, którzy mają w infrastrukturze musl (w kontenerach z Alpine można go mieć, nawet o tym nie wiedząc), muszą też sprawdzić konfigurację SSH i konta bez haseł. Programistka Xe Iaso ujęła to dzień po ujawnieniu luki krótko: „Jeśli używasz musl, rzuć wszystko i łataj natychmiast. To naprawdę jest groźne”.

Serwery w chmurze administratorzy załatają w ciągu dni. Gorzej z routerami i sprzętem internetu rzeczy, który latami działa z fabrycznym oprogramowaniem, bo nikt go nie aktualizuje albo producent dawno przestał wydawać poprawki. Risky Bulletin przewiduje, że część tych urządzeń dostanie łatkę za kolejną dekadę, o ile w ogóle. Do tego czasu wystarczy, że ktoś wyśle im 257 znaków.

Wpis z pasa „W ruchu”, 11 listopada 2026. Na zdjęciu: Wielka pluszowa maskotka Tux, pingwin Linuksa, na konferencji Linux Day 2022 w Mediolanie.

Źródła (5)
Następny tekstApple stawia granicę 18 lat. Romantyczni towarzysze AI dostaną kategorię dla dorosłychOd 16 listopada twórcy aplikacji muszą zadeklarować, czy ich program oferuje randki albo wirtualnego towarzysza do rozmów romantycznych lub erotycznych. Taka aplikacja dostanie w App Store minimalną kategorię 18+. Najwięcej zmieni to w aplikacjach z towarzyszami AI.

Z Promptowego - blog o AI tego samego autora