Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOperate or compromise a WebSocket server
-
DeliveryVictim aiohttp client initiates WebSocket connection
-
ExploitOmit permessage-deflate in handshake response
-
ExecutionSend RSV1-flagged compressed frames to client
-
PersistClient decompresses unconditionally due to `compress=True` default
-
ImpactCPU and memory exhaustion in client process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Exploitation requires that the victim application uses aiohttp's WebSocket client component (not the server) and establishes a connection to an attacker-controlled or attacker-compromised WebSocket server. The flaw is triggered when the malicious server sends frames with the RSV1 bit set without having completed permessage-deflate extension negotiation during the WebSocket handshake - a direct RFC 6455 violation that unpatched aiohttp silently accepts. Exploitation is NOT possible against aiohttp acting as a WebSocket server. Exploitation is NOT possible if the client only connects to trusted servers under the operator's control. The CVSS PR:N and UI:N ratings reflect that the attacker-controlled server requires no authentication credential and no end-user gesture once the client application has initiated the outbound WebSocket connection. Limiting factors: the attacker must control the server endpoint being contacted, which requires either owning a service the target application connects to or achieving a network-level man-in-the-middle position. |
| Impact | The CVSS 4.0 score of 6.9 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L) correctly reflects network reachability but requires important contextual qualification: this is a client-side vulnerability, meaning the 'attacker' must control or compromise a WebSocket server that the victim aiohttp client connects to. The PR:N and UI:N metrics apply from the malicious server's perspective - no auth is needed and no user gesture is required to trigger decompression once the client connects. Availability impact is rated Low (VA:L) in CVSS 4.0, consistent with the resource exhaustion being bounded rather than immediately fatal. No EPSS score was provided in the input data, and the vulnerability is absent from the CISA KEV catalog, indicating no confirmed active exploitation. Real-world risk is meaningful only for applications that make outbound WebSocket connections to untrusted or third-party servers; services acting exclusively as WebSocket servers, or clients connecting only to internal trusted endpoints, face negligible exposure. No conflicting signals were identified between the CVSS vector and the description. |
| Exploit ScenarioDerived | An attacker operates a WebSocket server (or compromises a legitimate one) that an aiohttp-based application connects to. During the WebSocket handshake, the server intentionally omits the permessage-deflate extension negotiation, then streams frames with the RSV1 bit set containing large or crafted compressed payloads. Because the unpatched aiohttp client defaults to |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 30, 2026
Uncontrolled decompression in aiohttp's WebSocket client prior to version 3.14.2 allows a malicious server to exhaust CPU and memory on connecting clients by sending RSV1-flagged compressed frames without having negotiated the permessage-deflate extension. The root cause is a missing constructor argument in client.py:_ws_connect that caused WebSocketReader to default to compress=True, violating RFC 6455 §5.2 which mandates failing the connection on undefined reserved bits. This is client-side exposure only - aiohttp server deployments are not affected. No active exploitation has been identified and no public exploit code exists at time of analysis.
RemediationAI
Upgrade aiohttp to version 3.14.2 or later; this is the vendor-released patch confirmed by the official release tag at http://github.com/aio-libs/aiohttp/releases/tag/v3.14.2 and commit 47fb6ae354d4fa22048f4dbe7dbf82b625f0a2f6. The fix passes compress=bool(compress) explicitly in client.py:_ws_connect and removes the unsafe compress=True default from WebSocketReader.__init__, enforcing RFC 6455 §5.2 compliance. If immediate upgrade is not feasible, the primary compensating control is to restrict aiohttp WebSocket client usage to connections against known-trusted servers only, using network-layer controls (allowlist of permitted WebSocket server endpoints) to prevent connections to attacker-controlled hosts. A secondary option is to disable WebSocket client functionality altogether if it is not operationally required; this eliminates the attack surface with no functional impact on aiohttp's HTTP client or server roles. Both workarounds require ongoing operational maintenance and should be treated as temporary bridges to patching.
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 Python asyncio HTTP client/server library. The WebSocket protocol (RFC 6455 §5.2) reserves the RSV1 bit for use only by negotiated extensions; without a negotiated extension defining it, a receiver must fail the connection upon receiving a frame with RSV1 set. The permessage-deflate extension (PMCE, RFC 7692) uses RSV1 to signal per-message compression. In aiohttp's WebSocket client code (aiohttp/client.py:_ws_connect), the WebSocketReader was instantiated without passing the compress parameter, which defaulted to True in aiohttp/_websocket/reader_py.py:WebSocketReader.__init__. This caused the client to silently decompress server frames with RSV1 set regardless of whether PMCE was actually negotiated in the WebSocket handshake. CWE-20 (Improper Input Validation) is the root cause class: the client failed to validate frame flags against the set of actually-negotiated extensions before processing frame payload data. The fix (PR #12978, commit 47fb6ae) passes compress=bool(compress) explicitly and removes the unsafe default from WebSocketReader.__init__.
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:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Network vector because attacker controls the server; PR:N and UI:N from the malicious server's perspective; availability-only impact from resource exhaustion; no scope change.
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.2, the WebSocket client accepts and decompresses frames with the RSV1 bit set even when the permessage-deflate extension was not negotiated, allowing a malicious server to cause unexpected CPU and memory consumption. 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
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
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated medium severity (CVSS 6.5), this v
HTTP request smuggling in aiohttp's server-side parser allows unauthenticated remote attackers to inject and misdirect H
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
AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Versions 3.13.2 and below allow a zip bo
AIOHTTP versions prior to 3.12.14 contain a request smuggling vulnerability in the Python parser that fails to properly
aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated high severity (CVSS 7.5), this vul
Same weakness CWE-20 – Improper Input Validation
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-51257
GHSA-mq44-7p77-q5h7
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB