Skip to main content

aiohttp CVE-2026-111064

| EUVDEUVD-2026-104480 HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-19 GitHub_M GHSA-5wr8-gcqf-gqf3
8.2
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Open TCP connections to aiohttp server
  2. Exploit
    Withhold or trickle request data
  3. Execution
    Hold idle connections open indefinitely
  4. Impact
    Exhaust 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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

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

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'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

Vendor (GitHub_M) PRIMARY 8.2 HIGH
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
vuln.today AI 5.9 MEDIUM

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
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:47 cve.org
HIGH 8.2

DescriptionCVE.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
† 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.

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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

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

EPSS Score
0.4%
Top 67% exploitable
Prevalence
High
aiohttp is among the most widely deployed Python async HTTP server libraries
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Medium

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
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-111066 HIGH
8.2 Oct 19

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

CVE-2025-69223 HIGH
7.5 Jan 05

AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Versions 3.13.2 and below allow a zip bo

Vendor StatusVendor

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