
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2025-69229 is a Denial of Service (DoS) vulnerability in the aiohttp Python asynchronous HTTP framework, specifically in its handling of HTTP chunked transfer encoding messages. When an application endpoint uses the request.read() method, an attacker can send a large number of small HTTP chunks to cause excessive blocking CPU usage (e.g., approximately 1 second per request), preventing the server from handling other requests during that time. All aiohttp versions up to and including 3.13.2 are affected; version 3.13.3 contains the fix. The vulnerability was published on January 5, 2026, with a CVSS v3.1 score of 5.3 (Medium) and a CVSS v4.0 score of 6.6 (Medium) (Github Advisory, aiohttp Advisory).
The root cause is classified as CWE-770 (Allocation of Resources Without Limits or Throttling). In vulnerable versions, the StreamReader class stored HTTP chunk split positions in a Python list, and the _read_nowait_chunk method iterated over this list using pop(0) — an O(n) operation — each time data was read. When a large number of small chunks were received, the _http_chunk_splits list grew unbounded, making each request.read() call computationally expensive and capable of blocking the asyncio event loop for a significant duration. The fix (commits dc3170b and 4ed97a4) replaced the list with a collections.deque for O(1) popleft operations and introduced a chunk-count-based flow control mechanism (_high_water_chunks / _low_water_chunks) that pauses reading when too many chunks accumulate before the byte-based high-water mark is reached (aiohttp commit dc3170b, aiohttp commit 4ed97a4).
Successful exploitation degrades or eliminates the availability of aiohttp-based server applications. An unauthenticated remote attacker can cause the server to spend blocking CPU time processing crafted chunked requests, starving the asyncio event loop and preventing legitimate requests from being served. There is no impact on confidentiality or integrity; the vulnerability is purely an availability concern. Downstream IBM products including watsonx Orchestrate, Guardium Data Security Center, and Instana Observability are also affected due to their dependency on aiohttp (Github Advisory, IBM watsonx Advisory).
No public proof-of-concept exploit code has been published, and there is no evidence of active in-the-wild exploitation as of the time of disclosure (aiohttp Advisory). The vulnerability is exploitable by unauthenticated network attackers with no user interaction required, making it trivially automatable in principle. The EPSS score is approximately 0.04% (13th percentile), indicating a low current probability of exploitation. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.
request.read() to consume the full request body.Transfer-Encoding: chunked with a very large number of small individual chunks (e.g., thousands of 1-byte chunks), keeping the total payload size below the byte-based high-water mark to avoid triggering the existing size-based flow control.StreamReader accumulates chunk split positions in its internal list without pausing.request.read(), it iterates over the large _http_chunk_splits list using O(n) pop(0) operations, causing the asyncio event loop to block for an extended period (e.g., ~1 second per request).Transfer-Encoding: chunked headers containing an abnormally large number of very small chunks (e.g., hundreds or thousands of chunks with minimal data per chunk) directed at application endpoints.request.read()-using endpoints.The primary remediation is to upgrade aiohttp to version 3.13.3 or later, which includes both patch commits (dc3170b — switching to collections.deque for O(1) chunk operations, and 4ed97a4 — adding chunk-count-based flow control) (Github Advisory). As a temporary workaround while patching, consider deploying a reverse proxy (e.g., nginx) in front of the aiohttp application configured to limit the number of chunks or enforce request body size limits, and implement rate limiting on endpoints that use request.read(). IBM product users should apply the relevant vendor security bulletins for watsonx Orchestrate, Guardium Data Security Center, and Instana Observability (IBM watsonx Advisory, IBM Instana Advisory).
The vulnerability was reported by security researcher Finder16 and remediated by aiohttp maintainer Dreamsorcerer, who published the advisory on January 5, 2026 (aiohttp Advisory). Security news outlet SecurityOnline.info covered the disclosure as part of a broader report on seven aiohttp vulnerabilities patched in the same release cycle. Multiple Linux distributions including openSUSE, Ubuntu, and Debian subsequently issued security advisories and package updates incorporating the fix. IBM issued security bulletins for several enterprise products affected through their aiohttp dependency.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."