{"id":"CVE-2026-45309","aliases":["GHSA-g794-3fmp-753h","PYSEC-2026-2384"],"url":"https://o3.security/vulnerability/CVE-2026-45309","summary":"AsyncSSH `AuthorizedKeysFile %u` path traversal allows attacker-selected authorized keys to authenticate a traversal username","details":"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.","published":"2026-07-17T18:40:02.428Z","modified":"2026-08-12T03:51:35.878258734Z","cvss":null,"epss":{"score":0.0044,"percentile":0.36438,"asOf":"2026-08-24"},"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"PyPI","name":"asyncssh","fixedVersion":"2.23.0"}],"fix":{"url":"https://github.com/ronf/asyncssh/commit/2af2382cce946c959a378a62f257af253dc4ab51","label":"ronf/asyncssh@2af2382"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45309.json"},{"type":"ADVISORY","url":"https://github.com/ronf/asyncssh/security/advisories/GHSA-g794-3fmp-753h"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45309"},{"type":"FIX","url":"https://github.com/ronf/asyncssh/commit/2af2382cce946c959a378a62f257af253dc4ab51"},{"type":"FIX","url":"https://github.com/ronf/asyncssh/commit/3d515ba9ba0cd9990d248bdf62bcf05d51261a88"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-08-12T03:51:35.878258734Z"}}