CVE-2026-112951: ApostropheCMS color field stored XSS via TinyColor bypass

CVE-2026-112951 · Severity: medium · CVSS 5.4 · Published 2026-10-20

ApostropheCMS is an open-source Node.js content management system used to build and manage websites. The color field accepts arbitrary HTML when appended after a valid color prefix, allowing authenticated editors to inject malicious scripts that execute when the page is viewed. This stored cross-site scripting (XSS) can lead to session hijacking, data theft, or defacement.

Technologies: ApostropheCMS Apostrophe, apostrophe (npm). Vendors: ApostropheCMS, npm.

Quick answers

Is CVE-2026-112951 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-112951 being exploited in the wild.
How severe is CVE-2026-112951?
Medium severity, with a CVSS score of 5.4, published 20 October 2026.
Which products and versions are affected?
ApostropheCMS Apostrophe before 4.34.0; apostrophe (npm) < 4.34.0, SEMVER:introduced=0,fixed=4.34.0.
Is there a fix for CVE-2026-112951?
Yes. apostrophe (npm): upgrade to 4.34.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-112951 attacked?
It is attacked over the network, in a web application.
Am I affected by CVE-2026-112951?
Check whether you run ApostropheCMS Apostrophe or apostrophe (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • apostrophe (npm): upgrade to 4.34.0 or later
    npm install apostrophe@4.34.0

Technical details

The color field validation in ApostropheCMS uses TinyColor but does not enforce that the entire value matches a valid color format, allowing trailing HTML to be stored. An authenticated user with edit rights can bypass validation by prefixing arbitrary HTML with a valid rgb() or hsl() value (e.g., "rgb(0,0,0)<script>alert('xss')</script>"). When the stored value is rendered on the front end, the payload executes in the context of the page.

Affected products

  • ApostropheCMS Apostrophe before 4.34.0

Identifiers

  • CVE-2026-112951
  • GHSA-vmgj-9cwm-cf3h

Timeline

  • 2026-10-20: disclosed

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.