Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as Contributor-level user
-
ExploitLink arbitrary victim post IDs to own draft
-
ExecutionHandler stores child IDs without read-capability check
-
ImpactRead non-public post titles echoed in editor meta box
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation 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 Contributor level or above on the target WordPress site (PR:L), since the attacker must be able to create/edit a post of their own to act as the 'parent' and must pass the nonce and edit-parent capability check in handle_create_link(). The attacker then supplies arbitrary child post IDs via the 'rp4wp_create_link' parameter of the hidden 'rp4wp_link_related' admin page; LinkRepository::insert() stores them unvalidated and ManageLinks::render() renders their titles through the get_children() no-extra-args fast path. Limiting factors: exploitation is impossible for fully unauthenticated visitors; impact is confined to disclosure of post titles only (not post content, not other fields); and it only affects non-public posts (drafts, pending, private, future, trashed) whose IDs the attacker can reach. These constraints keep real-world risk modest despite the network attack vector. |
| Impact | This is a genuine but low-to-moderate priority issue, not a high-CVSS false alarm - in fact the CVSS base score is only 4.3 (medium), which is consistent with the limited impact. The CVSS vector (AV:N/AC:L/PR:L/UI:N/C:L/I:N/A:N) tells a coherent story that matches the description: network-reachable admin page, low attack complexity, but requires authenticated low-privilege access (PR:L = Contributor-level or above) and yields only limited confidentiality impact (C:L) - the ability to read the titles (not bodies) of non-public posts, with no integrity or availability effect. EPSS is not supplied in the input, so exploitation probability cannot be quantified here. There is no CISA KEV listing and no confirmed working exploit, so there is no evidence of active exploitation. An SSVC decision framework was not provided; the only decision signal is the vuln.today priority label 'this_month', which aligns with a real-but-not-urgent issue - it is neither act_now nor emergency. The signals are mutually consistent (authenticated, low-impact, information-disclosure-only), so there is no conflict to flag; the main missing data points are EPSS and any SSVC automatable/technical-impact scoring. |
| Exploit ScenarioDerived | A user with a Contributor-level (or higher) account creates a draft post they own, then submits crafted 'rp4wp_create_link' requests to the hidden 'rp4wp_link_related' admin page supplying post IDs belonging to higher-privileged users (admin drafts, pending, private, future, or trashed posts). Because the handler never validates that the attacker may read the linked child post, the parent post's editor meta box then renders esc_html($child->post_title), leaking those non-public titles back to the attacker. No public exploit was identified at time of analysis; the references are plugin source lines and a Wordfence advisory rather than exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Related Posts for WordPress through version 3.0.0 allows authenticated users holding Contributor-level access or higher to read the titles of non-public posts they are not authorized to see, including drafts, pending, private, future and trashed posts owned by higher-privileged users. The hidden 'rp4wp_link_related' admin page checks the nonce and the ability to edit the parent post but never verifies that the caller may read the attacker-supplied child post ID, so linking an arbitrary post ID to a draft the attacker owns causes that post's title to be echoed back in the editor meta box. Rated CVSS 4.3 (medium, PR:L, C:L only) with no CISA KEV listing and no public exploit identified at time of analysis; impact is confined to title disclosure for authenticated Contributors and above, so real-world risk is modest rather than urgent.
RemediationAI
No tagged patched release has been independently confirmed in the supplied data; the fix is present upstream in changeset 3757484 (https://plugins.trac.wordpress.org/changeset/3757484/related-posts-for-wp/trunk/src/Admin/LinkScreen/Page.php), which modifies the create-link handler in src/Admin/LinkScreen/Page.php, so the actionable step is to update the plugin as soon as a published version incorporates that changeset and to confirm the fixed version against the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/3ab9af6a-bfe7-4da5-8e60-b20f38cbab36. Because the flaw requires an account able to create or edit a post of its own, the effective compensating control while waiting is to tighten role assignments: audit and reduce the number of Contributor, Author and Editor accounts, and remove Contributor access from users who do not need to author content, accepting the trade-off that this restricts legitimate editorial workflows. Sites that cannot restrict roles and do not depend on the plugin's link-management admin screen should consider deactivating Related Posts for WordPress until a fixed release is deployed, with the side effect of losing related-post functionality on the front end.
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 plugin stores parent/child relationships between posts in a custom link table managed by LinkRepository. The vulnerability class is CWE-862 (Missing Authorization): the handler handle_create_link() in src/Admin/LinkScreen/Page.php performs a nonce check and a capability check on the parent post, but omits any read_post / read_private_posts check on the child post ID supplied through the 'rp4wp_create_link' parameter. LinkRepository::insert() (src/Links/LinkRepository.php) persists that arbitrary child ID without validation. Later, ManageLinks::render() in src/Admin/MetaBox/ManageLinks.php calls LinkRepository::get_children(), whose no-extra-args fast path falls through to array_map('get_post', $child_ids) - a raw post fetch that bypasses capability-aware retrieval - and the result is output as esc_html($child->post_title) inside the parent post's editor meta box. The escaping prevents script injection; the defect is purely the missing authorization gate on the read path, which converts a low-privilege editing account into a title-disclosure oracle for posts the account should not be able to enumerate. The WordPress core capability model separates edit rights from read rights for private and non-public statuses, and this plugin's data layer ignores that separation.
Know when Related Posts For 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:U/C:L/I:N/A:N
Authenticated Contributor access is required so PR:L; exploitation is a straightforward request (AC:L) over the network (AV:N); only post titles leak, giving C:L with no integrity or availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Related Posts for WordPress plugin for WordPress is vulnerable to Sensitive Information Exposure in versions up to, and including, 3.0.0 via the 'rp4wp_create_link' parameter of the hidden 'rp4wp_link_related' admin page. The handle_create_link() handler verifies the nonce and that the current user can edit the parent post, but never checks that the attacker-supplied child post ID is one the user is allowed to read; LinkRepository::insert() stores the arbitrary child ID without validation, and ManageLinks::render() later calls LinkRepository::get_children() in its no-extra-args fast path, which falls through to array_map('get_post', $child_ids) - bypassing read_private_posts/read_post capability checks - and then echoes esc_html($child->post_title) in the parent's editor meta box. This makes it possible for authenticated attackers, with Contributor-level access and above, to read the titles of arbitrary non-public posts (drafts, pending, private, future, trashed) authored by higher-privileged users by linking those post IDs to a draft they own and then reading the resulting meta box.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-111747
GHSA-88jc-p652-m75v
NVD
CVE.org
EPSS
Exploit-DB