
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-27729 is a memory exhaustion denial-of-service vulnerability in the Astro web framework's @astrojs/node adapter caused by the absence of a default request body size limit in server actions. Affecting versions 9.0.0 through 9.5.3, a single oversized POST request to a valid action endpoint can exhaust the Node.js process heap and crash the server. The vulnerability was disclosed on February 23, 2026, with a fix released in version 9.5.4. NVD assigns a CVSS v3.1 score of 7.5 (High), while the CNA (GitHub) scores it 5.9 (Medium) (GitHub Advisory, Feedly).
The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling): Astro's server actions automatically parse incoming request bodies (JSON or FormData) and buffer them entirely into memory with no size restriction before any validation occurs. The @astrojs/node adapter running in mode: 'standalone' creates an HTTP server with no body size protection, meaning the Node.js process heap can be exhausted by a single oversized request. Action endpoint names are discoverable from HTML <form> attributes on any public page, requiring no authentication or prior knowledge to target. A public proof-of-concept (crash-test.mjs) demonstrates the issue by sending a 125 MB JSON payload to /_actions/<name>, triggering a FATAL ERROR: Reached heap limit crash (GitHub Advisory, Patch Commit).
Successful exploitation results in a complete availability loss for the affected server process — there is no confidentiality or integrity impact. A single oversized POST request is sufficient to crash the Node.js server process on memory-constrained deployments; in containerized environments (e.g., Docker/Kubernetes), the automatic restart behavior means repeated requests create a persistent crash-restart loop, effectively rendering the service unavailable. Only SSR standalone deployments using Astro server actions are affected; statically generated sites are not vulnerable (GitHub Advisory, Feedly).
A functional proof-of-concept exploit is publicly available in the GitHub security advisory, consisting of a JavaScript script (crash-test.mjs) that sends a 125 MB JSON payload to a server action endpoint to trigger heap exhaustion. No authentication is required, and action endpoint names can be discovered from public HTML pages. There is no evidence of in-the-wild exploitation at this time, and the vulnerability is not listed in the CISA KEV catalog. The EPSS score is approximately 0.07% (GitHub Advisory, Feedly).
<form> elements with data-astro-action attributes or similar markers to identify valid server action endpoint names (e.g., echo, subscribe).@astrojs/node in standalone mode (versions 9.0.0–9.5.3) by checking response headers, error messages, or public package metadata.const payload = JSON.stringify({ data: 'A'.repeat(125 * 1024 * 1024) });await fetch('http://target.example.com/_actions/echo', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
body: payload,
});FATAL ERROR: Reached heap limit crash./_actions/<name> endpoints; repeated POST requests to action endpoints from the same or rotating source IPs in short succession.FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory; HTTP server access logs recording large Content-Length values or chunked transfer-encoded requests to /_actions/ paths.OOMKilled or rapid restart counts); abnormal memory usage spikes in process monitoring tools immediately before crashes.CrashLoopBackOff) correlated with inbound POST traffic to action endpoints (GitHub Advisory).The primary remediation is to upgrade @astrojs/node to version 9.5.4 or later, which introduces a default 1 MB body size limit for server actions and returns HTTP 413 (CONTENT_TOO_LARGE) for oversized requests (Release Notes, Patch Commit). As a temporary workaround prior to patching, configure a reverse proxy (e.g., nginx, Caddy) or load balancer in front of the Astro server to enforce request body size limits (e.g., client_max_body_size 1m; in nginx). Additionally, monitor for unexpected server restarts or crash loops as a signal of active exploitation attempts (Feedly).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."