Executive brief
ApostropheCMS is a Node.js-based content management system that allows editors to create and publish web pages with rich media. An editor can inject malicious JavaScript code into an image widget's link field, which executes in the browser of any user (including administrators or public visitors) who clicks the linked image on a published page. This allows attackers to steal sensitive information, modify page content, perform phishing attacks, or compromise site visitors.
Technical details
A stored cross-site scripting (XSS) vulnerability exists in ApostropheCMS's image widget functionality, stemming from improper validation and sanitization of user-supplied URLs in the link field (CWE-79, CWE-116). An authenticated Editor role user can enter a javascript: URL scheme in the image widget's "Link to" field, which is stored in the database without sanitization. Upon publication, any user (including unauthenticated visitors) who clicks the linked image triggers execution of the malicious JavaScript payload in their browser context. The vulnerability requires authentication (Editor role) and user interaction (victim clicking the link), but impacts confidentiality (reading CMS interface data) and integrity (modifying content). The fix requires server-side validation to reject dangerous URL schemes (javascript:, data:, etc.) while allowing safe protocols (http:, https:, mailto:, relative URLs).
Affected products
- ApostropheCMS ApostropheCMS 4.29.0 (and likely other 4.x versions)
Timeline
- 2026-05-14: disclosed: Advisory GHSA-5f64-7vfc-rcx6 published
- 2026-05-13: other: Vulnerability announced by boutell