Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend WebSocket upgrade request with body
-
DeliveryParser switches protocol before body is consumed
-
ExploitTrailing body bytes re-parsed as pipelined HTTP request
-
ExecutionInjected request processed without normal HTTP boundary enforcement
-
ImpactBypass access controls or poison proxy connection
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
|
| Exploitation Conditions | Exploitation requires that the target be using aiohttp's server-side component (not the client). The attacker must send a WebSocket upgrade request (Connection: Upgrade, Upgrade: websocket) that also includes a request body (via Content-Length with a value greater than zero, or Transfer-Encoding: chunked), which is an edge case not typical of standard WebSocket handshakes. The CVSS vector confirms no authentication or special privileges are required (PR:N), and no user interaction is needed (UI:N). Exploitation is limited to aiohttp server deployments on versions 3.14.1 and earlier; client-only usage is not affected. The AC:H rating reflects that the attacker must deliberately craft this non-standard upgrade request with a body, and the actual downstream impact depends on the server's routing architecture - standalone aiohttp deployments may exhibit lower real-world impact than those sitting behind a shared reverse proxy where connection-level smuggling could poison shared state. |
| Impact | The CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N) gives a base score of 6.3. AC:H accurately reflects that triggering the vulnerability requires crafting a WebSocket upgrade request that also carries a body - an unusual but well-defined HTTP construction. The integrity impact is Low (VI:L), consistent with request smuggling's ability to influence routing and boundary parsing rather than directly overwrite data. No confidentiality or availability impact is assessed, which aligns with classical smuggling primitives. No EPSS data was provided in the input, so exploitation probability is inferred from available signals only: the GHSA advisory explicitly states 'AIOHTTP is unaware of any public exploit code', and the vulnerability is not in CISA KEV. Real-world exploitation risk is constrained by AC:H and the requirement to target the server-side component specifically; client-only aiohttp users are unaffected. The integrity risk is real but bounded - an attacker able to craft the specific malformed upgrade request could potentially inject a secondary HTTP request into a connection, which may affect backend systems in reverse-proxy deployments. There is no conflicting signal between the CVSS vector and the description; both indicate a network-reachable, unauthenticated, low-integrity impact. |
| Exploit ScenarioDerived | An attacker sends a crafted HTTP GET request to an aiohttp server with both a WebSocket upgrade header (Connection: Upgrade, Upgrade: websocket) and a non-zero Content-Length body. On vulnerable versions, the parser elevates to WebSocket protocol mode before reading the body, causing the body bytes - which the attacker has constructed to resemble a second HTTP request - to be parsed as a pipelined or protocol-level message. In a reverse-proxy scenario, this trailing fake request could be forwarded to a backend as a distinct authorized request, potentially bypassing access controls or poisoning a shared connection pool. No public exploit code exists at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 03, 2026
HTTP request smuggling in aiohttp's server-side parser allows unauthenticated remote attackers to inject and misdirect HTTP traffic by exploiting a protocol-switch race in the WebSocket upgrade path. Versions 3.14.1 and earlier prematurely mark the connection as upgraded before the full request body is consumed, causing trailing bytes - potentially an attacker-controlled HTTP request - to be interpreted as WebSocket or pipelined data by the server or any upstream proxy. No public exploit code exists and the vulnerability is not listed in CISA KEV, but CVSS 4.0 AC:H reflects the edge-case nature of the trigger condition.
RemediationAI
Upgrade to aiohttp 3.14.2 or later via pip (pip install 'aiohttp>=3.14.2'); this is the vendor-confirmed patch. The fix is implemented in commit 6ae358f0983c3f4d6f67692b2f8e65dc8e091c98 (PR #13017) and defers the WebSocket protocol switch until the full request body is consumed. No workaround is available that preserves WebSocket upgrade functionality - disabling WebSocket support entirely would eliminate the attack surface if WebSockets are not operationally required, though this would be a significant functional trade-off. In reverse-proxy deployments (e.g., nginx in front of aiohttp), configuring the proxy to strip or reject WebSocket upgrade requests with a non-empty body before they reach the aiohttp backend can serve as a compensating control until patching is possible. References: vendor advisory at https://github.com/aio-libs/aiohttp/security/advisories/GHSA-mfx4-hv73-q22v; patch PR at https://github.com/aio-libs/aiohttp/pull/13017.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
aiohttp (CPE: cpe:2.3:a:aio-libs:aiohttp:*:*:*:*:*:*:*:*) is a widely used asynchronous HTTP client/server framework for Python's asyncio, implemented in both Python (http_parser.py) and Cython (_http_parser.pyx). The root cause is CWE-444 (Inconsistent Interpretation of HTTP Requests). RFC 9110 §7.8 requires that a protocol upgrade take effect only after the complete HTTP request - including body - has been received. The vulnerable parser set the _upgraded = True flag upon seeing Connection: Upgrade and a supported Upgrade header during headers-complete processing, before any body bytes were consumed. A WebSocket upgrade request carrying a Content-Length or chunked body thus caused the parser to transition to the upgraded protocol mid-stream, leaving unread body bytes to spill into the upgraded-protocol or pipelined-request processing path. The fix introduces a _pending_upgrade boolean in both the Cython and Python parser implementations, deferring the actual _upgraded = True assignment until the payload reader confirms the body is fully consumed.
Know when Aiohttp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Network vector, no auth required, but AC:H reflects the specific crafted-body WebSocket upgrade edge case; integrity-only, no scope change per provided 4.0 SC/SI/SA:N.
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.2, the HTTP parsers were vulnerable to a request smuggling attack relating to WebSocket upgrades. If using the server-side component, an attacker may be able to execute a request smuggling vulnerability using an edge case in the WebSocket upgrade procedure. A WebSocket upgrade request with a body could cause the parser to switch protocols before the complete request body was received, leaving trailing bytes to be handled as upgraded-protocol or pipelined data rather than normal HTTP body data. This issue is fixed in version 3.14.2.
Blast Radius
ecosystem impact- 4 pypi packages depend on aiohttp (4 direct, 0 indirect)
Ecosystem-wide dependent count for version 3.14.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated high severity (CVSS 7.5), this vul
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated high severity (CVSS 7.5), this vul
Out-of-bounds heap read in aiohttp's C HTTP response parser (versions ≤ 3.14.2) allows an attacker-controlled server to
Uncontrolled decompression in aiohttp's WebSocket client prior to version 3.14.2 allows a malicious server to exhaust CP
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated medium severity (CVSS 6.5), this v
AIOHTTP 3.8.1 can report a "ValueError: Invalid IPv6 URL" outcome, which can lead to a Denial of Service (DoS). Rated me
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated medium severity (CVSS 5.3), this v
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated medium severity (CVSS 5.3), this v
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated high severity (CVSS 8.7), this vul
Idle or half-open connections to aiohttp server deployments at version 3.14.3 and earlier are never timed out during the
Unauthenticated remote attackers can exhaust file descriptors in aiohttp-based web services by sending crafted multipart
AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Versions 3.13.2 and below allow a zip bo
Same weakness CWE-444 – HTTP Request/Response Smuggling
View allSame technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Desktop 15 SP7 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Public Cloud 15 SP7 | Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP7 | Affected |
| SUSE Linux Enterprise Server 15 SP7 | Affected |
| SUSE Linux Enterprise Server 16.0 | Affected |
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| openSUSE Leap 16.0 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Module for Public Cloud 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Public Cloud 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Affected |
| SUSE Manager Proxy 4.3 | Affected |
| SUSE Manager Retail Branch Server 4.3 | Affected |
| SUSE Manager Server 4.3 | Affected |
| SUSE Enterprise Storage 6 | Affected |
| SUSE Enterprise Storage 7 | Affected |
| SUSE Enterprise Storage 7.1 | Affected |
| SUSE Linux Enterprise Desktop 15 SP4 | Affected |
| SUSE Linux Enterprise Desktop 15 SP5 | Affected |
| SUSE Linux Enterprise Desktop 15 SP6 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP6 | Affected |
| SUSE Linux Enterprise Module for Public Cloud 15 SP1 | Affected |
| SUSE Linux Enterprise Module for Public Cloud 15 SP2 | Affected |
| SUSE Linux Enterprise Module for Public Cloud 15 SP3 | Affected |
| SUSE Linux Enterprise Module for Public Cloud 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP1 | Affected |
| SUSE Linux Enterprise Server 15 SP2 | Affected |
| SUSE Linux Enterprise Server 15 SP3 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP1 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Manager Proxy 4.0 | Affected |
| SUSE Manager Proxy 4.1 | Affected |
| SUSE Manager Proxy 4.2 | Affected |
| SUSE Manager Retail Branch Server 4.0 | Affected |
| SUSE Manager Retail Branch Server 4.1 | Affected |
| SUSE Manager Retail Branch Server 4.2 | Affected |
| SUSE Manager Server 4.0 | Affected |
| SUSE Manager Server 4.1 | Affected |
| SUSE Manager Server 4.2 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
EUVD-2026-52436
GHSA-mfx4-hv73-q22v
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB