Skip to main content

AsyncSSH CVE-2026-54590

| EUVDEUVD-2026-42400 MEDIUM
Path Traversal (CWE-22)
2026-07-08 security-advisories@github.com GHSA-qr67-gv47-xwwh
5.9
CVSS 3.1 · Vendor: github
Share

Severity by source

Vendor (github) PRIMARY
5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
vuln.today AI
5.9 MEDIUM

Attack complexity high due to specific config requirement; no confidentiality impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 27, 2026 - 11:00 vuln.today
Analysis Generated
Jul 08, 2026 - 22:21 vuln.today
Patch available
Jul 08, 2026 - 22:04 EUVD

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 28 pypi packages depend on asyncssh (9 direct, 19 indirect)

Ecosystem-wide dependent count for version 2.23.1.

DescriptionCVE.org

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.

AnalysisAI

Path traversal vulnerability in AsyncSSH 2.23.0 allows an unauthenticated remote attacker to bypass the intended authorized-keys directory restriction. By supplying a malicious SSH username containing a tilde (~) or environment variable expansion (${ENV}), the attacker can write to arbitrary files, potentially gaining unauthorized SSH access. Public proof-of-concept exploit code exists, though exploitation is not widespread (EPSS 0.29%).

Technical ContextAI

AsyncSSH is an asynchronous SSHv2 implementation for Python's asyncio framework. The vulnerability is a path traversal (CWE-22) in the configuration parsing of the AuthorizedKeysFile directive. When %u substitution is used, the code expands the username via Path.expanduser(), which interprets tilde as a home directory reference and ${ENV} as an environment variable. The incomplete fix for CVE-2026-45309 blocked '/', '\', and '..' but not '~' or '${...}'. The affected CPE, if defined, would target python-asyncssh (though not provided in input).

RemediationAI

Upgrade to AsyncSSH version 2.23.1 immediately. The fix is available in the GitHub release https://github.com/ronf/asyncssh/releases/tag/v2.23.1 and via the commit https://github.com/ronf/asyncssh/commit/3d515ba9ba0cd9990d248bdf62bcf05d51261a88. As a workaround, if upgrading is not immediately feasible, avoid using %u substitution in AuthorizedKeysFile configuration, or ensure that only trusted usernames (e.g., pre-validated against a whitelist) are permitted to connect. However, disabling %u substitution may break legitimate authentication flows that rely on per-user authorized keys.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

Share

CVE-2026-54590 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy