CVE-2026-69243: HTTP Request Smuggling via WebSocket Upgrade State Desynchronization in aiohttp
Vulnerability ID: CVE-2026-69243
CVSS Score: 6.3
Published: 2026-08-03
An asynchronous HTTP client/server framework for asyncio and Python, aiohttp prior to version 3.14.2 is vulnerable to HTTP Request Smuggling. The server-side HTTP parser immediately transitions the protocol state to 'upgraded' upon receiving a WebSocket upgrade request before consuming the accompanying request body. If the backend handler rejects the upgrade request while keeping the TCP connection alive, the unconsumed request body remains in the socket buffer and is parsed as a subsequent pipelined HTTP request. This allows an attacker to smuggle requests, bypass frontend reverse proxy controls, and perform unauthorized actions.
TL;DR
Prior to version 3.14.2, aiohttp transitions its protocol state to 'upgraded' before reading the body of a WebSocket upgrade request. If the handler rejects the upgrade, any unconsumed body bytes are parsed as a new pipelined HTTP request, enabling request smuggling.
⚠️ Exploit Status: POC
Technical Details
- CWE ID: CWE-444
- Attack Vector: Network (AV:N)
- CVSS Vector: 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
- Exploit Status: poc
- KEV Status: No
- Affected Component: HTTP Parser
Affected Systems
- aiohttp asynchronous server component
-
aiohttp: < 3.14.2 (Fixed in:
3.14.2)
Code Analysis
Commit: 6ae358f
Fixed request body not being read on rejected WebSocket upgrades
Exploit Details
- aiohttp regression tests: The official test suite contains regression tests verifying the vulnerability path by pipelining a request behind a rejected websocket upgrade request.
Mitigation Strategies
- Upgrade to aiohttp version 3.14.2 or higher.
- Block WebSocket upgrade requests that contain a non-empty request body at the reverse proxy layer.
- Disable HTTP keep-alive or connection reuse for routes handling WebSocket upgrades.
Remediation Steps:
- Update standard requirements.txt or dependency lockfiles to require 'aiohttp>=3.14.2'.
- Deploy the updated application containers or server instances.
- Verify the implementation by sending a test pipelined connection to confirm unconsumed bodies are properly handled without request smuggling.
References
- GitHub Security Advisory GHSA-mfx4-hv73-q22v
- Official Pull Request #13017
- Commit 6ae358f0983c3f4d6f67692b2f8e65dc8e091c98
- Release v3.14.2
- CVE Record
Read the full report for CVE-2026-69243 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)