GPU VulnDB

Database/Kernel, userspace & hypervisor

AsyncSSH: username path traversal in AuthorizedKeysFile %u lets an attacker pick the key file

CVSS 8.2CVE-2026-45309Kernel, userspace & hypervisorcurated

Impact

Before 2.23.0, AsyncSSH expanded the OpenSSH-compatible %u token with the raw SSH username during pre-authentication config reload. A username containing /, \ or .. walks out of the intended directory, so an attacker can make the server load an authorized-keys file of their choosing and authenticate with a key they control - an authentication bypass against any service built on AsyncSSH that is configured with a relative pattern such as AuthorizedKeysFile authorized_keys/%u. This matters where a Python SSH front end sits in front of fleet tooling - jump and bastion services, network and node automation, SFTP endpoints for model and dataset transfer - because the bypass yields whatever that service does on the operator's behalf. Servers that do not use the %u token in AuthorizedKeysFile are not exposed; stock OpenSSH is unaffected.

Who can reach it

Network, pre-authentication: anyone who can open an SSH connection to an AsyncSSH-based server and choose their own username. No credentials needed, and it happens during config reload before authentication completes.

What to do

Upgrade the asyncssh dependency to 2.23.0 or later and restart the SSH service that embeds it - one daemon restart per service, no node work. Until then, stop using %u in AuthorizedKeysFile (point at a fixed path or supply keys programmatically) or reject usernames containing path separators and dot segments before they reach the config layer. Review auth logs for successful logins under usernames containing / , \ or ..

References

Related entries

All Kernel, userspace & hypervisor entries

This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.