CVE-2026-40186: apostrophecms apostrophe · Cross-site Scripting
Affects apostrophecms apostropheSource CVE Database V5
Not known to be exploited · CVSS 6.1 Medium : upgrade to 4.29.0 when convenient.
Data as of 30 Oct 2026, 11:52 UTC
- EPSS
- 0.2% chance of exploitation in 30 days – higher than 16% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 4.29.0, 2.17.2
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:NExploitation evidence
Disclosed: evidence found.
CVE published 15 Apr 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.
What to do
Upgrade apostrophe to 4.29.0; sanitize-html to 2.17.2.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| apostrophecmsapostrophe | Affected
| Fixed in
|
| apostrophecmssanitize-html | Affected
| Fixed in
|
npmsanitize-htmlpkg:npm/sanitize-htmlOther threats | Affected
| Fixed in
|
npmapostrophepkg:npm/apostropheOther threats | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
A fix is available. Users should upgrade sanitize-html to version 2.17.2 or later and ApostropheCMS to version 4.29.0 or later to remediate this vulnerability. Until upgraded, avoid configurations that allow textarea or option tags in allowedTags if possible. Patch status is confirmed by the vendor advisory indicating the issue is fixed in these versions.
Description
ApostropheCMS is an open-source Node.js content management system. A regression introduced in commit 49d0bb7, included in versions 2.17.1 of the ApostropheCMS-maintained sanitize-html package bypasses allowedTags enforcement for text inside nonTextTagsArray elements (textarea and option). ApostropheCMS version 4.28.0 is affected through its dependency on the vulnerable sanitize-html version. The code at packages/sanitize-html/index.js:569-573 incorrectly assumes that htmlparser2 does not decode entities inside these elements and skips escaping, but htmlparser2 10.x does decode entities before passing text to the ontext callback. As a result, entity-encoded HTML is decoded by the parser and then written directly to the output as literal HTML characters, completely bypassing the allowedTags filter. An attacker can inject arbitrary tags including XSS payloads through any allowed option or textarea element using entity encoding. This affects non-default configurations where option or textarea are included in allowedTags, which is common in form builders and CMS platforms. This issue has been fixed in version 2.17.2 of sanitize-html and 4.29.0 of ApostropheCMS.