Vulnerability · Published Jul 17, 2026 · Assigned by GitHub_M
CVE-2026-45309AsyncSSH `AuthorizedKeysFile %u` path traversal allows attacker-selected authorized keys to authenticate a traversal username
High 8.2
In plain English
A high-severity path traversal in asyncssh from ronf. Proof-of-concept exploit code is public. The chance it is exploited in the next 30 days is estimated at 0.6% (higher than 48% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.
Official description
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.23.0, AsyncSSH expands the OpenSSH-compatible AuthorizedKeysFile %u token in asyncssh/config.py, asyncssh/connection.py, asyncssh/auth_keys.py, and asyncssh/misc.py with the raw SSH username during pre-authentication server config reload, allowing a server configured with AuthorizedKeysFile authorized_keys/%u to read an authorized-keys file outside the intended directory when the SSH username contains /, \, or .. path traversal segments and authenticate with an attacker-selected key file. This issue is fixed in version 2.23.0.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian:12 | python-asyncssh | no fix listed | DEBIAN-CVE-2026-45309 |
| Debian:13 | python-asyncssh | no fix listed | DEBIAN-CVE-2026-45309 |
| Debian:14 | python-asyncssh | 2.23.0-1 | DEBIAN-CVE-2026-45309 |
| PyPI | asyncssh | 2.23.0 | GHSA-g794-3fmp-753h |
| PyPI | asyncssh | 2.23.0 | PYSEC-2026-2384 |
| Ubuntu:26.04:LTS | python-asyncssh | no fix listed | UBUNTU-CVE-2026-45309 |
Affected products (as reported)
Weakness: CWE-22 · Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N