Skip to content
Security & Trust

Astro Had Zero CVEs. Then It Got Three XSS Advisories in One Month.

Astro was the poster child for zero-CVE modern frameworks. Three cross-site scripting advisories just changed that math.

A
Adyog Research
· 6 min read
Share on X LinkedIn
Astro Had Zero CVEs. Then It Got Three XSS Advisories in One Month.
Key finding

Astro CVE count change: 0 → 3 XSS advisories (July 2026) (Source: GitHub Security Advisories (GHSA-f48w-9m4c-m7f5, CVE-2026-54298 and related))

The Clean Record Ends

Astro was one of a handful of modern web frameworks with a zero-CVE track record in WebPulse's security intelligence database. As of July 2026, that record is over. Three cross-site scripting advisories have been published in rapid succession, including one that is an incomplete fix for an earlier vulnerability.

0 → 3 XSS advisories (July 2026)
Astro CVE count change
Source: GitHub Security Advisories (GHSA-f48w-9m4c-m7f5, CVE-2026-54298 and related)

What the XSS Chain Looks Like

The first advisory, CVE-2026-54298, disclosed a cross-site scripting vulnerability via unescaped spread attribute names in Astro's server-side rendering. The fix added an INVALID_ATTR_NAME_CHAR guard to the addAttribute() function to drop attribute names containing dangerous characters. The problem: a second attribute-rendering path in renderHTMLElement() was not covered by that fix.

The follow-up advisory (GHSA-f48w-9m4c-m7f5) documents this incomplete remediation. A third advisory addresses XSS via unescaped transition directive values on hydrated islands — a separate rendering path, a separate injection vector, the same class of vulnerability.

All three are XSS. All three are in the server-side rendering pipeline. All three stem from the same root pattern: user-controlled or dynamic values passing through rendering functions without adequate escaping.

What This Does — and Doesn't — Mean

Three XSS advisories do not make Astro insecure. WordPress has accumulated over 18,000 CVEs. Astro has three. The WebPulse security score for Astro moved from 84.3 to — still 84.3. Three low-to-moderate severity XSS findings barely register against the scoring model's other dimensions: development velocity, community health, AI-readiness, maintenance cadence.

What the advisories do reveal is that the zero-CVE narrative was always a reflection of Astro's youth and small attack surface, not an inherent immunity to vulnerabilities. Every framework that gains adoption, adds features, and handles more rendering edge cases will eventually produce security findings. The question is not whether a framework will have CVEs. The question is how the project responds when they arrive.

Astro remains at 84.3 — three XSS advisories vs. 18,000+ WordPress CVEs
WebPulse score impact
Source: WebPulse Framework Intelligence (July 2026 data refresh)

The Incomplete Fix Pattern

The most instructive detail is the incomplete fix. CVE-2026-54298 was patched in addAttribute(). The same class of flaw in renderHTMLElement() was missed. This pattern — fixing the reported instance but not auditing for the same class of issue across the codebase — is one of the most common sources of follow-up vulnerabilities in any software project. It is also why security scoring should weight the response pattern, not just the count.

Astro's maintainers issued patches for all three advisories. The turnaround was fast. The project's small codebase and active maintainer base make it possible to respond at a speed that a project the size of WordPress structurally cannot match. That response velocity is itself a security property, and it is one that WebPulse's maintenance dimension captures.

What This Means for Framework Decisions

For teams that chose Astro partly because of its clean security record: the choice is still defensible. A framework that goes from zero to three XSS findings and patches all of them within days is demonstrating exactly the kind of security posture that matters more than a zero count. The frameworks to worry about are not the ones that get CVEs. They are the ones that get CVEs and take months to patch them — or never patch them at all because the plugin maintainer has abandoned the project.

CVEs in this analysis
CVE-2026-54298
Compare frameworks in this analysis
WordPress vs Astro
Share this insight