CVE-2026-120515
SEOPress <= 10.3 - Authenticated (Subscriber+) Stored Cross-Site Scripting via 'seopress_google_analytics_affiliate_tracking' and 'seopress_google_analytics_download_tracking' Parameters
The SEOPress – AI SEO Plugin & On-site SEO plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'seopress_google_analytics_affiliate_tracking' and 'seopress_google_analytics_download_tracking' settings in versions up to, and including, 10.3. This is due to insufficient input sanitization and output escaping on these settings as they are interpolated into the inline Google Analytics tracking snippet by seopress_google_analytics_js(): the affiliate value receives no sanitization at all (it is omitted from inc/admin/sanitize/Sanitize.php) and lands inside a <script> block, while the download value is only passed through sanitize_text_field() and lands inside a JavaScript regular-expression literal that preserves parentheses, semicolons and slashes. This makes it possible for authenticated attackers, with Subscriber-level access and above (where an administrator has delegated the SEOPress 'analytics' capability under Settings > Advanced > Security — the precondition Wordfence accepted for CVE-2026-101357), to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
Fixes and workarounds
No remediation reported in collected sources.
Missing remediation information is not evidence that no patch exists.
Affected products and versions
| Product | Versions | Authority |
|---|---|---|
| SEOPress – AI SEO Plugin & On-site SEO rainbowgeek |
≥ 0; ≤ 10.3 (affected, semver)
Other versions: unaffected |
CNA: Wordfence |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
CVSS assessments
| Version / score | Vector | Authority |
|---|---|---|
| 3.1 / 6.4 medium |
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N | CNA: Wordfence |
Exploit evidence
No exploit evidence in collected sources. This is not proof of no exploitation.
References
- https://www.wordfence.com/threat-intel/vulnerabilities/id/10a13871-c98e-4785-ab41-18e548e07c05?source=cveCNA: Wordfence
- https://plugins.trac.wordpress.org/browser/wp-seopress/tags/10.3/inc/functions/options-google-analytics.php#L800CNA: Wordfence
- https://plugins.trac.wordpress.org/browser/wp-seopress/tags/10.3/inc/functions/options-google-analytics.php#L822CNA: Wordfence
- https://plugins.trac.wordpress.org/browser/wp-seopress/tags/10.3/src/Actions/Api/Options/AnalyticsSettings.php#L104CNA: Wordfence
- https://plugins.trac.wordpress.org/browser/wp-seopress/tags/10.3/inc/admin/sanitize/Sanitize.php#L63CNA: Wordfence
- https://plugins.svn.wordpress.org/wp-seopress/trunk/CNA: Wordfence
- https://plugins.trac.wordpress.org/browser/wp-seopress/tags/10.4/inc/functions/options-google-analytics.phpCNA: Wordfence
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.