Skip to main content

aiohttp EUVDEUVD-2026-38314

| CVE-2026-54277 MEDIUM
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-06-15 https://github.com/aio-libs/aiohttp GHSA-63hw-fmq6-xxg2
6.6
CVSS 4.0 · Vendor: https://github.com/aio-libs/aiohttp
Share

Severity by source

Vendor (https://github.com/aio-libs/aiohttp) PRIMARY
6.6 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
7.5 HIGH

Network-reachable with no authentication or complexity required; sole impact is memory exhaustion (availability), so A:H with C:N and I:N.

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

Primary rating from Vendor (https://github.com/aio-libs/aiohttp).

CVSS VectorVendor: https://github.com/aio-libs/aiohttp

CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

3
CVSS changed
Jun 22, 2026 - 18:23 NVD
6.6 (MEDIUM)
Source Code Evidence Fetched
Jun 15, 2026 - 20:35 vuln.today
Analysis Generated
Jun 15, 2026 - 20:35 vuln.today

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 42,718 pypi packages depend on aiohttp (14,813 direct, 28,685 indirect)

Ecosystem-wide dependent count for version 3.14.1.

DescriptionCVE.org

Summary

It is possible to bypass the max_line_size check in parts of an HTTP request in the C parser.

Impact

If using the optimised C parser (the default in pre-built wheels), then an attacker may be able to send oversized lines through the HTTP parser and use an excessive amount of memory, potentially leading to DoS.

-----

Patch: https://github.com/aio-libs/aiohttp/commit/5ab61bb4cd88f19b712f12c7c9295fe262bf804d

AnalysisAI

Memory exhaustion in aiohttp's optimised C HTTP parser allows remote unauthenticated attackers to bypass the max_line_size guard by fragmenting oversized request targets or response reason phrases across multiple TCP reads, potentially causing denial of service against any server using the default pre-built wheel configuration. The flaw is specific to the Cython-compiled C parser (the default in pre-built PyPI wheels); the pure-Python fallback correctly accumulated fragment lengths and is unaffected. No public exploit code has been identified at time of analysis, and a vendor-released patch is available in aiohttp 3.14.1.

Technical ContextAI

aiohttp is an asynchronous HTTP client/server framework for Python, distributed as pip package pkg:pip/aiohttp. Pre-built PyPI wheels ship an optimised C HTTP parser implemented in Cython (aiohttp/_http_parser.pyx), backed by llhttp - the same HTTP parser used by Node.js. The parser enforces a max_line_size limit (default 8190 bytes) via two llhttp callbacks: cb_on_url (for HTTP request targets) and cb_on_status (for HTTP response reason phrases). The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling): each callback invocation checked only the current fragment's byte count (if length > max_line_size) rather than the total accumulated buffer length (if len(buf) + length > max_line_size). Because TCP is a stream protocol, data for a single logical HTTP line can arrive across multiple read() calls, each invoking the callback independently. An attacker can deliberately fragment an overlong URL or reason phrase so that no individual fragment exceeds the limit, while the accumulated buffer grows without bound. The one-line fix per callback - adding len(pyparser._buf) to the comparison - brings the C parser into alignment with the pure-Python implementation that was already correct.

RemediationAI

Upgrade aiohttp to version 3.14.1 or later via pip install --upgrade aiohttp; this version contains the upstream fix at commit 5ab61bb4cd88f19b712f12c7c9295fe262bf804d (https://github.com/aio-libs/aiohttp/commit/5ab61bb4cd88f19b712f12c7c9295fe262bf804d). If immediate upgrade is not possible, a compensating control is to force use of the pure-Python parser by reinstalling aiohttp from source without Cython: AIOHTTP_NO_EXTENSIONS=1 pip install --force-reinstall aiohttp; this brings correct accumulated-length checking at the cost of reduced HTTP parsing throughput. Alternatively, placing a reverse proxy such as nginx in front of aiohttp with an enforced large_client_header_buffers limit and client_max_body_size constraint can block excessively long request lines before they reach the vulnerable parser, though this does not eliminate the underlying flaw and does not protect response reason phrase parsing in client use cases. See https://github.com/aio-libs/aiohttp/security/advisories/GHSA-63hw-fmq6-xxg2 for the authoritative advisory.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Affected
SUSE Linux Enterprise Module for Public Cloud 15 SP7 Affected
SUSE Linux Enterprise Module for Python 3 15 SP7 Affected

Share

EUVD-2026-38314 vulnerability details – vuln.today

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