Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessOpen TCP connections to aiohttp server
-
ExploitWithhold or trickle request data
-
ExecutionHold idle connections open indefinitely
-
ImpactExhaust server connection capacity (DoS)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the aiohttp server is configured with a non-zero keepalive_timeout (the default; the patch notes keepalive_timeout=0 intentionally imposes no first-request deadline) and that attackers can reach the aiohttp listener directly over the network. The specific condition is that, prior to 3.14.4, the keepalive timeout was not armed during the initial phase of a connection, so a client that opens a connection and sends no complete request - or only partial/trickled header bytes - is never timed out. Realistic limiting factors: the vendor's recommended production pattern of a reverse proxy with sensible keepalive limits neutralizes the issue, and a meaningful outage requires the attacker to accumulate many concurrent idle connections to exhaust capacity (reflected by AT:P), so a single connection has negligible impact. Only aiohttp server deployments 3.14.3 and earlier that expose the aiohttp listener directly to untrusted clients are affected. |
| Impact | This is a network-reachable, unauthenticated availability flaw (CWE-770, resource allocation without limits) in the aiohttp Python server. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N) scores 8.2 (High) with VA:H as the only impact - confidentiality and integrity are untouched, so the entire severity derives from denial of service. The AT:P (attack requirements present) signal is meaningful: to cause real impact an attacker must open and hold many idle connections to actually exhaust the server's connection capacity, so this is a slowloris-style resource-exhaustion issue rather than a single-request crash. No EPSS score, no CISA KEV listing, and no public exploit were provided in the input; the exploit technique (open a TCP connection, send nothing) is trivial to reproduce but no weaponized PoC is referenced. Net assessment: a genuine availability concern for aiohttp servers directly exposed to untrusted clients, but materially lower priority than a code-execution or data-disclosure bug, and substantially mitigated by the standard production practice of fronting aiohttp with a reverse proxy - the vendor's own recommended workaround. EPSS is absent, so widespread automated exploitation cannot be confirmed; treat as patch-on-maintenance-cycle unless the server is internet-facing without a proxy. |
| Exploit ScenarioDerived | An attacker opens numerous TCP connections to an internet-facing aiohttp server (3.14.3 or earlier) and simply never sends request data - or trickles header bytes slowly - keeping each connection idle indefinitely because the keepalive timeout was not applied before the first complete request arrived. By accumulating enough held-open connections, the attacker exhausts the server's connection-handling capacity and denies service to legitimate users. No authentication or user interaction is required, though no public weaponized exploit is referenced in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Idle or half-open connections to aiohttp server deployments at version 3.14.3 and earlier are never timed out during the initial phase of a request, letting a client open a TCP connection and send nothing - or trickle partial header bytes - while holding the socket open indefinitely and consuming server connection capacity. Only deployments that expose the aiohttp listener directly to untrusted clients are affected; the vendor's recommended reverse-proxy pattern with sensible keepalive limits neutralizes the issue, and a meaningful outage requires accumulating many concurrent idle connections because a single stalled connection has negligible impact. There is no public exploit code identified at time of analysis and no confirmed active exploitation (CISA KEV), though the low attack complexity of simply opening sockets makes the flaw cheap to attempt at scale.
RemediationAI
Upgrade to aiohttp 3.14.4, which arms the keepalive timer at connection_made() and therefore enforces the deadline against connections that never send a complete request (Vendor-released patch: 3.14.4); refer to advisory https://github.com/aio-libs/aiohttp/security/advisories/GHSA-5wr8-gcqf-gqf3 and the fix commit https://github.com/aio-libs/aiohttp/commit/be846822b4b3a5a54b6163e794b42dc06fba54a3. If immediate upgrade is not possible, front every aiohttp listener with a reverse proxy or load balancer that enforces its own client header/keepalive timeout and connection limits (for example nginx client_header_timeout and keepalive_timeout, or an equivalent Envoy/HAProxy setting) and keep the aiohttp port off untrusted networks - the trade-off is that a very short proxy header timeout may abort legitimately slow clients on high-latency links, and proxying adds a hop and operational complexity. Do not set keepalive_timeout=0 on aiohttp as a mitigation: per the patch, a zero value intentionally disables the first-request deadline and leaves the server exposed unless a proxy is definitively in front of it. Operationally, cap per-listener concurrency and file-descriptor budgets, monitor for large numbers of connections with zero completed requests, and lower keepalive_timeout from the legacy 3630-second example toward the documented 75 seconds to shrink the window in which stalled sockets are held.
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's asyncio-based server is implemented as a RequestHandler protocol in aiohttp/web_protocol.py, which previously initialised self._keepalive to False and only armed the keepalive timer after a request had been parsed and a response cycle completed. That meant the keepalive_timeout value guarded only post-response idle periods, leaving the initial accept-to-first-request window unbounded - a textbook instance of CWE-770 (Allocation of Resources Without Limits or Throttling) applied to connection slots, file descriptors and per-connection memory. The upstream fix in commit be846822b4b3a5a54b6163e794b42dc06fba54a3 flips the initial state to _keepalive = True and, inside connection_made(), schedules loop.call_at(loop.time() + keepalive_timeout, self._process_keepalive) whenever keepalive_timeout > 0, so an absolute first-request deadline is set at accept time and is not extended by partial or trickled header bytes. The accompanying documentation change lowers the example keepalive_timeout from 3630 to 75.0 seconds and explicitly states the same delay now bounds how long a newly accepted connection may take to deliver its first complete request. Deliberately, keepalive_timeout=0 imposes no deadline, preserving the old unbounded behaviour for operators who opt out (and rely on a fronting proxy).
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:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable and unauthenticated (AV:N/PR:N), but AC:H reflects that exhausting capacity requires many sustained idle connections; impact is availability-only (A:H), with no C/I effect.
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.4, keepalive timeout handling is absent during the initial portion of a request. An attacker can keep an idle connection open indefinitely before sending any request data, consuming server connection capacity. This issue is fixed in version 3.14.4.
Blast Radius
ecosystem impact- 20 pypi packages depend on aiohttp (15 direct, 5 indirect)
Ecosystem-wide dependent count for version 3.14.4.
Technical POC Analysis
The defect is a resource-exhaustion bug of class CWE-770 (Allocation of Resources Without Limits or Throttling): the server accepts and holds OS-level per-connection resources (socket, file descripto…
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Aiohttp web server deployments at version 3.14.3 and earlier do not time out connections that stall during the initial request phase, allowing any client that can reach the listener directly to tie up connection capacity cheaply and, at sufficient volume, degrade or deny service to legitimate users. The exposure is limited to services that publish the aiohttp listener directly to untrusted networks; deployments following the vendor's recommended reverse-proxy pattern with sensible keepalive limits are effectively shielded. Because remediation currently depends on architecture and configuration changes rather than an available patch, leadership should confirm which internet-facing services rely on aiohttp and prioritize those without a fronting proxy.
No vendor-released patch is available; mitigate by never exposing the aiohttp listener directly to untrusted clients and instead fronting it with a reverse proxy or load balancer that enforces aggressive request-header read timeouts, short keepalive and idle timeouts, and per-client connection limits. Reduce the server's own keepalive_timeout and lingering_time values, cap total concurrent connections per source, rate-limit or block sources that open many stalled sockets, and alert on abnormal idle-connection accumulation.
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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
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
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
EUVD-2026-104480
GHSA-5wr8-gcqf-gqf3
NVD
CVE.org
EPSS
Exploit-DB