---
schema_version: '1.0'
id: security-20260711-f48359
url: https://osv.dev/vulnerability/GHSA-63hf-3vf5-4wqf
url_hash: f483591bb3d91c9e596e4e7269727c168651af8af0c0771043e9d70630c8feb5
canonical_url: https://osv.dev/vulnerability/GHSA-63hf-3vf5-4wqf
source: osv:ghsa
category: security/library
category_raw: cve/library
region: null
tags:
- cve
- CVE-2026-34520
- GHSA-63hf-3vf5-4wqf
- severity:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
- aiohttp
- PyPI
lang: en
published_at: '2026-04-01T21:49:06Z'
fetched_at: '2026-07-11T06:37:17Z'
updated_at: '2026-07-16T06:46:07Z'
status: published
content_hash: 336f48fc6ca6f8eccde0d791d531905335e4cf7ee7b0c4939ff9e1d85add4842
license_note: full
summary: AIOHTTP's C parser (llhttp) accepts null bytes and control characters in
  response header values - header injection/security bypass
summary_source: rss
summary_en: AIOHTTP's C parser (llhttp) accepts null bytes and control characters
  in response header values - header injection/security bypass
entities: []
related_auto: []
title: 'CVE-2026-34520: AIOHTTP''s C parser (llhttp) accepts null bytes and control
  characters in response header values - header injection/security bypass'
---

# CVE-2026-34520: AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values - header injection/security bypass

## TL;DR
AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values - header injection/security bypass

## Key Points
- cve / CVE-2026-34520 / GHSA-63hf-3vf5-4wqf / severity:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H / aiohttp / PyPI

## Details
**Severity:** CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
**Advisory:** GHSA-63hf-3vf5-4wqf (CVE-2026-34520)

**Affected (your watchlist):**
- `PyPI:aiohttp` 3.13.3 → fixed in 3.13.4 [docker/docker-strands]

**Details:**
### Summary

The C parser (the default for most installs) accepted null bytes and control characters in request headers.

### Impact

An attacker could send header values that are interpreted differently than expected due to the presence of control characters. For example, `request.url.origin()` may return a different value than the raw Host header, or what a reverse proxy interpreted it as., potentially resulting in some kind of security bypass.

-----

Patch: https://github.com/aio-libs/aiohttp/commit/9370b9714a7a56003cacd31a9b4ae16eab109ba4

**References:**
- https://github.com/aio-libs/aiohttp/security/advisories/GHSA-63hf-3vf5-4wqf
- https://nvd.nist.gov/vuln/detail/CVE-2026-34520
- https://github.com/aio-libs/aiohttp/commit/9370b9714a7a56003cacd31a9b4ae16eab109ba4
- https://github.com/aio-libs/aiohttp
- https://github.com/aio-libs/aiohttp/releases/tag/v3.13.4
- https://github.com/pypa/advisory-database/tree/main/vulns/aiohttp/PYSEC-2026-2102.yaml

_Data: OSV.dev (upstream: ghsa) — https://osv.dev/vulnerability/GHSA-63hf-3vf5-4wqf_

## Source
元記事: [CVE-2026-34520: AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values - header injection/security bypass](https://osv.dev/vulnerability/GHSA-63hf-3vf5-4wqf) — published 2026-04-01T21:49:06Z
