CVE-2026-62949: AsyncSSH: asyncio event-loop freeze via SSH maximum packet size = 0 in SSH_MSG_CHANNEL_OPEN / OPEN_CONFIRMATION
A malicious SSH server can wedge an AsyncSSH client, and an authenticated
client can wedge an AsyncSSH server, by sending a channel maximum packet size of 0 in SSH_MSG_CHANNEL_OPEN_CONFIRMATION (server→client) or
SSH_MSG_CHANNEL_OPEN (client→server). AsyncSSH stores the peer-supplied value
verbatim with no lower-bound check; the first time channel data is written,
SSHChannel._flush_send_buf enters a synchronous infinite loop that cannot
be interrupted by asyncio.wait_for or any timeout. The loop body has no
await, so it blocks the entire asyncio event loop — for a server, one
malicious authenticated channel freezes all current and future connections.
RFC 4254 §5.1 leaves receiver behavior for a peer-reported “maximum packet size = 0” undefined, so the value must be rejected rather than stored.
References
- github.com/advisories/GHSA-rw4j-r22c-9gc3
- github.com/ronf/asyncssh/commit/756cbae5350789ce9735f15f704bae9b5a3608b8
- github.com/ronf/asyncssh/commit/9c354270c009285525e126721e8ed5fbed1f8a67
- github.com/ronf/asyncssh/releases/tag/v2.24.0
- github.com/ronf/asyncssh/security/advisories/GHSA-rw4j-r22c-9gc3
- nvd.nist.gov/vuln/detail/CVE-2026-62949
Code Behaviors & Features
Detect and mitigate CVE-2026-62949 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →