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.
Published: 2026-10-20
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service via stack overflow
Action: Immediate Patch
AI Analysis

Impact

In sanitize-html 2.18.0, an <iframe> tag that is not allowed is discarded, and its raw text is re‑sanitized by a recursive call to sanitizeHtml. Each recursive call starts with a fresh state and has no bound, creating an unbounded recursion that eventually causes a stack overflow. The effect is a denial of service because the Node.js process crashes when the recursion depth exceeds the system stack.

Affected Systems

The vulnerability occurs in ApostropheCMS, specifically in the sanitize-html module version 2.18.0 that is bundled with the apostrophecms:apostrophe and apostrophecms:sanitize-html packages. Version 2.18.1 and later contain the fix and are not affected.

Risk and Exploitability

The CVSS score of 5.3 indicates moderate severity, and the vulnerability is not listed in the CISA KEV catalog. The EPSS score is less than 1%, implying a very low but non‑zero likelihood of exploitation. An attacker appears to need the ability to supply or manipulate content that contains an iframe tag, such as through the CMS editor or API. When that content is processed, the recursive sanitization will exhaust the stack and terminate the application, resulting in a denial of service. No other direct exploitation vectors are described in the available information.

Generated by OpenCVE AI on October 22, 2026 at 20:29 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade sanitize-html to version 2.18.1 or later.
  • If an immediate upgrade is not possible, block or strip <iframe> elements before passing content to sanitizeHtml, for example by configuring a stricter whitelist or disabling the iframe tag altogether.
  • Add error handling around sanitizeHtml calls to catch stack overflows and restart or recover the application gracefully.

Generated by OpenCVE AI on October 22, 2026 at 20:29 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-c9rx-x947-fp3h ApostropheCMS sanitize-html: unbounded recursion when re-sanitizing the fallback of a discarded iframe (stack overflow, nestingLimit not enforced)
History

Wed, 21 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-835
References
Metrics threat_severity

None

threat_severity

Moderate


Tue, 20 Oct 2026 20:30:00 +0000

Type Values Removed Values Added
First Time appeared Apostrophecms
Apostrophecms apostrophecms
Apostrophecms sanitize-html
Vendors & Products Apostrophecms
Apostrophecms apostrophecms
Apostrophecms sanitize-html

Tue, 20 Oct 2026 16:45:00 +0000

Type Values Removed Values Added
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.
Title ApostropheCMS sanitize-html: unbounded recursion when re-sanitizing the fallback of a discarded iframe (stack overflow, nestingLimit not enforced)
Weaknesses CWE-674
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L'}


Subscriptions

Apostrophecms Apostrophecms Sanitize-html
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-20T16:19:12.100Z

Reserved: 2026-10-20T14:27:46.640Z

Link: CVE-2026-113650

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-20T17:17:35.807

Modified: 2026-10-20T19:53:10.247

Link: CVE-2026-113650

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-10-20T16:19:12Z

Links: CVE-2026-113650 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T20:30:12Z

Weaknesses
  • CWE-674

    Uncontrolled Recursion

  • CWE-835

    Loop with Unreachable Exit Condition ('Infinite Loop')