Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessHost page with malicious og:title meta tag
-
DeliverySend webmention to target post URL
-
ExploitPlugin stores og:title name raw as pending comment
-
ExecutionAdministrator approves pending webmention comment
-
ImpactScript executes in site visitors' browsers
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 the Webmention plugin (author pfefferle) installed and active on WordPress at version 5.10.1 or earlier, with webmention receiving enabled. The attacker places the payload in the Open Graph og:title meta tag of a source URL and submits a webmention to a target post. Exploitation is strictly gated on an administrator manually approving the resulting pending webmention comment - per the description the attacker cannot trigger execution on their own (this is the UI:R factor). The script then runs when any user views the injected page. The limiting factors are therefore: mandatory administrator moderation/approval of the pending comment, and the specific affected version range; no authentication is required of the attacker (PR:N) and the submission path is remote and network-reachable. |
| Impact | This is a genuine but moderate-priority issue, not an inflated high-CVSS alarm. The CVSS 3.1 vector (6.1, AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N) tells a consistent story with the description: a network-reachable, unauthenticated attacker (PR:N) can submit the payload, but exploitation cannot complete without an administrator action (reflected in UI:R) - the description states explicitly that an admin must approve the resulting pending webmention comment before the stored script executes, and the attacker cannot trigger it alone. This human-in-the-loop requirement is the single biggest risk-reducer. No EPSS score was provided in the input, the vulnerability is not listed in CISA KEV, and no proof-of-concept exploit is present, so there is no public exploit identified at time of analysis; these signals point away from widespread opportunistic exploitation. Counterbalancing that, the vendor PR #698 and WordPress trac diff are public and clearly reveal the mechanism (og:title → Item::name stored raw, kses hooks removed in Receiver::process before wp_new_comment), which lowers the research barrier for anyone building an exploit. The vuln.today decision label is 'this_month' (not act_now or emergency), which aligns with the medium severity and absence of active-exploitation signals: patch within a normal monthly cycle rather than as an emergency. Real-world risk is further bounded by the plugin's niche deployment footprint. |
| Exploit ScenarioDerived | An attacker publishes a web page whose Open Graph og:title meta tag contains a script payload (e.g. an img tag with an onerror handler) and sends a webmention pointing that source URL at a target post on the victim WordPress site. The plugin fetches the source, maps og:title to Item::name and stores it unsanitized as a pending comment; when a site administrator later approves that pending webmention comment, the script executes in the browser of anyone viewing the affected page. No public exploit was identified at time of analysis, though the vendor patch diff publicly discloses the exact mechanism. |
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 Webmention plugin for WordPress (versions up to and including 5.10.1) lets an unauthenticated attacker place script inside the og:title meta tag of a source URL and submit it as a webmention, which is then persisted verbatim into the target post's comment content. Execution is gated on an administrator approving the resulting pending comment, after which the script runs for any user who views the injected page; no public exploit code was identified at time of analysis, and the vendor has released 5.10.2 as the fix.
RemediationAI
Vendor-released patch: Webmention 5.10.2, which adds the sanitizing Item::set_name() method and the output-escaping fixes from pull request 698 (https://github.com/pfefferle/wordpress-webmention/pull/698); upgrade from 5.10.1 or earlier to 5.10.2 or later via the WordPress plugin updater or the plugin's Trac release at https://plugins.trac.wordpress.org/browser/webmention/tags/5.10.2/includes/class-receiver.php. Because exploitation depends on an administrator approving the pending webmention comment that carries the payload, a temporary compensating control is to hold and manually inspect pending webmention comments before approval - particularly rows whose derived content originates from a source page's og:title - with the trade-off of increased moderation workload and delayed legitimate webmentions; disabling webmention receiving entirely on the affected version removes the attack path at the cost of losing the feature. Reviewing the advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/0b283d17-b89f-467d-8a79-cdf7b9bfdb65?source=cve alongside the patch confirms the affected entry points (Meta, Item, Receiver) that should be verified as updated.
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 classic CWE-79 input-sanitization gap spread across three code paths in the plugin. Meta::add_properties() maps the Open Graph og:title value of a fetched source page onto the Item::name property, but Item defines no concrete set_name() method, so the magic Item::__call() handler writes the value raw - unlike the sibling set_content() and set_summary() setters, which pass their input through webmention_sanitize_html(). Item::get_content() later falls back to that raw name whenever content and summary are empty, and Receiver::process() explicitly removes the core wp_filter_kses and wp_filter_post_kses hooks from pre_comment_content before calling wp_new_comment(), so the markup reaches comment_content unfiltered. The assessed vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N reflects a network-reachable, unauthenticated submission (PR:N) that nevertheless needs a victim interaction (UI:R) - specifically an administrator approving the pending webmention comment - with scope change because the injected script runs in the context of pages rendered by the WordPress site. The upstream fix in pull request 698 adds a set_name() method that sanitizes via webmention_sanitize_html() and hardens output escaping in class-comment-walker.php (esc_attr on the title attribute, esc_url on the author URL, esc_html on the host, and a corrected %1$s/%2$s printf format).
Know when Webmention 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:N/UI:R/S:C/C:L/I:L/A:N
Unauthenticated remote submission (AV:N/PR:N/AC:L), but completion depends on an administrator approving the comment (UI:R); script runs in victim browsers (S:C) with limited confidentiality/integrity impact and no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorNVD
DescriptionNVD
The Webmention plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the Open Graph og:title meta tag of a webmention source URL in versions up to, and including, 5.10.1. This is due to insufficient input sanitization: Meta::add_properties() maps og:title to the Item::name property, but Item has no concrete set_name() method, so Item::__call() stores the value raw while sibling set_content()/set_summary() paths route through webmention_sanitize_html(); Item::get_content() then falls back to the raw name when content and summary are empty, and Receiver::process() explicitly removes the core wp_filter_kses / wp_filter_post_kses hooks on pre_comment_content before calling wp_new_comment(), so the payload is persisted to comment_content as-is. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page, after an administrator approves the resulting pending webmention comment. Successful exploitation additionally requires an action by an administrator - the attacker cannot trigger the vulnerability on their own.
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 Webmention
View allStored cross-site scripting in the Webmention WordPress plugin (versions up to and including 5.8.0) lets unauthenticated
Server-Side Request Forgery (SSRF) in WordPress Webmention plugin versions ≤5.6.2 allows unauthenticated remote attacker
Server-Side Request Forgery in Webmention plugin for WordPress (versions up to 5.6.2) allows authenticated attackers wit
EUVD-2026-114592
GHSA-98q7-93hh-5593
NVD
CVE.org
EPSS
Exploit-DB