Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain Subscriber account on target site
-
DeliverySet display_name with %%archive_title%% token and event-handler payload
-
ExploitPlugin substitutes token after escaping
-
ExecutionScript stored unfiltered in display name
-
PersistVictim loads page rendering the variable
-
ImpactPayload executes in victim browser (scope-changed)
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 | Requires an authenticated account at Subscriber level or above (PR:L) on the target WordPress site - self-registration, where enabled, makes this trivial. The attacker sets their profile display_name to a string containing the literal %%archive_title%% token alongside an HTML event-handler payload; WordPress stores display names without HTML filtering and SEOPress substitutes the token after output escaping has already occurred, defeating the escaping. Exploitation further depends on the site configuration actually rendering the %%archive_title%% dynamic variable on a page where the attacker's display name is surfaced, and on the payload page being accessed by a victim. Limiting factors: Subscriber-level authentication is mandatory (no unauthenticated path), and the specific token/variable rendering condition must be met; affects all versions up to and including 10.3. |
| Impact | This is a moderate-priority stored XSS (CWE-79) with a balanced, not alarmist, risk profile. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N, score 6.4) indicates a network-reachable, low-complexity flaw that requires authentication (PR:L - Subscriber-level) and no attacker-driven user interaction, with a changed scope reflecting that injected script executes in other users' browser context. No EPSS score was provided, so statistical exploitation probability cannot be stated. KEV status is not listed, so this is not confirmed as actively exploited. No PoC or working-exploit reference appears in the input (the references are a Wordfence advisory, WordPress trac source lines, and the fix changeset) - so no public exploit is identified at time of analysis. The vuln.today decision label is 'this_month', consistent with a real but non-emergency issue: a genuine stored XSS requiring a (trivially obtainable) Subscriber account, warranting scheduled patching rather than crisis response. The signals are internally consistent - there is no conflict between CVSS network vector and the description, which confirms remote, authenticated (Subscriber) exploitation. The main limiting factor is the authentication requirement plus the specific condition that the site must render the %%archive_title%% token where the display name is substituted. |
| Exploit ScenarioDerived | A low-privileged Subscriber registers or already holds an account and sets their WordPress display name to a value containing the literal %%archive_title%% token combined with an HTML event-handler payload; WordPress stores the display name without HTML filtering. When a visitor or administrator loads a page where SEOPress substitutes the %%archive_title%% dynamic variable after output escaping has already run, the payload executes in that user's browser. No public exploit code is identified at time of analysis, though the mechanism is described in detail in the Wordfence advisory and the patched source. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 31, 2026
Stored cross-site scripting in the SEOPress WordPress plugin (all versions up to and including 10.3) lets any authenticated Subscriber-level user plant script in a page by setting their profile display_name to a value combining the literal %%archive_title%% token with HTML event-handler attributes. Because WordPress stores display names without HTML filtering and SEOPress substitutes the dynamic-variable token after output escaping has already been applied, the escaping is defeated and the injected markup executes in the browser of any user who views the affected page - including higher-privileged users, which is why the vector carries S:C. With a CVSS of 6.4 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) and a this_month priority rating, this is a moderate-severity issue that is practically reachable on sites with open self-registration enabled; no public exploit code or CISA KEV entry was identified at time of analysis. Exploitation requires both Subscriber-level authentication and a site configuration that actually renders %%archive_title%% on a page where the attacker's display name is surfaced.
RemediationAI
The fix is upstream: changeset 3772366 (https://plugins.trac.wordpress.org/changeset/3772366/wp-seopress/trunk/inc/functions/options-social.php) modifies the token-substitution path in trunk, so update SEOPress to a release that incorporates that changeset once it is published - an exact patched version number is not confirmed in the available data, so verify the plugin changelog or the Wordfence advisory before declaring the site fixed. Sites that cannot update immediately should consider compensating controls, understanding that these are analyst inference rather than vendor-documented guidance: disable open self-registration and review existing low-privilege accounts so untrusted users cannot set a malicious display_name, and audit any profile display names containing the literal %%archive_title%% string or HTML event-handler attributes; avoid using the %%archive_title%% dynamic variable in templates where a user-supplied display name is rendered into the same attribute context, since that is the specific combination the payload needs. Note that the trigger also requires a victim to load the affected page, so restricting the pages that render these templates to trusted audiences reduces exposure but does not remove the underlying injection once a patch is bypassed by an attacker. The authoritative remediation reference remains the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/6651c932-aa60-485b-bb5b-b66d5a8963ae.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a CWE-79 classic case of context confusion in SEOPress's dynamic-variable pipeline. SEOPress provides template tokens such as %%archive_title%% that are expanded into social/SEO meta output; the affected code paths live in inc/functions/options-social.php (lines referenced around 533, 542, 1104 and 1112), inc/functions/variables/dynamic-variables.php (around line 340) and inc/functions/options-titles-metas.php (around line 403) in the 10.3 tag. The substitution happens after the surrounding value has already been passed through escaping, so attacker-controlled text that reaches the substituter is re-injected verbatim into the rendered attribute or tag context. The attacker-controlled source is the WordPress user display_name field: WordPress permits HTML characters in that field, so a low-privilege account can store a string containing both the %%archive_title%% token and an event-handler payload such as onmouseover/onerror; when the plugin later expands the token in a template where the display name is used, the payload lands unescaped. The Scope:Changed metric reflects that the script executes in the security context of other users of the site (including administrators viewing the affected page), not just the injecting Subscriber.
Know when Wordpress Plugin 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
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Network-reachable stored XSS needing a Subscriber account (PR:L), no attacker-side interaction (UI:N), executing in other users' context (S:C) with limited confidentiality/integrity impact and no availability effect.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The SEOPress - AI SEO Plugin & On-site SEO plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'display_name' parameter in all versions up to, and including, 10.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This is exploitable by any Subscriber who sets their display_name to a string containing the literal %%archive_title%% token alongside HTML event-handler payloads, as WordPress stores display names without HTML filtering and the plugin substitutes the token after escaping has already occurred.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The AI Engine WordPress plugin through version 3.1.3 exposes Bearer Token values through the /mcp/v1/ REST API endpoint
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
EUVD-2026-114650
GHSA-3rrf-p83h-c57v
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB