Osegi
Bezpieczeństwo·2 min czytania

OpenSSH: hasło z 257 znaków otwierało zablokowane konta Linuksa

Błąd sprzed dekady, nazwany *sshole, pozwalał hasłem o długości 257–1024 znaków otworzyć zablokowane konta przez OpenSSH w systemach z musl. Łata jest w OpenSSH 10.6p2.

Terminal window showing an SSH login prompt on a Linux server with a very long password being typed.
Zdjęcie: Numerama

W systemach Linux opartych na bibliotece musl hasło dłuższe niż 256 znaków pozwalało obejść blokadę konta w OpenSSH. Od 2016 roku zablokowane konto dawało się otworzyć dowolnym hasłem liczącym od 257 do 1024 znaków. Poprawka jest dostępna w wydaniu OpenSSH 10.6p2, opublikowanym w czwartek 5 listopada.

Lukę, nazwaną „*sshole”, ujawnił na początku listopada Ozgun Kultekin, badacz z firmy Wakefield. Nazwa to gra słów łącząca SSH z angielskim „hole”, a gwiazdka znajduje się w samym centrum błędu. Badacz twierdzi, że skompilował OpenSSH na dwanaście sposobów i poddał każdą wersję około 17 600 nietypowych prób logowania generowanych przez agentów AI. Tylko jedna konfiguracja zachowywała się inaczej.

Gwiazdka jako blokada i komunikat o błędzie

Serwer nie porównuje hasła wprost. Przepuszcza je przez funkcję matematyczną, a wynik zestawia z zapisanym. Konta, które nie mogą przyjmować haseł, mają od 1980 roku w konwencji Uniksa zapisaną gwiazdkę (*), której żadne obliczenie nie wytworzy.

W 2012 roku musl zmieniła zachowanie: gdy funkcja obliczeniowa zawodzi, również zwraca gwiazdkę, a zawodzi przy hasłach dłuższych niż 256 znaków. W 2016 roku OpenSSH, chcąc ukryć różnice czasowe zdradzające istnienie kont, zaczął wykonywać obliczenia także dla kont zablokowanych. Dla zablokowanego konta wynik – gwiazdka – zgadzał się z zapisaną gwiazdką, więc logowanie przechodziło. OpenSSH odrzuca hasła dłuższe niż 1024 znaki.

Kogo dotyczy problem

Trzeba spełnić kilka warunków: system oparty na musl (np. Alpine Linux, popularny w kontenerach Docker, a także OpenWrt, Buildroot i Yocto), brak PAM, włączone logowanie hasłem – domyślne w OpenSSH – oraz konto zablokowane gwiazdką obok konta z prawdziwym hasłem. W Alpine od wersji 3.16 z 2022 roku tak zablokowane jest konto root. W oficjalnych obrazach Alpine dla AWS i Azure domyślne konto może dodatkowo zostać administratorem bez hasła.

Debian, Ubuntu, Fedora i systemy korzystające z PAM nie są zagrożone. Badacz nie zna przypadków aktywnego wykorzystania luki. Administratorzy powinni zainstalować OpenSSH 10.6p2 lub, jeśli to niemożliwe, wyłączyć logowanie hasłem.

Aplikacje warte uwagi

SUMO: łamigłówka liczbowa

Wybierz właściwe pola, dodaj je i trafiaj w cel. Łatwa do nauczenia, trudna do opanowania. Za darmo, dla każdego wieku.

Tagi:opensshlinuxmuslalpine linuxvulnerabilitysshole

Więcej z tego dnia

Zobacz wszystkie →

Więcej w kategorii: Bezpieczeństwo

Zobacz wszystkie →