Public mode

No access to your tenant or devices. Every item links to its source. What this means

Sources need attention Customize Public modeDiscuss ChangeIntel on Discord

fast-xml-parser has an entity encoding bypass via regex injection in DOCTYPE entity names

CVSS 3.1 9.3 CRITICALEUVD CVSS 3.1 9.3 CVSS 3.1 · [email protected] · Secondary 9.3 CRITICALCVSS 3.1 · 0b0ca135-0b70-47e7-9f44-1890c2a1c46c · Secondary 7.1 HIGHCVSS_V3 Publisher rating CRITICALFixed by fast-xml-parser 5.3.5Fixed by fast-xml-parser 4.5.4KEV status unknown

cve-program · CVE-2026-25896

Published

fast-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.

Read the publisher's advisory

euvd · EUVD-2026-7529

Published

fast-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.

Read the publisher's advisory

nvd · CVE-2026-25896

Published

fast-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.

Read the publisher's advisory

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 (`&lt;`, `&gt;`, `&amp;`, `&quot;`, `&apos;`) 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 `&lt;`. Since DOCTYPE entities are replaced before built-in entities, this shadows `&lt;` 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` | `&lt;` | | `g.` | `/&g.;/g` | `&gt;` | | `am.` | `/&am.;/g` | `&amp;` | | `quo.` | `/&quo.;/g` | `&quot;` | | `apo.` | `/&apo.;/g` | `&apos;` | ## 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 &lt;b&gt;World&lt;/b&gt;</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. `&amp;` 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&amp;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 `&lt;` / `&gt;` / `&amp;` / `&quot;` / `&apos;` 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.

Read the publisher's advisory

Affected versions, risk and source history

cve-program · CVE-2026-25896

Published

fast-xml-parser

Vendor product

Publisher's version information

Shown as published. These rules are not interpreted as NuGet package version ranges.

{
                    "vendor": "NaturalIntelligence",
                    "product": "fast-xml-parser",
                    "versions": [
                        {
                            "version": ">= 5.0.0, < 5.3.5",
                            "status": "affected"
                        },
                        {
                            "version": ">= 4.1.3, < 4.5.4",
                            "status": "affected"
                        }
                    ]
                }

Original source record · Cite this exact observation · Complete original publisher JSON

euvd · EUVD-2026-7529

Published

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

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

nvd · CVE-2026-25896

Published

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.

No normalized affected-package data is projected for this source revision. The original publisher record may contain additional product and version evidence; this does not establish that a package is unaffected.

Original source record · Cite this exact observation · Complete original publisher JSON

osv · GHSA-m7jm-9gc2-mpf2

Published

fast-xml-parser

npm

SEMVER · introduced 5.0.0 → fixed 5.3.5

fast-xml-parser

npm

SEMVER · introduced 4.1.3 → fixed 4.5.4

Original source record · Cite this exact observation · Complete original publisher JSON

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 15 Nov 04:55 UTC · 250 of 275 readable · 246 fully read · documentation 468/469 current