Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain author-level WordPress credentials
-
DeliveryCreate post with percent-encoded XSS payload as slug
-
ExploitPublish post to persist payload in database
-
ExecutionVictim visits post URL with pretty permalink
-
Persistget_permalink() embeds unescaped slug in rendered output
-
ImpactBrowser executes stored XSS payload
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 | Exploitation requires the attacker to hold an authenticated WordPress account at author level or higher (editor, administrator). The target site must have pretty permalinks enabled (Settings > Permalinks set to any structure other than 'Plain'), because the exploit depends on get_permalink() embedding the stored post_name in the generated URL. Yoast SEO plugin must be installed and active on the site. A victim user must access the URL of the injected post or page for the stored script to execute in their browser. Exploitation is limited by: (1) mandatory authenticated author-level access - unauthenticated or subscriber-level attackers cannot trigger this; (2) the pretty permalinks configuration dependency (non-default on a brand-new WordPress install but extremely common in production deployments); (3) the need for a victim to actually visit the affected page. There is no evidence of exploitation against default WordPress configurations by unauthenticated attackers. |
| Impact | The CVSS 3.1 base score of 6.4 (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) accurately conveys medium severity: network-reachable, low complexity, but gated on author-level credentials (PR:L). The scope change (S:C) reflects that successful exploitation crosses a trust boundary from the WordPress application context to victims' browsers. EPSS data was not provided in the input; without it, probabilistic exploitation likelihood cannot be quantified, but the absence of a KEV listing and public POC code depresses real-world urgency. The author-privilege prerequisite is a meaningful limiting factor - mass exploitation targeting WordPress sites at scale is constrained by the need to first obtain (or already hold) a content-creator account. However, sites where author registration is open, or where contributor accounts are broadly distributed among staff, face higher realistic risk. The pretty-permalinks dependency is practically negligible as a barrier, since the vast majority of WordPress deployments enable pretty permalinks. Overall: a legitimate medium-priority finding requiring timely patching, not an emergency, given no confirmed active exploitation. |
| Exploit ScenarioDerived | An attacker who holds an author account on a targeted WordPress site - obtained via credential theft, phishing, or open registration - creates or edits a post and sets its slug to a percent-encoded XSS payload. Once the post is published and pretty permalinks are enabled, any administrator, editor, or site visitor who navigates to the post's URL has the script execute silently in their browser, potentially stealing session cookies or performing actions on behalf of the victim. No public proof-of-concept exploit code has been identified at time of analysis, but the vulnerability class is well-understood and the injection point is straightforward to discover from the referenced Trac source. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 25, 2026
Stored Cross-Site Scripting in the Yoast SEO WordPress plugin (all versions through 28.0) allows authenticated attackers holding author-level accounts or higher to inject persistent JavaScript via a crafted post slug (post_name field) that executes in the browsers of any user who later visits the affected page. The vulnerability traces to insufficient sanitization in the bulk-editor list table (class-bulk-editor-list-table.php, lines 898-900) combined with get_permalink() embedding the stored percent-encoded post_name in generated URLs without adequate escaping. No confirmed active exploitation (no CISA KEV listing) and no public exploit code has been identified at time of analysis, though the scope-changed CVSS vector (S:C) reflects cross-user browser impact consistent with a medium-priority persistent XSS.
RemediationAI
Upgrade the Yoast SEO plugin to version 28.1 or later; the upstream fix is documented in the Trac changeset between tags/28.0 and tags/28.1 (https://plugins.trac.wordpress.org/changeset?old_path=%2Fwordpress-seo/tags/28.0&new_path=%2Fwordpress-seo/tags/28.1) and corresponds to a specific patch in class-bulk-editor-list-table.php (https://plugins.trac.wordpress.org/changeset/3598937/wordpress-seo/trunk/admin/class-bulk-editor-list-table.php). The patched version is 28.1 based on the changeset path - this should be independently verified against the WordPress.org plugin changelog before deployment. As a compensating control while patching is pending, restrict WordPress author-level role assignment to fully trusted users and audit existing accounts with author or higher privileges. Disabling pretty permalinks would technically break the exploit chain but has significant SEO and usability trade-offs and is not recommended as a standing workaround. Web Application Firewall rules targeting percent-encoded XSS payloads in post slug fields (as offered by Wordfence itself) can provide a detection layer without disrupting site function.
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 vulnerability resides in Yoast SEO's bulk editor admin interface, specifically the WordPress class-bulk-editor-list-table.php file responsible for rendering post management tables. CWE-79 (Improper Neutralization of Input During Web Page Generation) is the root cause: the plugin stores attacker-controlled percent-encoded characters in the WordPress post_name (slug) database column without applying wp_kses or equivalent output escaping. When WordPress's get_permalink() constructs a URL embedding that slug, and the Yoast bulk editor or front-end page subsequently renders the resulting hyperlink, the unescaped payload is delivered to the victim's browser. The attack chain specifically depends on WordPress pretty permalinks (e.g., /%postname%/) being configured, because plain ?p=ID permalink structures do not embed the slug in the URL and thus do not trigger the injection. Affected CPE: the Yoast SEO plugin for WordPress, all releases from 0 through 28.0 inclusive.
Know when WordPress 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
Author credentials required (PR:L); a victim must visit the page (UI:R); scope changes to victim browser (S:C); no server-side availability impact.
Primary rating from Vendor (wordfence).
CVSS VectorVendor: wordfence
DescriptionCVE.org
The Yoast SEO - Advanced SEO with real-time guidance and built-in AI plugin for WordPress is vulnerable to Stored Cross-Site Scripting via Post Slug (post_name) in all versions up to, and including, 28.0 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with author-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This requires pretty permalinks to be enabled, as the exploit chain depends on get_permalink() embedding the stored percent-encoded post_name in the generated URL.
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.
The mailSend function in the isMail transport in PHPMailer before 5.2.18 might allow remote attackers to pass extra para
The isMail transport in PHPMailer before 5.2.20 might allow remote attackers to pass extra parameters to the mail comman
The 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 GiveWP - Donation Plugin and Fundraising Platform plugin for WordPress is vulnerable to PHP Object Injection in all
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
Remote code execution in WordPress 6.9.x (before 6.9.5) and 7.0.x (before 7.0.2) arises from a REST API batch endpoint r
EUVD-2026-48765
GHSA-6qx8-mxxj-98fc
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB