CVE-2026-102821
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 20 - wyżej niż 20% wszystkich znanych CVE
Streszczenie
Russh to biblioteka klienta i serwera SSH w języku Rust. Przed wersją 0.63.2 uwierzytelniony zdalny peer może wysłać SSH_MSG_KEXINIT bez wymaganego SSH_MSG_KEX_ECDH_INIT, a następnie zalać serwer komunikatami SSH_MSG_CHANNEL_OPEN, podczas gdy SessionKexState::InProgress uniemożliwia opróżnienie priority_receiver w russh/src/server/session.rs. Serwer kontynuuje przetwarzanie danych wejściowych z sieci i umieszcza odpowiedź ChannelOpenReply dla każdego żądania w nieograniczonej kolejce, co pozwala jednej sesji na zwiększanie pamięci aż do zakończenia procesu. Problem został naprawiony w wersji 0.63.2.
Ocena ryzyka
Uwierzytelniony atakujący może spowodować wyczerpanie pamięci serwera SSH, prowadząc do odmowy usługi (DoS).
Rekomendacja
Zaktualizuj bibliotekę russh do wersji 0.63.2 lub nowszej.
Inne podatności w Russh
Zobacz wszystkie- CVE-2026-102822Niskie
Russh to biblioteka klienta i serwera SSH w języku Rust. W wersjach przed 0.63.1 połączenie skonfigurowane do zezwalania na mac=none może wynegocjować ten tryb z szyfrem blokowym CTR lub CBC wymagającym MAC, ponieważ logika wyboru sprawdza needs_mac() tylko wtedy, gdy wybór MAC zawiedzie. Zdalny peer może następnie wysłać pakiet o odszyfrowanej długości zero, powodując w russh/src/cipher/mod.rs zmniejszenie wcześniej odczytanego bloku przed indeksowaniem buffer.buffer[16..], co prowadzi do paniki i zakończenia zadania połączenia.
- CVE-2026-42189Wysokie
W bibliotece russh, będącej klientem i serwerem SSH w języku Rust, przed wersją 0.60.1 występuje podatność na odmowę usługi w obsłudze uwierzytelniania interaktywnego z użyciem klawiatury. Złośliwy klient może spowodować awarię serwera russh, który implementuje to uwierzytelnianie, wysyłając jeden źle sformatowany pakiet.
- CVE-2026-102825Niskie
Russh to biblioteka klienta i serwera SSH w języku Rust. W wersjach przed 0.62.6 ścieżka USERAUTH_REQUEST osiągana z server::run_stream w russh/src/server/encrypted.rs zwiększa licznik self.common.auth_attempts, ale nigdy nie porównuje go z server::Config.max_auth_attempts. Nieuwierzytelniony zdalny klient może kontynuować wysyłanie żądań uwierzytelnienia na jednym połączeniu ponad skonfigurowany limit, omijając politykę ograniczania prób i zwiększając szansę na zgadywanie online oraz obciążenie backendu uwierzytelniania.
- CVE-2026-102824Średnie
Russh to biblioteka klienta i serwera SSH w języku Rust. Przed wersją 0.63.0 implementacja hybrydowego ML-KEM 768 i X25519 w russh/src/kex/hybrid_mlkem.rs akceptuje 32-bajtowy klucz publiczny X25519 równy zeru od peera, zarówno w server_dh, jak i compute_shared_secret, wymuszając zerowy wkład X25519 do połączonego wspólnego sekretu. Złośliwy peer SSH może sprawić, że połączony sekret będzie zależał tylko od ML-KEM, co niweczy zamierzoną ochronę awaryjną hybrydowej wymiany, jeśli ML-KEM zostanie później osłabiony. Problem został naprawiony w wersji 0.63.0.
- CVE-2026-102823Wysokie
Biblioteka Russh przed wersją 0.63.1 w funkcji client_read_authenticated przekazuje zdarzenia kanału (CHANNEL_DATA, CHANNEL_EXTENDED_DATA, CHANNEL_EOF, CHANNEL_CLOSE, CHANNEL_OPEN_FAILURE, CHANNEL_SUCCESS, CHANNEL_FAILURE oraz podtypy CHANNEL_REQUEST: exit-status, exit-signal, xon-xoff) do publicznych callbacków bez potwierdzenia, że ChannelId należy do kanału otwartego przez klienta. Złośliwy serwer SSH może wysyłać zdarzenia cyklu życia dla przewidzianych, nieotwartych lub zwolnionych identyfikatorów kanałów, powodując paniki aplikacji lub uszkodzenie śledzenia zakończenia poleceń i kodów wyjścia.
- CVE-2026-73489Średnie
Russh przed wersją 0.62.4 ma podatność na odmowę usługi. Uwierzytelniony klient SSH może wysłać żądanie kanału pty-req z więcej niż 130 rekordami trybu terminala. Parser w russh/src/server/encrypted.rs przechowuje tryby w stałej tablicy 130-elementowej, ale kontynuuje zwiększanie licznika, co prowadzi do wyjścia poza zakres i paniki przed uruchomieniem handlera pty_request.
- CVE-2026-73430Średnie
Russh to biblioteka SSH klienta i serwera w języku Rust. Przed wersją 0.62.4 nieuwierzytelniony klient SSH może spowodować odmowę usługi, wysyłając SSH_MSG_KEX_ECDH_INIT z 32-bajtową wartością Q_C składającą się z samych zer. Funkcja Curve25519Kex::server_dh w russh/src/kex/curve25519.rs akceptuje zerową wartość publiczną peer i oblicza zerowy wspólny sekret, po czym compute_exchange_hash wywołuje encode_mpint w russh/src/kex/mod.rs i indeksuje poza koniec danych wejściowych podczas pomijania wiodących zer. Panika występuje przed uwierzytelnieniem i kończy zadanie wymiany kluczy serwera. Problem naprawiono w wersji 0.62.4.
- CVE-2026-73429Średnie
Russh to biblioteka SSH klienta i serwera w języku Rust. Przed wersją 0.62.4 złośliwy serwer SSH może spowodować awarię sesji klienta russh za pomocą nieprawidłowej odpowiedzi KEX_ECDH_REPLY zawierającej wartość efemeryczną serwera, która nie ma 32 bajtów. Funkcja Curve25519Kex::compute_shared_secret po stronie klienta w russh/src/kex/curve25519.rs przekazuje zdekodowaną wartość exchange.server_ephemeral do clone_from_slice bez walidacji jej długości, co powoduje deterministyczną panikę przed weryfikacją klucza hosta serwera. Panika kończy zadanie sesji klienta i objawia się jako JoinError, podczas gdy proces osadzający zwykle pozostaje uruchomiony. Problem naprawiono w wersji 0.62.4.
- CVE-2026-68930Średnie
Biblioteka Russh w wersji przed 0.62.5 umożliwia wywoływanie callbacków Handlera dla identyfikatorów kanałów, które nigdy nie zostały otwarte lub potwierdzone. Problem został naprawiony w wersji 0.62.5.
- CVE-2026-48110Wysokie
Podatność w bibliotece Russh (Rust SSH client & server) od wersji 0.34.0 do przed 0.61.0. Zdalny peer SSH może wysłać nadmiernie duże lub źle sformatowane pola z prefiksem długości, powodując alokację pamięci lub próbę alokacji przed odrzuceniem danych, co może prowadzić do odmowy usługi lub innych problemów.
Oryginalny opis (angielski, źródło NVD)
Russh is a Rust SSH client and server library. Prior to 0.63.2, an authenticated remote peer can send SSH_MSG_KEXINIT without the required SSH_MSG_KEX_ECDH_INIT and then flood SSH_MSG_CHANNEL_OPEN messages while SessionKexState::InProgress prevents priority_receiver in russh/src/server/session.rs from being drained. The server continues processing network input and enqueues a ChannelOpenReply for each request on an unbounded channel, allowing one connection to grow memory until the process is terminated. This issue is fixed in version 0.63.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

