Błąd w ważnej bibliotece: tysiące serwerów pozwalają na nieautoryzowane logowanie
W biblitece odpowiedzialnej za obsługę protokołu SSH znaleziona została poważna luka. Sprawa jest o tyle groźna, że protokół jest powszechnie używany do zdalnego logowania się na różne maszyny, od domowego Raspberry Pi po serwery produkcyjne w międzynarodowych firmach. Luka w libssh naraża kilka tysięcy serwerów na zdalne przejęcie.
17.10.2018 | aktual.: 17.04.2019 12:14
Luka pozwala atakującemu obejść procedurę autoryzacji i zalogować się zdalnie na serwer przez SSH (Secure Shell) bez podawania hasła. Można to zrobić dość łatwo, wysyłając do serwera SSH komunikat SSH2_MSG_USERAUTH_SUCCESS zamiast SSH2_MSG_USERAUTH_REQUEST, na którą oczekuje libssh podczas rozpoczynania procesu autoryzacji. Z powodu tego błędu, biblioteka uzna, że autoryzacja jest już za nami i przebiegła pomyślnie, a następnie da dostęp do zdalnego serwera atakującym.
Obecność tej luki wynika zapewne z pomyłki programistów, którzy tworzą bibliotekę. Trzeba bowiem zaznaczyć, że komunikat SSH2_MSG_USERAUTH_SUCCESS jest wysyłany przez serwer do klienta, by potwierdzić prawidłową autoryzację. Po stronie serwera w ogóle nie powinien być interpretowany, nawet jeśli zostanie wysłany od strony klienta. Jeśli chodzi o marną jakość kodu, na pewno padł tu jakiś rekord.
Luka, którą odkrył Peter Winter-Smith z NCC Group, została oznaczona jako CVE-2018-10933 i została wprowadzona w bibliotece libssh 0.6.0, wydanej w styczniu 2014 roku. Wersje 0.8.4 i 0.7.6 biblioteki są wolne od tego błędu, więc jeśli wasze serwery korzystają z libssh, koniecznie ją zaktualizujcie. Lada chwila mogą pojawić się gotowe exploity.
Luka, choć kuriozalna, prawdopodobnie nie niesie za sobą wielkoskalowych konsekwencji w realnym życiu. Większość urządzeń podłączonych do internetu, jeśli korzysta z serwera SSH, bazuje na konkurencyjnej bibliotece openssh. Zdaniem badaczy z Cybereason, wadliwa biblioteka jeszcze kilka godzin temu była obecna na przynajmniej 3 tys. serwerów – to bardzo dużo, ale nie w skali globalnej. Nie oznacza to też, że wszystkie są podatne na ten atak. Ponadto podatność dotyczy jedynie biblioteki używanej po stronie serwera. Klienty SSH i różne aplikacje używające libssh do logowania nie stanowią zagrożenia.
Jednym z największych użytkowników libssh jest GitHub, gdzie SSH jest dodatkową metodą logowania dla klientów korporacyjnych. Na szczęście administratorzy zadbali o zabezpieczenie repozytoriów – używają własnej wersji biblioteki, która nie polega na wspomnianym wyżej komunikacie przy autoryzacji kluczem publicznym. Firmy przechowujące tam kod, często wart miliony dolarów, mogą być spokojne, gdyż GitHub nigdy nie był podatny na ten atak. Oczywiście na wszelki wypadek GitHub wdrożył już najnowsze łatki.