CVE-2026-44453: h2o: alloca stack overflow crashes server on request

HIGH
Published July 16, 2026
CISO Take

h2o, a C-based HTTP/1.x/2/3 server sometimes deployed as a reverse proxy or static-file host in front of application backends, builds file paths on the stack via alloca() when serving static files; a crafted request path can force an allocation up to ~600KB, which exceeds the 128KB default pthread stack size under musl libc (common in Alpine-based containers), crashing the process with a segfault when it hits the guard page. This is a remotely triggerable, unauthenticated, single-request denial of service (CVSS 7.5, AV:N/AC:L/PR:N/UI:N) with no confidentiality or integrity impact — but EPSS is very low (0.278%), it is not in CISA KEV, and no public exploit or scanner template exists, so near-term mass exploitation is unlikely. Note for this platform: "h2o" here is the h2o.examp1e.net / github.com/h2o/h2o HTTP server, an unrelated project to H2O.ai's machine-learning library of the same name that we track as an AI package — this CVE has no inherent AI/ML-specific attack surface; it only matters to AI teams that happen to run h2o as a reverse proxy or static-asset server in front of an inference API, RAG UI, or agent dashboard on musl/Alpine containers. Patch to the fix at commit 6b5370d, or as a stopgap increase the pthread stack size (or avoid musl/Alpine deployments of h2o) until upgraded, and monitor for repeated SIGSEGV crash-loops on the h2o process as a detection signal.

Sources: NVD EPSS GitHub Advisory

What is the risk?

Network-exploitable, unauthenticated, zero-click denial of service against availability only (no confidentiality/integrity impact). Exploitability is technically trivial once the alloca path-building behavior is understood (a single oversized static-file path request), but real-world urgency is dampened by very low EPSS (0.278%), absence from CISA KEV, and no known public exploit or Nuclei template. Impact is bounded to the h2o process crashing (service interruption/restart), not data compromise. This is a generic infrastructure bug, not an AI-specific vulnerability — its relevance to AI/ML systems depends entirely on deployment choice (h2o as reverse proxy/static host on musl-based containers) rather than anything inherent to model, agent, or pipeline logic.

How does the attack unfold?

Reconnaissance
Adversary fingerprints a public-facing service and identifies it is served by h2o, potentially fronting an AI inference API or dashboard.
AML.T0006
Exploitation
Adversary sends a single unauthenticated HTTP request with an oversized static-file path, forcing h2o's alloca() call to exceed the process's pthread stack size.
AML.T0049
Impact
h2o worker process segfaults on the stack guard page, crashing and disrupting availability of the AI service or application behind it.
AML.T0029

How severe is it?

CVSS 3.1
7.5 / 10
EPSS
0.5%
chance of exploitation in 30 days
Higher than 41% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Trivial

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR None
UI None
S Unchanged
C None
I None
A High

What should I do?

1 step
  1. 1) Upgrade h2o to a version that includes the fix at commit 6b5370d (post prior-to-fix state described in the advisory). 2) If immediate upgrade isn't possible, increase the default pthread stack size used by the runtime (particularly relevant on musl libc / Alpine Linux, where the default 128KB is far below the ~600KB alloca can request) or avoid musl-based base images for h2o deployments until patched. 3) Where feasible, restrict or normalize static-file path length/depth at a front-end load balancer or WAF to reduce the chance of triggering the oversized alloca. 4) Detection: monitor for h2o process crash-loops / SIGSEGV signals in container orchestration logs (Kubernetes restart counts, systemd crash logs) as an indicator of attempted or accidental triggering. 5) Confirm via h2o --version or package manifest whether any AI-facing reverse proxy or static-asset host in your stack runs h2o, since this is not one of the AI packages in our catalog and won't be auto-flagged by dependency scanners focused on ML libraries.

What does CISA's SSVC say?

Decision Track
Exploitation none
Automatable Yes
Technical Impact partial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

NIST AI RMF
MANAGE 4.1 - AI system availability and resilience monitoring

Frequently Asked Questions

What is CVE-2026-44453?

h2o, a C-based HTTP/1.x/2/3 server sometimes deployed as a reverse proxy or static-file host in front of application backends, builds file paths on the stack via alloca() when serving static files; a crafted request path can force an allocation up to ~600KB, which exceeds the 128KB default pthread stack size under musl libc (common in Alpine-based containers), crashing the process with a segfault when it hits the guard page. This is a remotely triggerable, unauthenticated, single-request denial of service (CVSS 7.5, AV:N/AC:L/PR:N/UI:N) with no confidentiality or integrity impact — but EPSS is very low (0.278%), it is not in CISA KEV, and no public exploit or scanner template exists, so near-term mass exploitation is unlikely. Note for this platform: "h2o" here is the h2o.examp1e.net / github.com/h2o/h2o HTTP server, an unrelated project to H2O.ai's machine-learning library of the same name that we track as an AI package — this CVE has no inherent AI/ML-specific attack surface; it only matters to AI teams that happen to run h2o as a reverse proxy or static-asset server in front of an inference API, RAG UI, or agent dashboard on musl/Alpine containers. Patch to the fix at commit 6b5370d, or as a stopgap increase the pthread stack size (or avoid musl/Alpine deployments of h2o) until upgraded, and monitor for repeated SIGSEGV crash-loops on the h2o process as a detection signal.

Is CVE-2026-44453 actively exploited?

No confirmed active exploitation of CVE-2026-44453 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-44453?

1) Upgrade h2o to a version that includes the fix at commit 6b5370d (post prior-to-fix state described in the advisory). 2) If immediate upgrade isn't possible, increase the default pthread stack size used by the runtime (particularly relevant on musl libc / Alpine Linux, where the default 128KB is far below the ~600KB alloca can request) or avoid musl-based base images for h2o deployments until patched. 3) Where feasible, restrict or normalize static-file path length/depth at a front-end load balancer or WAF to reduce the chance of triggering the oversized alloca. 4) Detection: monitor for h2o process crash-loops / SIGSEGV signals in container orchestration logs (Kubernetes restart counts, systemd crash logs) as an indicator of attempted or accidental triggering. 5) Confirm via `h2o --version` or package manifest whether any AI-facing reverse proxy or static-asset host in your stack runs h2o, since this is not one of the AI packages in our catalog and won't be auto-flagged by dependency scanners focused on ML libraries.

What systems are affected by CVE-2026-44453?

This vulnerability affects the following AI/ML architecture patterns: model serving, agent frameworks.

What is the CVSS score for CVE-2026-44453?

CVE-2026-44453 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 0.49%.

What is the AI security impact?

Affected AI Architectures

model servingagent frameworks

MITRE ATLAS Techniques

AML.T0029 Denial of AI Service
AML.T0049 Exploit Public-Facing Application

Compliance Controls Affected

NIST AI RMF: MANAGE 4.1

What are the technical details?

Original Advisory

h2o is an HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3. Prior to commit 6b5370d, h2o is vulnerable to a Denial of Service attack when calling alloca under certain conditions. When serving static files, h2o builds the file path on stack, by calling alloca. The maximum size of the memory allocated using alloca can be as huge as ~600KB, which exceeds the default pthread stack size used by musl libc (128KB). If the amount of memory allocated by alloca exceeds the stack size, the h2o server crashes with a segmentation fault, while it tries to touch the guard page. This issue has been fixed by commit 6b5370d.

Exploitation Scenario

An adversary identifies that an AI inference API, RAG front-end, or model-hosting static-asset server sits behind h2o running on a musl-libc/Alpine container (e.g., discovered via HTTP response fingerprinting or Server header). The adversary sends a single crafted HTTP request with an unusually long/deep static file path, causing h2o's static-file handler to call alloca() with a size approaching 600KB. Because the container's default pthread stack (128KB under musl) is far smaller than the requested allocation, the process touches the stack guard page and segfaults, crashing the h2o worker and disrupting availability of whatever AI service it fronts — with a single unauthenticated request and no interaction required.

Weaknesses (CWE)

CWE-770 — Allocation of Resources Without Limits or Throttling: The product allocates a reusable resource or group of resources on behalf of an actor without imposing any intended restrictions on the size or number of resources that can be allocated.

  • [Requirements] Clearly specify the minimum and maximum expectations for capabilities, and dictate which behaviors are acceptable when resource allocation reaches limits.
  • [Architecture and Design] Limit the amount of resources that are accessible to unprivileged users. Set per-user limits for resources. Allow the system administrator to define these limits. Be careful to avoid CWE-410.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Timeline

Published
July 16, 2026
Last Modified
August 6, 2026
First Seen
July 16, 2026

Related Vulnerabilities