Skip to content
OpenAdvisories
Medium · 5.9 CVE-2026-54590 EUVD-2026-42400GHSA-qr67-gv47-xwwhPYSEC-2026-3809

AsyncSSH AuthorizedKeysFile username substitution bypass through ~ and environment expansion

Published Jul 8, 2026 · Updated Jul 10, 2026 · Assigned by GitHub_M

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. Version 2.23.0 contains an incomplete fix for CVE-2026-45309 in SSHServerConfig._set_tokens 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.

Affected products

VendorProductAffectedFixed
ronf asyncssh < 2.23.1 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 python-asyncssh 2.24.0-1 —
ReleasePackageFixed inAdvisory
Ubuntu 26.10 python-asyncssh No fix yet —
Ubuntu 26.04 LTS python-asyncssh No fix yet —
Ubuntu 25.10 python-asyncssh No fix yet —
Ubuntu 20.04 LTS python-asyncssh No fix yet —
Ubuntu 16.04 LTS python-asyncssh No fix yet —
Show 3 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro 24.04 LTS python-asyncssh No fix yet —
Ubuntu Pro 22.04 LTS python-asyncssh No fix yet —
Ubuntu Pro 18.04 LTS python-asyncssh No fix yet —

Affected packages

EcosystemPackageAffectedFixedRecord
PyPI asyncssh < 2.23.1 2.23.1 GHSA-qr67-gv47-xwwh

References