CVE-2026-44453: h2o: alloca stack overflow crashes server on request
HIGHh2o, 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.
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?
How severe is it?
What is the attack surface?
What should I do?
1 step-
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 --versionor 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?
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:
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
MITRE ATLAS Techniques
AML.T0029 Denial of AI Service AML.T0049 Exploit Public-Facing Application Compliance Controls Affected
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
Primary
CWE-789 Memory Allocation with Excessive Size Value
Primary
CWE-770 Allocation of Resources Without Limits or Throttling CWE-789 Memory Allocation with Excessive Size Value 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 References
Timeline
Related Vulnerabilities
CVE-2026-33660 10.0 TensorFlow: type confusion NPD in tensor conversion
Same attack type: DoS CVE-2022-35939 9.8 TensorFlow: ScatterNd OOB write enables RCE/crash
Same attack type: DoS CVE-2022-23587 9.8 TensorFlow: integer overflow in Grappler enables RCE
Same attack type: DoS CVE-2022-41900 9.8 TensorFlow: heap OOB RCE in FractionalMaxPool op
Same attack type: DoS CVE-2023-25668 9.8 TensorFlow: unauthenticated RCE via heap buffer overflow
Same attack type: DoS