Description
@astrojs/node allows Astro to deploy your SSR site to Node targets. Prior to 10.0.5, requesting a static js/css resources from _astro path with an incorrect/malformed if-match header returns a 500 error with a one year cache lifetime instead of 412 in some cases. This has the effect that all subsequent requests to that file, regardless of if-match header will be served a 5xx error instead of the file until the cache expires. This vulnerability is fixed in 10.0.5.
Published: 2026-04-24
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Cache Poisoning and Denial of Service
Action: Update Astro to 10.0.5
AI Analysis

Impact

The Node adapter for Astro, @astrojs/node, mishandles requests that contain a malformed if-match header when fetching static JavaScript or CSS assets from the _astro path. Instead of returning the expected 412 Pre‑condition Failed response, the server issues a 500 Internal Server Error with a cache-control header that allows the error to be cached for one year. This cache poisoning causes every subsequent request to that asset—regardless of any subsequent if-match header—to be served the cached 500 response until the expiration period elapses. The practical effect is a denial of service for the affected resource and widespread availability degradation for the entire site.

Affected Systems

All installations using the withastro:astro framework with the Node adapter at a version earlier than 10.0.5 are susceptible. This includes any production or staging environment deploying SSR sites via @astrojs/node that have not applied the fix released in version 10.0.5.

Risk and Exploitability

The vulnerability carries a CVSS score of 5.3, indicating a moderate severity, and an EPSS score of less than 1 %, meaning the likelihood of exploitation in the wild is low. It is not listed in the CISA KEV catalog. Attackers can trigger the flaw by sending crafted HTTP requests with malformed if-match headers to an affected asset URL. No privileged authentication or code execution is required; the exploit is purely remote and functional. The primary consequence is the prolonged unavailability of the requested assets due to cached 500 responses.

Generated by OpenCVE AI on April 28, 2026 at 06:01 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the @astrojs/node adapter to version 10.0.5 or later to apply the vendor‑provided patch.
  • Configure the web server to validate if-match headers and return a client‑error status (e.g., 400 or 412) instead of a server‑error when the header is malformed, preventing a cacheable error response.
  • If the patch cannot be applied immediately, modify caching rules to prevent error responses from being stored or configure the cache to purge cached error responses as soon as they are returned.

Generated by OpenCVE AI on April 28, 2026 at 06:01 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-c57f-mm3j-27q9 Astro: Cache Poisoning due to incorrect error handling when if-match header is malformed
History

Mon, 27 Apr 2026 20:45:00 +0000

Type Values Removed Values Added
First Time appeared Withastro
Withastro astro
Vendors & Products Withastro
Withastro astro

Sat, 25 Apr 2026 03:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 24 Apr 2026 17:30:00 +0000

Type Values Removed Values Added
Description @astrojs/node allows Astro to deploy your SSR site to Node targets. Prior to 10.0.5, requesting a static js/css resources from _astro path with an incorrect/malformed if-match header returns a 500 error with a one year cache lifetime instead of 412 in some cases. This has the effect that all subsequent requests to that file, regardless of if-match header will be served a 5xx error instead of the file until the cache expires. This vulnerability is fixed in 10.0.5.
Title @astrojs/node: Cache Poisoning due to incorrect error handling when if-match header is malformed
Weaknesses CWE-525
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-04-25T01:48:27.606Z

Reserved: 2026-04-20T14:01:46.671Z

Link: CVE-2026-41322

cve-icon Vulnrichment

Updated: 2026-04-25T01:48:22.954Z

cve-icon NVD

Status : Deferred

Published: 2026-04-24T18:16:28.923

Modified: 2026-04-27T18:53:00.053

Link: CVE-2026-41322

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-28T06:15:24Z

Weaknesses