Skip to main content

aiohttp EUVDEUVD-2026-104481

| CVE-2026-111065 MEDIUM
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-19 GitHub_M GHSA-6cjc-53gc-5rqm
6.9
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Victim client requests attacker-controlled server
  2. Delivery
    Server returns Set-Cookie with oversized Max-Age
  3. Exploit
    Cookie Max-Age processing raises OverflowError
  4. Execution
    Connection skipped, not returned to pool
  5. Persist
    Repeat to exhaust bounded connection pool
  6. Impact
    Client 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

aiohttp < 3.14.4

Affected Packages

pypi aiohttp fix: 3.14.4

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

Vendor (GitHub_M) PRIMARY 6.9 MEDIUM
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
vuln.today AI 5.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Red Hat 5.3 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 19, 2026 - 18:03 EUVD
CVE Published
Oct 19, 2026 - 16:57 cve.org
MEDIUM 6.9

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 20 pypi packages depend on aiohttp (15 direct, 5 indirect)

Ecosystem-wide dependent count for version 3.14.4.

Threat Intelligence Overview

EPSS Score
0.4%
Top 71% exploitable
Prevalence
High
aiohttp is among the most widely used Python async HTTP client/server libraries
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2023-47627 HIGH POC
7.5 Nov 14

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated high severity (CVSS 7.5), this vul

CVE-2023-37276 HIGH POC
7.5 Jul 19

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated high severity (CVSS 7.5), this vul

CVE-2026-69244 HIGH POC
7.1 Aug 03

Out-of-bounds heap read in aiohttp's C HTTP response parser (versions ≤ 3.14.2) allows an attacker-controlled server to

CVE-2026-59881 MEDIUM POC
6.9 Jul 30

Uncontrolled decompression in aiohttp's WebSocket client prior to version 3.14.2 allows a malicious server to exhaust CP

CVE-2023-47641 MEDIUM POC
6.5 Nov 14

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated medium severity (CVSS 6.5), this v

CVE-2026-69243 MEDIUM POC
6.3 Aug 03

HTTP request smuggling in aiohttp's server-side parser allows unauthenticated remote attackers to inject and misdirect H

CVE-2022-33124 MEDIUM POC
5.5 Jun 23

AIOHTTP 3.8.1 can report a "ValueError: Invalid IPv6 URL" outcome, which can lead to a Denial of Service (DoS). Rated me

CVE-2023-49082 MEDIUM POC
5.3 Nov 29

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated medium severity (CVSS 5.3), this v

CVE-2023-49081 MEDIUM POC
5.3 Nov 30

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated medium severity (CVSS 5.3), this v

CVE-2024-52303 HIGH
8.7 Nov 18

aiohttp is an asynchronous HTTP client/server framework for asyncio and Python. Rated high severity (CVSS 8.7), this vul

CVE-2026-111064 HIGH
8.2 Oct 19

Idle or half-open connections to aiohttp server deployments at version 3.14.3 and earlier are never timed out during the

CVE-2026-111066 HIGH
8.2 Oct 19

Unauthenticated remote attackers can exhaust file descriptors in aiohttp-based web services by sending crafted multipart

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy