---
id: "CVE-2026-111750"
kind: "vulnerability"
aliases: ["CVE-2026-111750", "GHSA-pqxq-w44r-73xw"]
title: "AIOHTTP: Pure-Python parser request smuggling"
severity: "medium"
cvss: 6.3
epss: 0.0030400000978261232
exploited: false
status: "open"
category: "package"
products: [{"name": "aiohttp", "fixed": ["3.14.4"], "affected": "<= 3.14.3", "ecosystem": "pypi"}]
ecosystems: ["pypi"]
tags: ["aiohttp", "cwe-444", "package", "python", "reverse-proxy", "self-hosted"]
not_affected_if: ["default-c-parser", "no-pure-python-fallback"]
published_at: "2026-10-19T17:17:04+00:00"
first_seen_at: "2026-10-23T19:11:32+00:00"
updated_at: "2026-10-23T21:57:18+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-pqxq-w44r-73xw", "first_seen_at": "2026-10-23T19:11:32+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-111750", "first_seen_at": "2026-10-23T21:57:18+00:00"}]
---

# AIOHTTP: Pure-Python parser request smuggling

aiohttp's pure-Python HTTP parser can be tricked into request smuggling (CWE-444), where a front-end proxy and the aiohttp backend disagree on where one request ends. An attacker who can send crafted requests can slip hidden requests past front-end controls.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- pypi:aiohttp affected <= 3.14.3 fixed 3.14.4

## How to check

Check whether AIOHTTP_NO_EXTENSIONS is set in the environment, or whether aiohttp was installed without a compiled C-extension wheel (e.g. pip show aiohttp and confirm the C parser is in use).

## Fix

Upgrade aiohttp to 3.14.4 or later.
Or switch to the default C parser by installing a standard wheel and unsetting AIOHTTP_NO_EXTENSIONS.

## Timeline

- 2026-10-23T19:11:32+00:00 ghsa https://github.com/advisories/GHSA-pqxq-w44r-73xw
- 2026-10-23T21:57:18+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-111750

## From the sources

AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. Prior to 3.14.4, the pure Python parser accepts ambiguous HTTP request framing. An unauthenticated attacker can consequently smuggle requests when an application uses AIOHTTP_NO_EXTENSIONS or otherwise runs without a standard wheel and an intermediary interprets the framing differently. This issue is fixed in version 3.14.4.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
