fast-xml-parser has an entity encoding bypass via regex injection in DOCTYPE entity names
Exploitation and risk
Source statusCISA KEV lists vulnerabilities known to be exploited. FIRST EPSS estimates the likelihood of exploitation in the next 30 days. An unavailable score does not mean zero risk.
Which CVEs have scores here?
This view includes predictions for CVE identifiers explicitly listed in public NuGet advisories. Microsoft release pages have their own prediction coverage. Check source status for the scope and latest checks.
No exploitation or prediction data is available here for these CVEs. This does not mean they are safe or unlikely to be exploited.
cve-program · CVE-2026-25896
Publishedfast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from JS object without C/C++ based libraries and no callback. From 4.1.3to before 5.3.5, a dot (.) in a DOCTYPE entity name is treated as a regex wildcard during entity replacement, allowing an attacker to shadow built-in XML entities (<, >, &, ", ') with arbitrary values. This bypasses entity encoding and leads to XSS when parsed output is rendered. This vulnerability is fixed in 5.3.5.
- Source published
- 20 Feb 2026 20:57:48 UTC
- Source modified
- 10 Sep 2026 12:04:52 UTC
- Saved here
- 23 Oct 2026 15:48:27 UTC
- Source terms
- CVE Program Terms of Use
Original source record · Cite this exact observation · Complete original publisher JSON
Source: cve-program · CVE Program Terms of Use. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS 3.1 · 9.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N
euvd · EUVD-2026-7529
Publishedfast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from JS object without C/C++ based libraries and no callback. From 4.1.3to before 5.3.5, a dot (.) in a DOCTYPE entity name is treated as a regex wildcard during entity replacement, allowing an attacker to shadow built-in XML entities (<, >, &, ", ') with arbitrary values. This bypasses entity encoding and leads to XSS when parsed output is rendered. This vulnerability is fixed in 5.3.5.
Additional publisher context
EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON.
Original publisher date fields
datePublished: Feb 20, 2026, 8:57:48 PM
dateUpdated: Sep 10, 2026, 12:04:52 PM
9 related source bulletins · separate from aliases
RHSA-2026:7128: Red Hat Security Advisory: RHACS 4.9.5 security and bug fix update
CVE-2026-25128 · CVE-2026-25535 · CVE-2026-25755 · CVE-2026-25896 · CVE-2026-25940 · CVE-2026-26278 · CVE-2026-27942 · CVE-2026-31898 · CVE-2026-31938 · CVE-2026-33036 · CVE-2026-33186
RHSA-2026:6802: Red Hat Security Advisory: Red Hat Developer Hub 1.9.3 release.
CVE-2025-61140 · CVE-2025-69873 · CVE-2026-1615 · CVE-2026-2359 · CVE-2026-3304 · CVE-2026-3520 · CVE-2026-24046 · CVE-2026-25153 · CVE-2026-25639 · CVE-2026-25679 · CVE-2026-25896 · CVE-2026-26278 · CVE-2026-27606 · CVE-2026-27942 · CVE-2026-33186
RHSA-2026:6174: Red Hat Security Advisory: Red Hat Developer Hub 1.8.5 release.
CVE-2025-61140 · CVE-2026-2359 · CVE-2026-3304 · CVE-2026-3520 · CVE-2026-24046 · CVE-2026-25153 · CVE-2026-25639 · CVE-2026-25896 · CVE-2026-26278 · CVE-2026-27606 · CVE-2026-27942 · CVE-2026-33186
RHSA-2026:41941: Red Hat Security Advisory: Red Hat OpenShift Data Foundation 4.18.25 security, enhancement & bug fix update
CVE-2025-12816 · CVE-2025-13465 · CVE-2025-15284 · CVE-2025-47907 · CVE-2025-58183 · CVE-2025-61726 · CVE-2025-61729 · CVE-2025-66031 · CVE-2025-68157 · CVE-2025-68458 · CVE-2025-69873 · CVE-2026-4800 · CVE-2026-25896 · CVE-2026-26278 · CVE-2026-26996 · CVE-2026-27904 · CVE-2026-27942 · CVE-2026-29063 · CVE-2026-33036 · CVE-2026-33186 · CVE-2026-34986 · CVE-2026-48779
RHSA-2026:7110: Red Hat Security Advisory: RHACS 4.8.10 security and bug fix update
CVE-2026-25128 · CVE-2026-25535 · CVE-2026-25755 · CVE-2026-25896 · CVE-2026-25940 · CVE-2026-26278 · CVE-2026-27942 · CVE-2026-29074 · CVE-2026-31898 · CVE-2026-31938 · CVE-2026-33036 · CVE-2026-33186
RHSA-2026:40984: Red Hat Security Advisory: Red Hat OpenShift Data Foundation 4.20.15 security, enhancement & bug fix update
CVE-2025-12816 · CVE-2025-13465 · CVE-2025-15284 · CVE-2025-66031 · CVE-2025-68157 · CVE-2025-68458 · CVE-2025-69873 · CVE-2026-4800 · CVE-2026-22029 · CVE-2026-25128 · CVE-2026-25896 · CVE-2026-26278 · CVE-2026-26996 · CVE-2026-27904 · CVE-2026-27942 · CVE-2026-29063 · CVE-2026-33036 · CVE-2026-33186 · CVE-2026-33815 · CVE-2026-33816 · CVE-2026-34986 · CVE-2026-48779
sca-2026-0014: Fast-xml-parser vulnerabilities affect Sentio Creator Extension 'Device Manager'
CVE-2026-27942 · CVE-2026-25896 · CVE-2026-26278
RHSA-2026:51349: Red Hat Security Advisory: General availability of the satellite/iop-host-inventory-frontend-rhel9 container image
CVE-2026-13149 · CVE-2026-13676 · CVE-2026-25128 · CVE-2026-25896 · CVE-2026-26278 · CVE-2026-26996 · CVE-2026-27904 · CVE-2026-27942 · CVE-2026-33036 · CVE-2026-44990
RHSA-2026:41944: Red Hat Security Advisory: Red Hat OpenShift Data Foundation 4.19.20 security, enhancement & bug fix update
CVE-2025-12816 · CVE-2025-13465 · CVE-2025-15284 · CVE-2025-66031 · CVE-2025-68157 · CVE-2025-68458 · CVE-2025-69873 · CVE-2026-4800 · CVE-2026-25128 · CVE-2026-25896 · CVE-2026-26278 · CVE-2026-26996 · CVE-2026-27904 · CVE-2026-27942 · CVE-2026-29063 · CVE-2026-33036 · CVE-2026-33186 · CVE-2026-34986 · CVE-2026-48779
- Source published
- Feb 20, 2026, 8:57:48 PM (timezone not stated)
- Source modified
- Sep 10, 2026, 12:04:52 PM (timezone not stated)
- Saved here
- 13 Nov 2026 07:06:38 UTC
- Source terms
- ENISA EUVD · source terms and attribution apply
Original source record · Cite this exact observation · Complete original publisher JSON
Source: euvd · ENISA EUVD · source terms and attribution apply. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
EUVD CVSS 3.1 · 9.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N
nvd · CVE-2026-25896
Publishedfast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from JS object without C/C++ based libraries and no callback. From 4.1.3to before 5.3.5, a dot (.) in a DOCTYPE entity name is treated as a regex wildcard during entity replacement, allowing an attacker to shadow built-in XML entities (<, >, &, ", ') with arbitrary values. This bypasses entity encoding and leads to XSS when parsed output is rendered. This vulnerability is fixed in 5.3.5.
Additional publisher context
NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.
Source analysis status: Modified
Weakness classifications: CWE-185 · CWE-79
Original publisher date fields
published: 2026-02-20T21:19:27.470
lastModified: 2026-09-10T13:17:54.697
1 source CPE criteria · context only
- cpe:2.3:a:naturalintelligence:fast-xml-parser:*:*:*:*:*:*:*:*
The original JSON retains the logical configuration operators, exclusions and version bounds.
- Source published
- 20 Feb 2026 21:19:27 UTC
- Source modified
- 10 Sep 2026 13:17:54 UTC
- Saved here
- 25 Oct 2026 06:17:16 UTC
- Source terms
- NIST NVD usage terms; underlying source attribution retained
Original source record · Cite this exact observation · Complete original publisher JSON
Source: nvd · NIST NVD usage terms; underlying source attribution retained. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS 3.1 · [email protected] · Secondary · 9.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N
CVSS 3.1 · 0b0ca135-0b70-47e7-9f44-1890c2a1c46c · Secondary · 7.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
osv · GHSA-m7jm-9gc2-mpf2
Published# Entity encoding bypass via regex injection in DOCTYPE entity names ## Summary A dot (`.`) in a DOCTYPE entity name is treated as a regex wildcard during entity replacement, allowing an attacker to shadow built-in XML entities (`<`, `>`, `&`, `"`, `'`) with arbitrary values. This bypasses entity encoding and leads to XSS when parsed output is rendered. ## Details The fix for CVE-2023-34104 addressed some regex metacharacters in entity names but missed `.` (period), which is valid in XML names per the W3C spec. In `DocTypeReader.js`, entity names are passed directly to `RegExp()`: ```js entities[entityName] = { regx: RegExp(`&${entityName};`, "g"), val: val }; ``` An entity named `l.` produces the regex `/&l.;/g` where `.` matches **any character**, including the `t` in `<`. Since DOCTYPE entities are replaced before built-in entities, this shadows `<` entirely. The same issue exists in `OrderedObjParser.js:81` (`addExternalEntities`), and in the v6 codebase - `EntitiesParser.js` has a `validateEntityName` function with a character blacklist, but `.` is not included: ```js // v6 EntitiesParser.js line 96 const specialChar = "!?\\/[]$%{}^&*()<>|+"; // no dot ``` ## Shadowing all 5 built-in entities | Entity name | Regex created | Shadows | |---|---|---| | `l.` | `/&l.;/g` | `<` | | `g.` | `/&g.;/g` | `>` | | `am.` | `/&am.;/g` | `&` | | `quo.` | `/&quo.;/g` | `"` | | `apo.` | `/&apo.;/g` | `'` | ## PoC ```js const { XMLParser } = require("fast-xml-parser"); const xml = `<?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY l. "<img src=x onerror=alert(1)>"> ]> <root> <text>Hello <b>World</b></text> </root>`; const result = new XMLParser().parse(xml); console.log(result.root.text); // Hello <img src=x onerror=alert(1)>b>World<img src=x onerror=alert(1)>/b> ``` No special parser options needed - `processEntities: true` is the default. When an app renders `result.root.text` in a page (e.g. `innerHTML`, template interpolation, SSR), the injected `<img onerror>` fires. `&` can be shadowed too: ```js const xml2 = `<?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY am. "'; DROP TABLE users;--"> ]> <root>SELECT * FROM t WHERE name='O&Brien'</root>`; const r = new XMLParser().parse(xml2); console.log(r.root); // SELECT * FROM t WHERE name='O'; DROP TABLE users;--Brien' ``` ## Impact This is a complete bypass of XML entity encoding. Any application that parses untrusted XML and uses the output in HTML, SQL, or other injection-sensitive contexts is affected. - Default config, no special options - Attacker can replace any `<` / `>` / `&` / `"` / `'` with arbitrary strings - Direct XSS vector when parsed XML content is rendered in a page - v5 and v6 both affected ## Suggested fix Escape regex metacharacters before constructing the replacement regex: ```js const escaped = entityName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); entities[entityName] = { regx: RegExp(`&${escaped};`, "g"), val: val }; ``` For v6, add `.` to the blacklist in `validateEntityName`: ```js const specialChar = "!?\\/[].{}^&*()<>|+"; ``` ## Severity **CWE-185** (Incorrect Regular Expression) **CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N - 9.3 (CRITICAL)** Entity decoding is a fundamental trust boundary in XML processing. This completely undermines it with no preconditions.
- Source published
- 20 Feb 2026 18:23:54 UTC
- Source modified
- 10 Sep 2026 03:50:35 UTC
- Saved here
- 24 Oct 2026 13:17:17 UTC
- Source terms
- GitHub Advisory Database · CC-BY-4.0
Original source record · Cite this exact observation · Complete original publisher JSON
Source: osv · GitHub Advisory Database · CC-BY-4.0. The publisher's wording is preserved. ChangeIntel groups the information and labels changes. The JSON record includes additional source fields.
CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:N
Publisher rating · CRITICAL