CVE-2026-62949
ŚrednieCVSS 6.5Streszczenie
AsyncSSH to pakiet Pythona zapewniający asynchroniczną implementację klienta i serwera protokołu SSHv2 na frameworku asyncio. W wersjach przed 2.24.0 funkcje _process_channel_open i _process_channel_open_confirmation w asyncssh/connection.py akceptują wartość send_pktsize równą zero dostarczoną przez drugą stronę. Gdy dane kanału docierają do SSHChannel._flush_send_buf w asyncssh/channel.py, wartość zero powoduje, że każda iteracja pętli wycina i usuwa zero bajtów bez zmniejszania okna wysyłania, pozostawiając synchroniczną pętlę na stałe prawdziwą bez punktu await. Złośliwy serwer SSH może wywołać ścieżkę klienta przez SSH_MSG_CHANNEL_OPEN_CONFIRMATION przed pierwszym zapisem do kanału, a uwierzytelniony klient może wywołać ścieżkę serwera przez SSH_MSG_CHANNEL_OPEN i zamrozić wszystkie bieżące i przyszłe połączenia obsługiwane przez proces. Podatność została naprawiona w wersji 2.24.0.
Ocena ryzyka
Złośliwy serwer SSH może zamrozić klienta, a uwierzytelniony klient może zamrozić serwer, blokując wszystkie bieżące i przyszłe połączenia obsługiwane przez proces. Prowadzi to do odmowy usługi (DoS) i niedostępności usług SSH.
Rekomendacja
Należy zaktualizować AsyncSSH do wersji 2.24.0 lub nowszej. Do czasu aktualizacji zaleca się ograniczenie zaufania do serwerów SSH oraz monitorowanie nietypowych zachowań połączeń.
Inne podatności w AsyncSSH
Zobacz wszystkie- CVE-2026-45309Wysokie
Podatność w AsyncSSH przed wersją 2.23.0 umożliwia atakującemu wykorzystanie rozwijania tokena %u w AuthorizedKeysFile do odczytu plików kluczy poza zamierzonym katalogiem poprzez segmenty ścieżki (/, \, ..). Atakujący może uwierzytelnić się przy użyciu wybranego pliku klucza.
- CVE-2026-54591Wysokie
Podatność w bibliotece AsyncSSH przed wersją 2.23.1 umożliwia złośliwemu serwerowi SSH zapis dowolnych plików w systemie plików klienta SCP. Dzieje się tak, ponieważ funkcja _parse_cd_args w pliku scp.py zwraca nazwy plików dostarczone przez serwer bez weryfikacji, a _recv_files łączy je ze ścieżką docelową bez sprawdzania granic katalogu docelowego, co pozwala na użycie sekwencji nawigacyjnych ../.
- CVE-2026-54590Średnie
AsyncSSH w wersji 2.23.0 zawiera niekompletną poprawkę dla CVE-2026-45309, która blokuje znaki /, , oraz .. przed podstawieniem %u w AuthorizedKeysFile, ale nie blokuje wiodącego ~ lub ${ENV}, co pozwala na późniejszą ekspansję w _expand_val i Path(filename).expanduser() w celu ominięcia zamierzonego katalogu autoryzowanych kluczy. Problem został naprawiony w wersji 2.23.1.
Oryginalny opis (angielski, źródło NVD)
AsyncSSH is a Python package which provides an asynchronous client and server implementation of the SSHv2 protocol on top of the Python asyncio framework. Prior to 2.24.0, _process_channel_open and _process_channel_open_confirmation in asyncssh/connection.py accept a peer-supplied send_pktsize value of zero. When channel data reaches SSHChannel._flush_send_buf in asyncssh/channel.py, the zero value causes each loop iteration to slice and remove zero bytes without reducing the send window, leaving the synchronous loop permanently true with no await point. A malicious SSH server can trigger the client path through SSH_MSG_CHANNEL_OPEN_CONFIRMATION before the first channel write, while an authenticated client can trigger the server path through SSH_MSG_CHANNEL_OPEN and freeze every current and future connection handled by the process. This vulnerability is fixed in 2.24.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

