Cloudanix VulnDB

CVE-2025-69228

High · 7.5

AIOHTTP vulnerable to denial of service through large payloads

CVSS

7.5

EPSS

0.4%

Published

Jan 5, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A malicious web request can make affected aiohttp-based services run out of memory and stop responding.

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 flaw allows a remote client to send a specially crafted HTTP request to an aiohttp-based server that causes memory consumption to grow without adequate bounds during request processing. Successful exploitation can exhaust process or host memory, trigger Python MemoryError exceptions, invoke the Linux out-of-memory killer, crash worker processes, or make the service unresponsive. The impact is denial of service rather than code execution or data disclosure based on the available advisory details.

Why it matters to the business

Publicly reachable services built with vulnerable aiohttp versions can be taken offline by malicious or malformed traffic, causing application outages, failed API calls, degraded customer experience, and possible cascading failures in dependent services. The CVSS score is high at 7.5, but the currently reported EPSS is low and there is no known CISA KEV listing or ransomware association, so remediation should be prioritized for internet-facing and business-critical aiohttp services rather than treated as confirmed active mass exploitation.

How an attack unfolds

An attacker first identifies an HTTP service implemented with a vulnerable aiohttp release, commonly through service fingerprinting, response behavior, dependency knowledge, or probing application endpoints. The attacker then sends one or more crafted requests that trigger the vulnerable request-processing path. During parsing or handling, the server allocates memory in an uncontrolled way and does not release it quickly enough to remain stable. Repeated requests or concurrent connections can increase memory pressure until the aiohttp process slows, raises allocation failures, is terminated by the operating system, or causes the host/container to become resource-starved. The attacker does not need valid credentials if the vulnerable endpoint is reachable before authentication or if request parsing occurs prior to application-level authorization.

How to fix it

Upgrade affected aiohttp packages to a fixed release or vendor package containing the upstream fix. For Debian 12 and Debian 13 systems using the affected packaged component, update to version 5.18.5-1 or later as provided by the distribution. For source or Git-based aiohttp deployments, ensure the code includes upstream commit 41f01ed680b7efc8f97677df45731b80328aad6c or a later release containing that fix. Rebuild and redeploy containers, virtual environments, and application bundles that vendor or pin aiohttp. As compensating controls, enforce request size limits at a reverse proxy or load balancer, configure header/body/time limits, apply connection and per-IP rate limiting, set container or service memory limits with safe restart policies, and isolate critical services so one exhausted worker cannot starve unrelated workloads.

How to confirm the fix worked

Inventory running applications and images for aiohttp, including Python virtual environments, lockfiles, SBOMs, container layers, and distribution packages. Confirm the installed Debian package version is 5.18.5-1 or later where applicable, or that source builds contain commit 41f01ed680b7efc8f97677df45731b80328aad6c or a later fixed release. Validate that redeployed services are actually running the patched dependency by checking runtime package metadata, not only repository manifests. Perform controlled negative testing in a non-production environment using malformed and boundary-size HTTP requests while monitoring process resident memory, container memory, request latency, and crash/restart behavior. Confirm reverse proxy request limits, rate limits, and timeout settings reject abusive requests before they reach aiohttp.

Typical attack path

  1. Discover an HTTP service that appears to use aiohttp or a downstream package using aiohttp.
  2. Confirm the service accepts externally supplied HTTP requests to vulnerable request-processing paths.
  3. Send a crafted malformed or oversized request pattern that triggers excessive memory allocation in aiohttp.
  4. Repeat the request or open concurrent connections to accelerate memory exhaustion.
  5. Observe increased latency, connection failures, worker restarts, container restarts, or HTTP 5xx responses as the service becomes unavailable.
  6. Continue traffic to keep the service degraded until patched, rate-limited, restarted, or otherwise protected.

How to detect it

To determine whether exploitation may have already occurred, review web server, reverse proxy, aiohttp application, container runtime, system, and orchestration logs for time-correlated memory exhaustion and malformed request activity. Focus on unexplained spikes in process RSS/container memory, sudden worker exits, Python MemoryError exceptions, kernel OOM-killer events, pod or container restarts, and bursts of 4xx/5xx responses from the same source networks. In aiohttp access logs and upstream proxy logs, look for repeated unusual requests with very large headers or bodies, abnormal transfer encodings, incomplete requests, long request durations, high concurrency from a small number of IPs, and requests rejected due to size or header limits. Because no public exploit-specific payload indicator is provided, treat detection as behavioral: correlate abnormal request patterns with resource exhaustion events affecting aiohttp processes.

  • MemoryError
  • Cannot allocate memory
  • Out of memory
  • oom-killer
  • Killed process
  • invoked oom-killer
  • Container killed due to memory usage
  • OOMKilled
  • ExitCode: 137
  • RestartCount
  • aiohttp.server
  • aiohttp.access
  • aiohttp.web_protocol
  • asyncio.exceptions
  • ConnectionResetError
  • BadStatusLine
  • LineTooLong
  • Request Entity Too Large
  • HTTP 413
  • HTTP 414
  • HTTP 431
  • HTTP 500
  • HTTP 502
  • HTTP 503

What your security team should do

  • Prioritize patching internet-facing, unauthenticated, and high-traffic aiohttp services first.
  • Search application repositories, dependency lockfiles, container images, and host package inventories for vulnerable aiohttp installations.
  • Update Debian 12 and Debian 13 packages to 5.18.5-1 or later, and update source-based deployments to include commit 41f01ed680b7efc8f97677df45731b80328aad6c or a later fixed release.
  • Rebuild and redeploy all containers and serverless/application artifacts that bundle aiohttp rather than relying only on host-level package updates.
  • Place aiohttp services behind reverse proxies or gateways with strict request body, header, timeout, connection, and per-client rate limits.
  • Add monitoring and alerting for abnormal memory growth, worker restarts, OOM kills, spikes in HTTP 400/413/414/431/500/502/503 responses, and unusual request concurrency.
  • Review recent logs for signs of memory exhaustion or repeated malformed request traffic, especially against public endpoints.
  • Document compensating controls and schedule permanent dependency upgrades where immediate patching is blocked.

The record

A request can be crafted in such a way that an aiohttp server's memory fills up uncontrollably during processing.

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-r19
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