---
id: "GHSA-h4cc-hm5h-fmm9"
page: "https://infrastack.ai/live/GHSA-h4cc-hm5h-fmm9"
kind: "vulnerability"
aliases: ["GHSA-h4cc-hm5h-fmm9"]
title: "Concatenated compressed streams cause excessive CPU use"
severity: "low"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: [{"name": "aiohttp", "fixed": ["3.14.4"], "affected": "<= 3.14.3", "ecosystem": "pypi"}]
ecosystems: ["pypi"]
tags: ["aiohttp", "cwe-400", "cwe-407", "http-client", "package", "python", "web-server"]
not_affected_if: ["no-untrusted-compressed-input"]
published_at: "2026-11-08T18:15:40+00:00"
first_seen_at: "2026-11-09T22:53:22+00:00"
updated_at: "2026-11-09T22:58:39+00:00"
sources: [{"source": "ghsa-repo", "url": "https://github.com/aio-libs/aiohttp/security/advisories/GHSA-h4cc-hm5h-fmm9", "first_seen_at": "2026-11-09T22:53:22+00:00"}]
exploit_sources: []
---

# Concatenated compressed streams cause excessive CPU use

Link for people: https://infrastack.ai/live/GHSA-h4cc-hm5h-fmm9 (this .md is for agents)

aiohttp decompresses each concatenated gzip, deflate or zstd member by handing the whole remaining input to a new decompressor, which makes CPU time quadratic. An attacker can send a crafted compressed request body or WebSocket message to block a server's event loop, and a malicious server can do the same to a client.

_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 the installed aiohttp version with `pip show aiohttp` and compare it to the affected range `<= 3.14.3`.
- Search the project's dependency lockfiles for `aiohttp` pinned at or below `3.14.3`.

## Fix

- Upgrade `aiohttp` to `3.14.4`.

## Timeline

- 2026-11-09T22:53:22+00:00 ghsa-repo https://github.com/aio-libs/aiohttp/security/advisories/GHSA-h4cc-hm5h-fmm9

## Documents

- [advisory] Maintainer's advisory: github.com https://github.com/aio-libs/aiohttp/security/advisories/GHSA-h4cc-hm5h-fmm9

## From the sources

### Summary

When decompressing a payload made up of many concatenated compressed members (gzip, deflate or zstd), each member was decoded by passing the entire remaining input to a new decompressor, resulting in quadratic CPU time. Empty members produce no output, so `client_max_size` and output backpressure did not limit the work.

### Impact

An attacker could block the event loop of a server with a specially crafted compressed request body or WebSocket message. A malicious server could do the same to a client.

---

Patch: https://github.com/aio-libs/aiohttp/commit/d925a80539ffd227da1d93ab4a5bff123cc777db

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
