CVE-2025-69226: 
Wolfi vulnerability analysis and mitigation

Overview

CVE-2025-69226 is an information disclosure vulnerability in AIOHTTP, an asynchronous HTTP client/server framework for asyncio and Python, titled "Brute-force leak of internal static file path components." It affects all versions up to and including 3.13.2, and was disclosed on January 5, 2026, with a fix released in version 3.13.3. The vulnerability arises in the path normalization logic for static file serving, allowing unauthenticated attackers to infer the existence of absolute path components on the server. It carries a CVSS v3.1 base score of 5.3 (Medium) and a CVSS v4.0 base score of 2.7 (Low) (GitHub Advisory, Red Hat Bugzilla).

Technical details

The root cause is classified under CWE-22 (Improper Limitation of a Pathname to a Restricted Directory) and CWE-202 (Exposure of Sensitive Information Through Data Queries). The vulnerability exists in the resolve() method of StaticResource in aiohttp/web_urldispatcher.py, where path normalization logic designed to prevent path traversal inadvertently reveals whether absolute path components exist on the server by returning different HTTP responses (403 vs. 404) for valid versus invalid paths. An attacker can craft requests such as /static/../../../../some/absolute/path and observe the server's response to brute-force the existence of filesystem directories or files. Exploitation requires that the application uses web.static() for static file serving, which is explicitly not recommended for production use (GitHub Advisory, Patch Commit).

Impact

Successful exploitation allows an unauthenticated remote attacker to enumerate the existence of absolute path components on the server's filesystem, constituting a low-severity information disclosure. There is no impact on integrity or availability, and the confidentiality impact is limited to leaking structural filesystem information (e.g., whether specific directories or files exist) rather than exposing file contents. This information could assist an attacker in reconnaissance for further attacks, such as identifying configuration file locations or application structure (GitHub Advisory, Red Hat Bugzilla).

Exploitability

No public exploit code or active in-the-wild exploitation has been reported for CVE-2025-69226. The EPSS score is approximately 0.063% (21st percentile), indicating a low probability of exploitation in the near term. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires the target application to use web.static(), which is not recommended for production deployments, further limiting the attack surface (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify web applications using AIOHTTP versions ≤ 3.13.2 with web.static() enabled for static file serving.
  2. Craft traversal requests: Send HTTP GET requests with path traversal sequences targeting the static endpoint, e.g., GET /static/../../../../etc/passwd.
  3. Observe response codes: Note the difference in HTTP response codes — a 403 response (in unpatched versions) versus a 404 indicates whether the traversed path component exists on the server filesystem.
  4. Brute-force path components: Systematically enumerate directory and file names by varying the path components and observing response differences to map out the server's filesystem structure.
  5. Use gathered information: Leverage discovered path information for further targeted attacks, such as identifying configuration files, application source directories, or sensitive data locations (GitHub Advisory, Patch Commit).

Indicators of compromise

  • Network: Repeated HTTP GET requests to static file endpoints (e.g., /static/) containing ../ or ..\ sequences traversing outside the static root; requests with absolute path components embedded in the URL (e.g., /static/../../../../etc/ or /static/C:\Windows\).
  • Logs: Web server access logs showing a high volume of 403 or 404 responses to requests with path traversal patterns against the static file route; sequential enumeration of path components visible in request logs.
  • Process: No unusual process behavior expected, as exploitation is purely HTTP-based and does not result in code execution.

Mitigation and workarounds

The primary remediation is to upgrade AIOHTTP to version 3.13.3 or later, which rejects static URLs that traverse outside the static root by applying os.path.normpath() during URL resolution and returning 404 instead of 403 for out-of-bounds paths (Patch Commit, GitHub Advisory). As a workaround, avoid using web.static() in production environments — the aiohttp documentation explicitly recommends using a dedicated web server (e.g., nginx) for static file serving instead. IBM has also released patches for affected products including watsonx Orchestrate Developer Edition, Guardium Data Security Center, and Observability with Instana (IBM watsonx Advisory, IBM Guardium Advisory).

Community reactions

The vulnerability was reported by security researcher ThomasRinsma and remediated by Dreamsorcerer and bdraco from the aiohttp maintainer team (GitHub Advisory). Security Online Info covered the release of aiohttp 3.13.3 as part of a broader patch addressing seven vulnerabilities including higher-severity DoS risks. The vulnerability received routine coverage from Linux distribution security channels (SUSE, Ubuntu, Debian, openSUSE) and was tracked by Red Hat's Product Security team, reflecting standard industry response for a low-severity library vulnerability.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

python-aiohttp

Affected

sid

python-aiohttp: 3.13.3-1

Fixed

trixie

python-aiohttp: 3.11.16-1+deb13u1

Fixed

Ubuntu

Fixed

bionic (esm-apps)

python-aiohttp: 3.0.1-1ubuntu0.1~esm6

Fixed

devel

python-aiohttp

Not Affected

focal (esm-apps)

python-aiohttp: 3.6.2-1ubuntu1+esm5

Fixed

jammy

python-aiohttp

Affected

jammy (esm-apps)

python-aiohttp: 3.8.1-4ubuntu0.2+esm2

Fixed

noble

python-aiohttp

Affected

noble (esm-apps)

python-aiohttp: 3.9.1-1ubuntu0.1+esm2

Fixed

questing

python-aiohttp: 3.11.16-1ubuntu0.1

Fixed

RHEL / CentOS

Unknown

Alpine

Fixed

edge

py3-aiohttp: 3.13.3-r0

Fixed

v3.23

py3-aiohttp: 3.13.3-r0

Fixed

Source: This report was generated using AI

Related Wolfi vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-115567MEDIUM5.8
  • Rust logoRust
  • yazi
NoYesOct 23, 2026
CVE-2026-115892MEDIUM5.7
  • Rust logoRust
  • zed
NoYesOct 23, 2026
CVE-2026-115897LOW2.1
  • JavaScript logoJavaScript
  • serialize-javascript
NoYesOct 23, 2026
CVE-2026-115369LOW2.1
  • Wolfi logoWolfi
  • openbao
NoYesOct 22, 2026
CVE-2026-115366LOW2
  • Wolfi logoWolfi
  • openbao
NoYesOct 22, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management