CVE-2026-62949
MediumCVSS 6.5Summary
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.
Risk Assessment
A malicious SSH server can freeze the client, and an authenticated client can freeze the server, blocking all current and future connections handled by the process. This leads to denial of service (DoS) and SSH service unavailability.
Recommendation
Upgrade AsyncSSH to version 2.24.0 or later. Until then, limit trust in SSH servers and monitor for unusual connection behavior.
Other vulnerabilities in AsyncSSH
See all- CVE-2026-45309High
Vulnerability in AsyncSSH before version 2.23.0 allows an attacker to exploit the %u token expansion in AuthorizedKeysFile to read key files outside the intended directory using path traversal segments (/, \, ..). The attacker can authenticate using a chosen key file.
- CVE-2026-54591High
A vulnerability in AsyncSSH prior to version 2.23.1 allows a malicious SSH server to write arbitrary files on the SCP client's filesystem. This occurs because _parse_cd_args in scp.py returns server-provided filenames verbatim and _recv_files joins them to the destination path without enforcing the target directory boundary, enabling ../ traversal sequences.
- CVE-2026-54590Medium
AsyncSSH version 2.23.0 contains an incomplete fix for CVE-2026-45309 that blocks /, , and .. before %u substitution in AuthorizedKeysFile but does not block a leading ~ or ${ENV}, allowing later expansion in _expand_val and Path(filename).expanduser() to escape the intended authorized-keys directory. This issue is fixed in version 2.23.1.
Original NVD description (English source)
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.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

