Cloudanix VulnDB

CVE-2025-69223

High · 7.5

AIOHTTP's HTTP Parser auto_decompress feature is vulnerable to zip bomb

CVSS

7.5

EPSS

0.6%

Published

Jan 5, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A small malicious compressed file can overload affected web services and make them slow or unavailable.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Denial Of Service
Component
Web Framework
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability allows a malicious client to send a specially crafted compressed archive or compressed HTTP payload that expands to a much larger size when processed by an aiohttp-based server. If the application or framework path decompresses the input without adequate expansion-ratio, size, memory, or time limits, a small request can consume disproportionate CPU, memory, disk, or event-loop capacity. The result is denial of service: worker starvation, process crashes, elevated latency, failed requests, or service unavailability. The issue is availability-focused; it does not directly imply code execution or data disclosure based on the provided information.

Why it matters to the business

Publicly reachable aiohttp services that accept compressed uploads or compressed request bodies may be disrupted by low-cost requests, causing outages, degraded API performance, failed customer transactions, and operational incident response effort. The CVSS score indicates high availability impact, but the currently low EPSS score, lack of known exploited status, and no reported exploit maturity suggest prioritizing remediation through normal high-severity patch cycles unless the service is internet-facing, business-critical, or already experiencing unexplained resource exhaustion.

How an attack unfolds

An attacker identifies an endpoint backed by aiohttp that accepts compressed uploads, archive files, or compressed request bodies. They craft a zip bomb or equivalent high-expansion compressed payload that is small on the wire but expands massively when decompressed. The attacker sends the payload repeatedly or concurrently to vulnerable endpoints. During request handling, the server decompresses or processes the payload and consumes excessive memory, CPU, disk, or event-loop time. With enough requests, aiohttp workers slow down, crash, or become unavailable, causing legitimate users to experience timeouts, 5xx responses, or service interruption. No authentication may be required if the affected upload or ingestion endpoint is publicly accessible, although authenticated upload functionality can also be abused.

How to fix it

Upgrade affected aiohttp and downstream packages to fixed versions as provided by the vendor or distribution. For aio-libs/aiohttp from Git, use commit 41f01ed680b7efc8f97677df45731b80328aad6c or a later release containing that fix. For Debian packages listed in the advisory, apply the relevant fixed package versions: Debian 11 fixed in 5.10.113-1; Debian 12 fixed in 5.17.3-1; Debian 13 fixed in 5.17.3-1. In addition to patching, enforce layered limits: maximum request body size, maximum uploaded file size, maximum decompressed size, decompression ratio limits, request timeouts, per-client rate limits, concurrency limits, and reverse-proxy body-size caps. Reject nested archives and unsupported compression formats where not required. If compressed uploads are necessary, decompress in a sandboxed worker with strict memory, CPU, disk, and timeout controls rather than in the main event loop.

How to confirm the fix worked

Confirm deployed aiohttp versions or distribution packages include the fixed version or commit. Review dependency lockfiles, container images, virtual environments, OS packages, and SBOMs for vulnerable aiohttp or affected distribution package versions. Test that endpoints accepting compressed input enforce size, expansion-ratio, and timeout limits by using benign oversized test payloads in a controlled environment; the expected result is fast rejection with a controlled 4xx response, not high memory growth, process restart, or long event-loop blockage. Validate reverse proxy and application-layer limits are both active. Monitor service behavior after patching for reduced memory spikes, fewer request timeouts, and absence of worker crashes during compressed upload handling.

Typical attack path

  1. Discover an aiohttp-backed service with endpoints that accept file uploads, archive processing, or compressed HTTP request bodies.
  2. Confirm that the endpoint processes compressed input such as ZIP, gzip, deflate, or similar formats.
  3. Create a high-expansion payload that is small in transfer size but decompresses to a very large amount of data.
  4. Send the payload to the vulnerable endpoint, often with concurrent requests to amplify resource pressure.
  5. Cause excessive CPU, memory, disk, or event-loop consumption during decompression or request processing.
  6. Observe service degradation, process crashes, timeouts, HTTP 5xx responses, or complete denial of service.

How to detect it

To determine whether exploitation may have occurred, correlate application access logs, aiohttp application logs, reverse-proxy logs, system resource telemetry, and process supervisor logs. Look for small inbound requests or uploads with compression-related headers or archive file types followed by abnormal memory growth, CPU saturation, event-loop latency, worker restarts, request timeouts, or bursts of HTTP 500/502/503/504 responses. Pay particular attention to endpoints that handle uploads, imports, archive extraction, or compressed request bodies. In web access logs, hunt for repeated POST or PUT requests with unusually small Content-Length values that coincide with long request durations or backend failures. In application logs, search for decompression errors, MemoryError exceptions, asyncio timeout messages, aiohttp request-handling exceptions, and process terminations. In host telemetry, review OOM killer events, container restarts, cgroup memory-limit kills, elevated disk usage in temporary directories, and sudden increases in CPU or event-loop lag. Because exploitation may not leave a unique payload signature, detection should focus on compression-related requests temporally linked to resource exhaustion and service instability.

  • Content-Encoding: gzip
  • Content-Encoding: deflate
  • Content-Encoding: br
  • Content-Type: application/zip
  • Content-Type: application/gzip
  • .zip
  • MemoryError
  • asyncio.exceptions.TimeoutError
  • aiohttp.web_protocol
  • Error handling request
  • Cannot write to closing transport
  • Killed process
  • Out of memory
  • oom-killer
  • HTTP 500
  • HTTP 502
  • HTTP 503
  • HTTP 504
  • Request Entity Too Large
  • No space left on device

What your security team should do

  • Inventory internet-facing and internal aiohttp services, especially upload, ingestion, import, archive-processing, and API endpoints that accept compressed request bodies.
  • Prioritize patching public or business-critical aiohttp services even though the current EPSS is low and the issue is not listed as known exploited.
  • Upgrade to the fixed aiohttp commit or vendor package versions and rebuild/redeploy containers or virtual environments that bundle vulnerable dependencies.
  • Add or verify request body size limits, decompressed-size limits, compression-ratio checks, request timeouts, rate limits, and worker resource limits.
  • Place high-risk upload endpoints behind a reverse proxy or API gateway with strict body-size and request-rate enforcement.
  • Temporarily disable compressed uploads, archive ingestion, or automatic decompression where not business-essential until patching and limits are confirmed.
  • Add monitoring and alerting for sudden increases in memory use, CPU use, event-loop latency, 5xx rates, request timeouts, and worker restarts on aiohttp services.
  • Review recent logs for suspicious small compressed uploads followed by resource exhaustion or application crashes.

The record

A zip bomb can be used to execute a DoS against the aiohttp server.

Affected packages

Ecosystem Package Introduced Fixed
PyPI aiohttp 0 3.13.3
Chainguard airflow-2 0 2.11.0-r19
Chainguard airflow-2-bitnami-compat 0 2.11.0-r19
Chainguard airflow-2-compat 0 2.11.0-r18
Chainguard airflow-2-compat 0 2.11.0-r19
Chainguard airflow-2-iamguarded-compat 0 2.11.0-r18
Chainguard airflow-2-iamguarded-compat 0 2.11.0-r19
Chainguard airflow-3-compat 0 3.1.5-r1
Chainguard airflow-3-iamguarded-compat 0 3.1.5-r1
Chainguard airflow-core-2 0 2.11.0-r11
Chainguard airflow-core-2-compat 0 2.11.0-r10
Chainguard airflow-core-2-oci-entrypoint 0 2.11.0-r10
Chainguard apache-beam-python-3.11-sdk 0 2.70.0-r1
Chainguard authentik 0 2025.10.3-r3
Chainguard authentik-fips 0 2025.10.3-r1
Chainguard authentik-go-server 0 2025.10.3-r3
Chainguard authentik-go-server-fips 0 2025.10.3-r0
Chainguard awx 0 24.6.1-r23
Chainguard checkov 0 3.2.499-r0
Chainguard dask-kubernetes 0 2025.7.0-r4
Chainguard gitaly-config-18.5 0 18.5.5-r0
Chainguard gitaly-config-18.6 0 18.6.2-r0
Chainguard gitaly-config-18.7 0 18.7.0-r0
Chainguard gitlab-base-18.5 0 18.5.4-r0
Chainguard gitlab-base-18.6 0 18.6.3-r0
Chainguard gitlab-base-18.7 0 18.7.0-r0
Chainguard gitlab-base-fips-18.5 0 18.5.4-r1
Chainguard gitlab-base-fips-18.6 0 18.6.3-r0
Chainguard gitlab-base-fips-18.7 0 18.7.0-r0
Chainguard gitlab-certificates-18.5 0 18.5.4-r0
Chainguard gitlab-certificates-18.6 0 18.6.2-r0
Chainguard gitlab-certificates-18.7 0 18.7.0-r0
Chainguard gitlab-cfssl-self-sign-scripts-18.5 0 18.5.4-r0
Chainguard gitlab-cfssl-self-sign-scripts-18.6 0 18.6.2-r0
Chainguard gitlab-cfssl-self-sign-scripts-18.7 0 18.7.1-r0
Chainguard gitlab-cng-18.5 0 18.5.4-r0
Chainguard gitlab-cng-18.6 0 18.6.3-r0
Chainguard gitlab-cng-18.7 0 18.7.0-r0
Chainguard gitlab-cng-fips-18.5 0 18.5.4-r1
Chainguard gitlab-cng-fips-18.6 0 18.6.3-r0
Chainguard gitlab-cng-fips-18.7 0 18.7.1-r0
Chainguard gitlab-container-registry-18.5 0 18.5.4-r0
Chainguard gitlab-container-registry-18.6 0 18.6.2-r0
Chainguard gitlab-container-registry-18.7 0 18.7.0-r0
Chainguard gitlab-container-registry-fips-18.5 0 18.5.4-r1
Chainguard gitlab-container-registry-fips-18.6 0 18.6.2-r1
Chainguard gitlab-container-registry-fips-18.7 0 18.7.0-r0
Chainguard gitlab-container-registry-scripts-18.5 0 18.5.4-r0
Chainguard gitlab-container-registry-scripts-18.6 0 18.6.2-r0
Chainguard gitlab-container-registry-scripts-18.7 0 18.7.0-r0
Chainguard gitlab-exporter-18.5 0 18.5.4-r0
Chainguard gitlab-exporter-18.6 0 18.6.2-r0
Chainguard gitlab-exporter-18.7 0 18.7.0-r0
Chainguard gitlab-exporter-scripts-18.5 0 18.5.4-r0
Chainguard gitlab-exporter-scripts-18.6 0 18.6.2-r0
Chainguard gitlab-exporter-scripts-18.7 0 18.7.0-r0
Chainguard gitlab-gitaly-scripts-18.5 0 18.5.5-r0
Chainguard gitlab-gitaly-scripts-18.6 0 18.6.2-r0
Chainguard gitlab-gitaly-scripts-18.7 0 18.7.0-r0
Chainguard gitlab-logger-18.5 0 18.5.5-r0
Chainguard gitlab-logger-18.6 0 18.6.2-r0
Chainguard gitlab-logger-18.7 0 18.7.0-r0
Chainguard gitlab-logger-fips-18.5 0 18.5.4-r1
Chainguard gitlab-logger-fips-18.6 0 18.6.2-r1
Chainguard gitlab-logger-fips-18.7 0 18.7.0-r0
Chainguard gitlab-pages-scripts-18.5 0 18.5.5-r0
Chainguard gitlab-pages-scripts-18.6 0 18.6.2-r0
Chainguard gitlab-pages-scripts-18.7 0 18.7.0-r0
Chainguard gitlab-rails-scripts-18.5 0 18.5.5-r0
Chainguard gitlab-rails-scripts-18.6 0 18.6.3-r0
Chainguard gitlab-rails-scripts-18.7 0 18.7.1-r0
Chainguard gitlab-rails-scripts-fips-18.5 0 18.5.4-r1
Chainguard gitlab-rails-scripts-fips-18.6 0 18.6.2-r1
Chainguard gitlab-rails-scripts-fips-18.7 0 18.7.0-r0
Chainguard gitlab-shell-18.5 0 18.5.5-r0
Chainguard gitlab-shell-18.6 0 18.6.2-r0
Chainguard gitlab-shell-18.7 0 18.7.1-r0
Chainguard gitlab-shell-fips-18.5 0 18.5.4-r1
Chainguard gitlab-shell-fips-18.6 0 18.6.2-r1
Chainguard gitlab-shell-fips-18.7 0 18.7.1-r0
Chainguard gitlab-shell-scripts-18.5 0 18.5.5-r0
Chainguard gitlab-shell-scripts-18.6 0 18.6.2-r0
Chainguard gitlab-shell-scripts-18.7 0 18.7.0-r0
Chainguard gitlab-sidekiq-ce-18.5 0 18.5.4-r0
Chainguard gitlab-sidekiq-ce-18.6 0 18.6.2-r0
Chainguard gitlab-sidekiq-ce-18.7 0 18.7.0-r0
Chainguard gitlab-sidekiq-ce-fips-18.5 0 18.5.4-r1
Chainguard gitlab-sidekiq-ce-fips-18.6 0 18.6.2-r1
Chainguard gitlab-sidekiq-ce-fips-18.7 0 18.7.1-r0
Chainguard gitlab-toolbox-ce-18.5 0 18.5.5-r0
Chainguard gitlab-toolbox-ce-18.6 0 18.6.3-r0
Chainguard gitlab-toolbox-ce-18.7 0 18.7.1-r0
Chainguard gitlab-toolbox-ce-fips-18.5 0 18.5.5-r0
Chainguard gitlab-toolbox-ce-fips-18.6 0 18.6.3-r0
Chainguard gitlab-toolbox-ce-fips-18.7 0 18.7.1-r0
Chainguard gitlab-webservice-ce-18.5 0 18.5.5-r0
Chainguard gitlab-webservice-ce-18.6 0 18.6.2-r0
Chainguard gitlab-webservice-ce-18.7 0 18.7.0-r0
Chainguard gitlab-webservice-ce-fips-18.5 0 18.5.4-r1
Chainguard gitlab-webservice-ce-fips-18.6 0 18.6.3-r0
Chainguard gitlab-webservice-ce-fips-18.7 0 18.7.1-r0
Chainguard gitlab-workhorse-scripts-18.5 0 18.5.5-r0
Chainguard gitlab-workhorse-scripts-18.6 0 18.6.2-r0
Chainguard gitlab-workhorse-scripts-18.7 0 18.7.0-r0
Chainguard gitlab-workhorse-scripts-fips-18.5 0 18.5.4-r1
Chainguard gitlab-workhorse-scripts-fips-18.6 0 18.6.3-r0
Chainguard gitlab-workhorse-scripts-fips-18.7 0 18.7.0-r0
Chainguard kubeflow-pipelines-visualization-server 0 2.15.0-r1
Chainguard open-webui 0 0.6.43-r1
Chainguard open-webui-compat 0 0.6.43-r0
Chainguard py3-cassandra-medusa 0 0.26.0-r3
Chainguard py3-cassandra-medusa-compat 0 0.26.0-r2
Chainguard py3-cassandra-medusa-compat 0 0.26.0-r3
Chainguard py3-vllm-cuda-12.4 0 0.13.0-r1
Chainguard py3.10-vllm-cuda-12.4 0 0.16.0-r1
Chainguard py3.11-text-generation-inference 0 3.3.7-r2
Chainguard py3.12-vllm-cuda-12.4 0 0.16.0-r1
Chainguard request-1276 0 0.27.0-r1
Chainguard request-1276-compat 0 0.27.0-r1
Chainguard text-generation-inference 0 3.3.7-r2
Chainguard text-generation-inference-compat 0 3.3.7-r2
Chainguard tritonserver-backend-vllm-cuda-12.9 0 25.9.0_git20251112-r7
Chainguard tritonserver-backend-vllm-meta-cuda-12.9 0 25.9.0_git20251112-r4
SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP4 python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Module for Python 3 15 SP7 python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Server 15 SP4-LTSS python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Server 15 SP5-LTSS python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Server 15 SP6-LTSS python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP4 python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 python-aiohttp 0 3.9.3-150400.10.36.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 python-aiohttp 0 3.9.3-150400.10.36.1
Wolfi airflow-3-compat 0 3.1.5-r1
Wolfi airflow-3-iamguarded-compat 0 3.1.5-r1
Wolfi checkov 0 3.2.499-r0
Wolfi dask-kubernetes 0 2025.7.0-r4
Wolfi kubeflow-pipelines-visualization-server 0 2.15.0-r1
Wolfi open-webui 0 0.6.43-r1
Wolfi open-webui-compat 0 0.6.43-r0
Wolfi py3-cassandra-medusa 0 0.26.0-r3
Wolfi py3-cassandra-medusa-compat 0 0.26.0-r2
Wolfi py3-cassandra-medusa-compat 0 0.26.0-r3
openSUSE:Leap 15.6 python-aiohttp 0 3.9.3-150400.10.36.1
openSUSE:Leap 16.0 python-Brotli 0 1.1.0-160000.3.1
openSUSE:Leap 16.0 python-aiohttp 0 3.11.16-160000.3.1
openSUSE:Tumbleweed python-aiohttp 0 3.13.3-1.1

Related vulnerabilities