Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim client requests attacker-controlled server
-
DeliveryServer returns Set-Cookie with oversized Max-Age
-
ExploitCookie Max-Age processing raises OverflowError
-
ExecutionConnection skipped, not returned to pool
-
PersistRepeat to exhaust bounded connection pool
-
ImpactClient outbound requests stall temporarily
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 | Requires the aiohttp CLIENT to send a request to an attacker-controlled or compromised server while using a cookie jar (the default), and that server must return a Set-Cookie response header with a hostile Max-Age value whose magnitude exceeds Python's float range, triggering an OverflowError in update_cookies. Limiting factors that reduce real-world risk: it is exploitable only against aiohttp used as an HTTP client (not the server side); the impact is a TEMPORARY connection-pool exhaustion that self-resolves once garbage collection reclaims the orphaned connections; severity scales with how tight the TCPConnector connection limit is (a small/limit=1 pool is exhausted far faster than a large one); and the victim application must actually fetch from endpoints an attacker can influence. Affected: all aiohttp versions prior to 3.14.4. |
| Impact | This is a genuinely moderate, availability-only issue that should be triaged as routine patching rather than an emergency. The CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N) scores 6.9 but with VC:N/VI:N/VA:L - the only impact is a LOW availability hit, and CWE-770 (uncontrolled resource consumption) plus the description confirm the effect is a temporary connection-pool exhaustion that self-heals once garbage collection reclaims the orphaned connections. No EPSS score, KEV listing, POC, or SSVC decision data was provided, so exploitation-probability signals are simply absent rather than conflicting. A key nuance the raw vector obscures: this is a CLIENT-side flaw - the 'attacker' is the HTTP server the aiohttp client connects to, so real-world risk depends on whether an application uses aiohttp to fetch from untrusted/attacker-influenced endpoints. PR:N is technically correct (the malicious server needs no credentials on the victim), but exploitation is not a classic server-side remote DoS; it requires the victim client to initiate a request to a hostile server. Net: real but low-urgency - patch in normal cycles. |
| Exploit ScenarioDerived | An application uses the aiohttp client (with its default cookie jar) to make HTTP requests to a server an attacker controls or has compromised. That server returns a Set-Cookie header with a crafted Max-Age value larger than Python's float range, triggering an OverflowError during cookie processing that prevents the connection from being closed and returned to the pool. By serving many such responses, the attacker exhausts the client's bounded connection pool (e.g. TCPConnector limit), temporarily stalling further outbound requests until garbage collection frees the leaked connections. No public exploit identified at time of analysis, though the fix commit includes a functional test reproducing the pool-exhaustion condition. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
In aiohttp client versions prior to 3.14.4, a malicious or compromised server can return a Set-Cookie header with a Max-Age value so large that Python's floating-point range is exceeded, raising an OverflowError inside CookieJar.update_cookies; because the exception path failed to close the already-received response, the underlying connection is leaked instead of returned to the pool, temporarily exhausting TCPConnector slots until garbage collection reclaims them. Only applications using aiohttp as an HTTP client with a cookie jar (the default) that fetch from attacker-influenced endpoints are affected, and the effect is availability-only and self-resolving. No public exploit code or confirmed active exploitation was identified at time of analysis; this is a moderate, routine-patching issue rather than an emergency.
RemediationAI
Vendor-released patch: upgrade to aiohttp 3.14.4 or later (pip install --upgrade 'aiohttp>=3.14.4'), which both clamps Max-Age before the expiry arithmetic and guarantees the response is closed when post-response processing fails, so connections are returned to the pool; see the advisory at https://github.com/aio-libs/aiohttp/security/advisories/GHSA-6cjc-53gc-5rqm and the release notes at https://github.com/aio-libs/aiohttp/releases/tag/v3.14.4. If immediate upgrade is not possible, reduce exposure by passing a passive cookie implementation (CookieJar(unsafe=False), or a DummyCookieJar) to clients that talk to untrusted or third-party hosts - trade-off: session/authentication cookies stop persisting, so this is only viable for outbound calls that do not rely on cookie state. Raising the TCPConnector limit (or setting limit=0) makes pool exhaustion far harder to observe, at the cost of higher socket and file-descriptor usage; conversely, short client timeouts (aiohttp.ClientTimeout) and explicit gc.collect() or gc tuning shorten how long leaked connections linger, at the cost of CPU overhead and latency. Egress allow-listing to known-good destinations removes the attacker-controlled-server prerequisite entirely, and is the strongest compensating control where cookie handling cannot be changed. Note that the CVE's CVSS 4.0 score of 6.9 reflects the unweighted worst case, while our assessed CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L) places this as a low-impact availability issue suitable for normal patch cycles.
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 is an asyncio-based Python HTTP client/server framework. Cookie handling lives in aiohttp/cookiejar.py, which implements RFC 6265 semantics: for a Set-Cookie header with Max-Age, it computes delta_seconds and derives an expiration as time.time() + delta_seconds capped at CookieJar.MAX_TIME. Prior to the fix, the addition happened before clamping, so an attacker-supplied Max-Age with hundreds of digits (e.g. '9'*309) produced a value outside Python's float range and raised OverflowError. The commit 9dd8eaf4 shows two defects corrected: Max-Age is now clamped (and non-positive values expire immediately) before the time.time() addition, and client.py now closes the ClientResponse when a failure occurs after the response was received. The second change is what addresses the resource impact: without it, the exception unwound out of _request leaving the socket checked out of TCPConnector, so leaked connections accumulate until CPython's garbage collector finalizes them. The root cause class is CWE-770 (Allocation of Resources Without Limits or Throttling) - unbounded, attacker-influenced expiry arithmetic combined with an error path that never releases an externally limited resource.
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
A hostile server needs no credentials (PR:N) and the crafted header reliably triggers the overflow (AC:L); impact is confined to temporary, self-healing availability loss (A:L) with no confidentiality or integrity 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, Max-Age processing can overflow and skip closing a connection. An attacker can consequently exhaust the connection pool temporarily until garbage collection resolves the connections. 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.
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
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
EUVD-2026-104481
GHSA-6cjc-53gc-5rqm
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB