CVE-2026-26278
fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)
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. In versions 4.1.3 through 5.3.5, the XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application. Version 5.3.6 fixes the issue. As a workaround, avoid using DOCTYPE parsing by processEntities: false option.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)
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. In versions 4.1.3 through 5.3.5, the XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application. Version 5.3.6 fixes the issue. As a workaround, avoid using DOCTYPE parsing by processEntities: false option.
- Record
CVE-2026-26278- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-776, CWE-776
- Updated
- 2026-11-02
EUVDEUVD-2026-7970
7.5
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. In versions 4.1.3 through 5.3.5, the XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application. Version 5.3.6 fixes the issue. As a workaround, avoid using DOCTYPE parsing by processEntities: false option.
- Record
EUVD-2026-7970- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jmr7-xgp7-cmfj
7.5
fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)
Summary
The XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application.
Details
There is a check in DocTypeReader.js that tries to prevent entity expansion attacks by rejecting entities that reference other entities (it looks for & inside entity values). This does stop classic “Billion Laughs” payloads.
However, it doesn’t stop a much simpler variant.
If you define one large entity that contains only raw text (no & characters) and then reference it many times, the parser will happily expand it every time. There is no limit on how large the expanded result can become, or how many replacements are allowed.
The problem is in replaceEntitiesValue() inside OrderedObjParser.js. It repeatedly runs val.replace() in a loop, without any checks on total output size or execution cost. As the entity grows or the number of references increases, parsing time explodes.
Relevant code:
DocTypeReader.js (lines 28–33): entity registration only checks for &
OrderedObjParser.js (lines 439–458): entity replacement loop with no limits
PoC
const { XMLParser } = require('fast-xml-parser');
const entity = 'A'.repeat(1000);
const refs = '&big;'.repeat(100);
const xml = `<!DOCTYPE foo [<!ENTITY big "${entity}">]><root>${refs}</root>`;
console.time('parse');
new XMLParser().parse(xml); // ~4–8 seconds for ~1.3 KB of XML
console.timeEnd('parse');
// 5,000 chars × 100 refs takes 200+ seconds
// 50,000 chars × 1,000 refs will hang indefinitely
Impact
This is a straightforward denial-of-service issue.
Any service that parses user-supplied XML using the default configuration is vulnerable. Since Node.js runs on a single thread, the moment the parser starts expanding entities, the event loop is blocked. While this is happening, the server can’t handle any other requests.
In testing, a payload of only a few kilobytes was enough to make a simple HTTP server completely unresponsive for several minutes, with all other requests timing out.
Workaround
Avoid using DOCTYPE parsing by processEntities: false option.
- Record
GHSA-jmr7-xgp7-cmfj- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-776
- Updated
- 2026-11-02
NVD
7.5
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. In versions 4.1.3 through 5.3.5, the XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application. Version 5.3.6 fixes the issue. As a workaround, avoid using DOCTYPE parsing by processEntities: false option.
- Record
CVE-2026-26278- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-776
- Updated
- 2026-11-02
OSV
7.5
fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)
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. In versions 4.1.3 through 5.3.5, the XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application. Version 5.3.6 fixes the issue. As a workaround, avoid using DOCTYPE parsing by processEntities: false option.
- Record
CVE-2026-26278- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-776
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-26278
7.5
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. In versions 4.1.3 through 5.3.5, the XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application. Version 5.3.6 fixes the issue. As a workaround, avoid using DOCTYPE parsing by processEntities: false option.
- Record
DEBIAN-CVE-2026-26278- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 11 moreShow less
OSVGHSA-jmr7-xgp7-cmfj
7.5
fast-xml-parser affected by DoS through entity expansion in DOCTYPE (no expansion limit)
Summary
The XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application.
Details
There is a check in DocTypeReader.js that tries to prevent entity expansion attacks by rejecting entities that reference other entities (it looks for & inside entity values). This does stop classic “Billion Laughs” payloads.
However, it doesn’t stop a much simpler variant.
If you define one large entity that contains only raw text (no & characters) and then reference it many times, the parser will happily expand it every time. There is no limit on how large the expanded result can become, or how many replacements are allowed.
The problem is in replaceEntitiesValue() inside OrderedObjParser.js. It repeatedly runs val.replace() in a loop, without any checks on total output size or execution cost. As the entity grows or the number of references increases, parsing time explodes.
Relevant code:
DocTypeReader.js (lines 28–33): entity registration only checks for &
OrderedObjParser.js (lines 439–458): entity replacement loop with no limits
PoC
const { XMLParser } = require('fast-xml-parser');
const entity = 'A'.repeat(1000);
const refs = '&big;'.repeat(100);
const xml = `<!DOCTYPE foo [<!ENTITY big "${entity}">]><root>${refs}</root>`;
console.time('parse');
new XMLParser().parse(xml); // ~4–8 seconds for ~1.3 KB of XML
console.timeEnd('parse');
// 5,000 chars × 100 refs takes 200+ seconds
// 50,000 chars × 1,000 refs will hang indefinitely
Impact
This is a straightforward denial-of-service issue.
Any service that parses user-supplied XML using the default configuration is vulnerable. Since Node.js runs on a single thread, the moment the parser starts expanding entities, the event loop is blocked. While this is happening, the server can’t handle any other requests.
In testing, a payload of only a few kilobytes was enough to make a simple HTTP server completely unresponsive for several minutes, with all other requests timing out.
Workaround
Avoid using DOCTYPE parsing by processEntities: false option.
- Record
GHSA-jmr7-xgp7-cmfj- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-776
- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-26278
7.5
CVE-2026-26278 in fast-xml-parser - Patched by Root
Root has patched CVE-2026-26278 in the fast-xml-parser package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-26278- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-26278
7.5
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. In versions 4.1.3 through 5.3.5, the XML parser can be forced to do an unlimited amount of entity expansion. With a very small XML input, it’s possible to make the parser spend seconds or even minutes processing a single request, effectively freezing the application. Version 5.3.6 fixes the issue. As a workaround, avoid using DOCTYPE parsing by processEntities: false option.
- Record
UBUNTU-CVE-2026-26278- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1776818199 No score
TuxCare security update for fast-xml-parser (2 CVEs)
TuxCare rebuilt fast-xml-parser to address 2 CVEs. Fixed in 4.5.3-tuxcare.2.
- Record
CLSA-2026-1776818199- Updated
- 2026-11-02
OSVCLSA-2026-1781744119 No score
TuxCare security update for fast-xml-parser (6 CVEs)
TuxCare rebuilt fast-xml-parser to address 6 CVEs. Fixed in 4.2.7-tuxcare.1.
- Record
CLSA-2026-1781744119- Updated
- 2026-11-02
OSVCLSA-2026-1781744139 No score
TuxCare security update for fast-xml-parser (6 CVEs)
TuxCare rebuilt fast-xml-parser to address 6 CVEs. Fixed in 4.4.0-tuxcare.1.
- Record
CLSA-2026-1781744139- Updated
- 2026-11-05
OSVCLSA-2026-1790597933 No score
TuxCare security update for fast-xml-parser (2 CVEs)
TuxCare rebuilt fast-xml-parser to address 2 CVEs. Fixed in 4.5.1-tuxcare.4.
- Record
CLSA-2026-1790597933- Updated
- 2026-11-02
OSVCLSA-2026-1792454133 No score
TuxCare security update for fast-xml-parser (7 CVEs)
TuxCare rebuilt fast-xml-parser to address 7 CVEs. Fixed in 5.2.5-tuxcare.1.
- Record
CLSA-2026-1792454133- Updated
- 2026-11-02
OSVCLSA-2026-1792698537 No score
TuxCare security update for fast-xml-parser (3 CVEs)
TuxCare rebuilt fast-xml-parser to address 3 CVEs. Fixed in 4.4.1-tuxcare.2.
- Record
CLSA-2026-1792698537- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10236-1 No score
heroic-games-launcher-2.20.0-1.1 on GA media
These are all security issues fixed in the heroic-games-launcher-2.20.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10236-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11126-1 No score
velociraptor-0.7.0.4.git185.a5708584-2.1 on GA media
These are all security issues fixed in the velociraptor-0.7.0.4.git185.a5708584-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11126-1- Updated
- 2026-11-02
Affected products
- naturalintelligence fast-xml-parser
- red hat migration toolkit for applications 8
- red hat advanced cluster security 4.8
- red hat advanced cluster security 4.9
- red hat developer hub 1.8
- red hat developer hub 1.9
- red hat openshift data foundation 4.18
- red hat openshift data foundation 4.19
- red hat openshift data foundation 4.20
- red hat openshift gitops
- red hat openshift virtualization 4
- red hat satellite 6
Show 2 moreShow less
Affected packages
| Package | Affected | Fixed |
|---|---|---|
fast-xml-parsernpm |
4.1.3 up to 4.5.4 | 4.5.4 |
fast-xml-parsernpm |
5.0.0 up to 5.3.6 | 5.3.6 |
fast-xml-parserTuxCare:npm From an advisory covering 2 CVEs |
4.5.3-tuxcare.0 up to 4.5.3-tuxcare.2, plus listed versions 4.5.34.5.3-tuxcare.1 |
4.5.3-tuxcare.2 |
fast-xml-parserTuxCare:npm From an advisory covering 6 CVEs |
4.2.7-tuxcare.0 up to 4.2.7-tuxcare.1, plus listed versions 4.2.7 |
4.2.7-tuxcare.1 |
fast-xml-parserTuxCare:npm From an advisory covering 6 CVEs |
4.4.0-tuxcare.0 up to 4.4.0-tuxcare.1, plus listed versions 4.4.0 |
4.4.0-tuxcare.1 |
fast-xml-parserTuxCare:npm From an advisory covering 2 CVEs |
4.5.1-tuxcare.0 up to 4.5.1-tuxcare.4, plus listed versions 4.5.14.5.1-tuxcare.14.5.1-tuxcare.24.5.1-tuxcare.3 |
4.5.1-tuxcare.4 |
fast-xml-parserTuxCare:npm From an advisory covering 7 CVEs |
5.2.5-tuxcare.0 up to 5.2.5-tuxcare.1, plus listed versions 5.2.5 |
5.2.5-tuxcare.1 |
fast-xml-parserTuxCare:npm From an advisory covering 3 CVEs |
4.4.1-tuxcare.0 up to 4.4.1-tuxcare.2, plus listed versions 4.4.14.4.1-tuxcare.1 |
4.4.1-tuxcare.2 |
node-webfontDebian:12 |
All versions, plus listed versions 11.4.0+dfsg2+~cs35.7.26-1011.4.0+dfsg2+~cs35.7.26-1111.4.0+dfsg2+~cs35.7.26-1211.4.0+dfsg2+~cs35.7.26-1311.4.0+dfsg2+~cs35.7.26-14 Show 9 moreShow less11.4.0+dfsg2+~cs35.7.26-1511.4.0+dfsg2+~cs35.7.26-1611.4.0+dfsg2+~cs35.7.26-1811.4.0+dfsg2+~cs35.7.26-1911.4.0+dfsg2+~cs35.7.26-2011.4.0+dfsg2+~cs35.7.26-2111.4.0+dfsg2+~cs35.7.26-711.4.0+dfsg2+~cs35.7.26-811.4.0+dfsg2+~cs35.7.26-9 |
None known |
node-webfontDebian:13 |
All versions, plus listed versions 11.4.0+dfsg2+~cs35.7.26-1311.4.0+dfsg2+~cs35.7.26-1411.4.0+dfsg2+~cs35.7.26-1511.4.0+dfsg2+~cs35.7.26-1611.4.0+dfsg2+~cs35.7.26-1811.4.0+dfsg2+~cs35.7.26-1911.4.0+dfsg2+~cs35.7.26-2011.4.0+dfsg2+~cs35.7.26-21 |
None known |
Show 9 moreShow less
| Package | Affected | Fixed |
|---|---|---|
node-webfontDebian:14 |
All versions, plus listed versions 11.4.0+dfsg2+~cs35.7.26-1311.4.0+dfsg2+~cs35.7.26-1411.4.0+dfsg2+~cs35.7.26-1511.4.0+dfsg2+~cs35.7.26-1611.4.0+dfsg2+~cs35.7.26-1811.4.0+dfsg2+~cs35.7.26-1911.4.0+dfsg2+~cs35.7.26-2011.4.0+dfsg2+~cs35.7.26-21 |
None known |
fast-xml-parserRoot:npm |
before 4.4.1-aikido.9 | 4.4.1-aikido.95.2.5-aikido.45.3.4-aikido.75.3.4-aikido.84.2.5-aikido.24.5.3-aikido.24.5.1-aikido.24.5.1-aikido.34.5.1-aikido.45.3.6-aikido.55.3.6-aikido.64.5.4-aikido.1 |
@rootio/fast-xml-parserRoot:npm |
before 5.3.4-root.io.1 | 5.3.4-root.io.15.3.4-root.io.25.3.4-root.io.34.4.1-root.io.34.4.1-root.io.45.3.4-root.io.44.4.1-root.io.54.4.1-root.io.64.4.1-root.io.75.3.4-root.io.55.2.5-root.io.24.4.1-root.io.85.2.5-root.io.35.3.4-root.io.64.4.1-root.io.95.2.5-root.io.45.3.4-root.io.75.3.4-root.io.84.2.5-root.io.24.5.3-root.io.24.5.1-root.io.24.5.1-root.io.34.5.1-root.io.45.3.6-root.io.15.3.6-root.io.25.3.6-root.io.35.3.6-root.io.45.3.6-root.io.55.3.6-root.io.64.5.4-root.io.1 |
node-webfontUbuntu:24.04:LTS |
All versions, plus listed versions 11.4.0+dfsg2+~cs35.7.26-7ubuntu1 |
None known |
node-webfontUbuntu:25.10 |
All versions, plus listed versions 11.4.0+dfsg2+~cs35.7.26-1011.4.0+dfsg2+~cs35.7.26-13ubuntu2 |
None known |
node-webfontUbuntu:26.10 |
All versions, plus listed versions 11.4.0+dfsg2+~cs35.7.26-1811.4.0+dfsg2+~cs35.7.26-19 |
None known |
node-webfontUbuntu:26.04:LTS |
All versions, plus listed versions 11.4.0+dfsg2+~cs35.7.26-13ubuntu211.4.0+dfsg2+~cs35.7.26-1411.4.0+dfsg2+~cs35.7.26-1511.4.0+dfsg2+~cs35.7.26-16build111.4.0+dfsg2+~cs35.7.26-18 |
None known |
heroic-games-launcheropenSUSE:Tumbleweed From an advisory covering 2 CVEs |
before 2.20.0-1.1 | 2.20.0-1.1 |
velociraptoropenSUSE:Tumbleweed From an advisory covering 49 CVEs |
before 0.7.0.4.git185.a5708584-2.1 | 0.7.0.4.git185.a5708584-2.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-26278 is a high vulnerability (CVSS 7.5) in Naturalintelligence Fast-xml-parser, published February 17, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.94%, the 61st percentile. Fixed in fast-xml-parser 4.5.4.
References
github.com/NaturalIntelligence/fast-xml-parser/security/advisories/GHSA-jmr7-xgp7-cmfj
github.com/NaturalIntelligence/fast-xml-parser/commit/910dae5be2de2955e968558fadf6e8f74f117a77
github.com/NaturalIntelligence/fast-xml-parser/releases/tag/v5.3.6
access.redhat.com/security/cve/CVE-2026-26278
bugzilla.redhat.com/show_bug.cgi?id=2441120
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-26278.json
Show 65 moreShow less
access.redhat.com/errata/RHSA-2026:7110
access.redhat.com/errata/RHSA-2026:7128
access.redhat.com/errata/RHSA-2026:6174
access.redhat.com/errata/RHSA-2026:6802
access.redhat.com/errata/RHSA-2026:41941
access.redhat.com/errata/RHSA-2026:41944
access.redhat.com/errata/RHSA-2026:40984
access.redhat.com/errata/RHSA-2026:51349
nvd.nist.gov/vuln/detail/CVE-2026-26278
github.com/advisories/GHSA-jmr7-xgp7-cmfj
github.com/CVEProject/cvelistV5/tree/main/cves/2026/26xxx/CVE-2026-26278.json
security-tracker.debian.org/tracker/CVE-2026-26278
github.com/NaturalIntelligence/fast-xml-parser
ubuntu.com/security/CVE-2026-26278
cve.org/CVERecord?id=CVE-2026-26278
suse.com/security/cve/CVE-2026-25547
suse.com/security/cve/CVE-2026-26278
suse.com/security/cve/CVE-2023-45288
suse.com/security/cve/CVE-2024-45339
suse.com/security/cve/CVE-2025-13465
suse.com/security/cve/CVE-2025-22868
suse.com/security/cve/CVE-2025-22869
suse.com/security/cve/CVE-2025-22870
suse.com/security/cve/CVE-2025-22872
suse.com/security/cve/CVE-2025-24358
suse.com/security/cve/CVE-2025-47911
suse.com/security/cve/CVE-2025-58058
suse.com/security/cve/CVE-2025-58181
suse.com/security/cve/CVE-2025-58190
suse.com/security/cve/CVE-2025-5889
suse.com/security/cve/CVE-2025-64718
suse.com/security/cve/CVE-2025-6545
suse.com/security/cve/CVE-2025-6547
suse.com/security/cve/CVE-2025-7783
suse.com/security/cve/CVE-2026-1229
suse.com/security/cve/CVE-2026-25128
suse.com/security/cve/CVE-2026-25680
suse.com/security/cve/CVE-2026-25681
suse.com/security/cve/CVE-2026-26996
suse.com/security/cve/CVE-2026-27136
suse.com/security/cve/CVE-2026-2739
suse.com/security/cve/CVE-2026-27606
suse.com/security/cve/CVE-2026-27904
suse.com/security/cve/CVE-2026-33036
suse.com/security/cve/CVE-2026-33186
suse.com/security/cve/CVE-2026-33487
suse.com/security/cve/CVE-2026-33814
suse.com/security/cve/CVE-2026-34986
suse.com/security/cve/CVE-2026-39821
suse.com/security/cve/CVE-2026-39827
suse.com/security/cve/CVE-2026-39828
suse.com/security/cve/CVE-2026-39829
suse.com/security/cve/CVE-2026-39830
suse.com/security/cve/CVE-2026-39831
suse.com/security/cve/CVE-2026-39832
suse.com/security/cve/CVE-2026-39833
suse.com/security/cve/CVE-2026-39834
suse.com/security/cve/CVE-2026-39835
suse.com/security/cve/CVE-2026-42039
suse.com/security/cve/CVE-2026-42502
suse.com/security/cve/CVE-2026-42506
suse.com/security/cve/CVE-2026-42508
suse.com/security/cve/CVE-2026-46595
suse.com/security/cve/CVE-2026-46597
suse.com/security/cve/CVE-2026-46598