Astro is a web framework for content-driven websites. In versions 1.0.0 through 4.0.18, the source.title and enclosure.type item fields in packages/astro-rss/src/index.ts are interpolated directly into XML template strings without XML-character escaping before being parsed by fast-xml-parser. Both fields are validated only as z.string(), placing no restriction on XML special characters. An attacker who controls these values can inject arbitrary XML into the generated RSS feed: a value containing " can break out of an attribute (as with enclosure.type), and a value containing </source> can close an element early and inject additional nodes (as with source.title). This corrupts feed structure, injects false metadata (for example, a fake <link> pointing to a malicious URL), and can cause feed readers to misparse or display attacker-controlled content. In SSR mode (output: 'server'), the poisoned feed is served on every request to all subscribers. This issue has been fixed in version 4.0.19.
We have discovered 1,808 live websites that are affected by CVE-2026-59728.
| Product | |
| Category | Static Site Generator |
| Vulnerable Domains | 1,808 live websites (6.87% of Astro install base) |
| Vulnerable Versions |
|
| Vulnerable Versions Count | 159 versions ( 34% of all versions) |
| 1,058 websites | |
| 127 websites | |
| 65 websites | |
| 57 websites | |
| 53 websites | |
| 49 websites | |
| 25 websites | |
| 24 websites | |
| 22 websites | |
| 21 websites |
| .com | 832 websites |
| .de | 75 websites |
| .net | 65 websites |
| .com.au | 51 websites |
| .org | 49 websites |
| .co.uk | 42 websites |
| .it | 31 websites |
| .io | 28 websites |
| .nl | 28 websites |
| .fr | 26 websites |
| Domain | Country | Rank | Contacts |
|---|---|---|---|
| *****.net | *** | ||
| ******.com | **,*** | ||
| *************.com | **,*** | ||
| **********.com | **,*** | ||
| ********.net | **,*** | ||
| *********.com | **,*** | ||
| **********.com | ***,*** | ||
| ************.com | ***,*** | ||
| ***********.******.io | ***,*** | ||
| ***********.com | ***,*** |
FAQ