CVE-2026-113650 · GHSA-c9rx-x947-fp3h
ApostropheCMS sanitize-html: unbounded recursion when re-sanitizing the fallback of a discarded iframe (stack overflow, nestingLimit not enforced)
- Risk score
- 41/100
- CVSS
- 5.3 v3.1
- Exploit chance (30 days)
- 0.3%
- Published
- 20 Oct 2026
Open in the live forecast Today's forecast
What to know
- What it is
- ApostropheCMS is an open-source Node.js content management system. In sanitize-html 2.18.0, when an <iframe> is not allowed and disallowedTagsMode is 'discard' (the defaults), its raw-text content is re-sanitized by a recursive call to sanitizeHtml(text, options). The recursion has no bound and starts each nested call…
- Affected
- sanitize-html (npm) >= 2.18.0, < 2.18.1
- Fix
- Upgrade sanitize-html to 2.18.1 or later.
- Exploitation
- No known exploitation
Story map
At a glance
sanitize-html: Yellow, plan it in. ApostropheCMS is an open-source Node.js content management system, and sanitize-html provides a simple HTML sanitizer with a clear API. Prior to sanitize-html 2.18.0, a non-default nonTextTags configuration that includes noscript can end its discard region early when htmlparser2 emits an implied ancestor close inside …
The flaws
- CVE-2026-113650: ApostropheCMS sanitize-html: unbounded recursion when re-sanitizing the fallback of a discarded iframe (stack overflow, nestingLimit not enforced) (CVSS 5.3 · EPSS 0%)
- CVE-2026-113654: ApostropheCMS sanitize-html: nonTextTags discard region ends early on an implied close, letting <noscript> content render (CVSS 5.3 · EPSS 0%)
- CVE-2026-113661: ApostropheCMS: Incomplete CVE-2026-53606: `meta http-equiv=refresh` `content` still ships `javascript:` / `data:` URLs (CVSS 5.4 · EPSS 0%)
The fix
Upgrade sanitize-html: 2.18.1 or later on your release line
Who is exposed: sanitize-html (npm) < 2.18.0
Where it stands
- No known exploitation
Connects to
- Same weakness: CWE-674 (CWE-674). 56 other warnings in 30 days
Why it is Yellow
- CVSS 5.3 medium
- On your watchlist: npm
Affected packages
| Package | Ecosystem | Vulnerable | Fixed in |
|---|---|---|---|
| sanitize-html | npm | >= 2.18.0, < 2.18.1 | 2.18.1 |
References
- https://github.com/advisories/GHSA-c9rx-x947-fp3h
- https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-c9rx-x947-fp3h
- https://nvd.nist.gov/vuln/detail/CVE-2026-113650
- https://github.com/apostrophecms/apostrophe/commit/06e4b377f3c360f9e89c32dccd7e505ad5ddf498
- https://github.com/apostrophecms/apostrophe/commit/40b989b1a9dd23d30029b8ce7668634265cfe5ea
- https://github.com/apostrophecms/apostrophe/releases/tag/sanitize-html@2.18.1
- https://github.com/advisories/GHSA-c9rx-x947-fp3h
Original description
ApostropheCMS is an open-source Node.js content management system. In sanitize-html 2.18.0, when an <iframe> is not allowed and disallowedTagsMode is 'discard' (the defaults), its raw-text content is re-sanitized by a recursive call to sanitizeHtml(text, options). The recursion has no bound and starts each nested call with a fresh state. This vulnerability is fixed in 2.18.1.
Last activity 20 Oct 2026. Patch Forecast updates every hour.