Bug 2498264 (CVE-2026-54590)

Summary: CVE-2026-54590 AsyncSSH: AsyncSSH: Unauthorized file modification via authorized-keys directory escape
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: jmitchel, kshier, teagle
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in AsyncSSH, a Python package for implementing the SSHv2 protocol. An incomplete fix for a previous vulnerability allowed an attacker to bypass security restrictions in the AuthorizedKeysFile processing. By using specific characters like ~ or environment variables (${ENV}) in the AuthorizedKeysFile path, a remote attacker could escape the intended authorized-keys directory. This could lead to unauthorized modification of files outside the designated directory.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2498419, 2498421, 2498422, 2498423    
Bug Blocks:    

Description OSIDB Bzimport 2026-07-08 21:02:53 UTC
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.