Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
REST endpoints are network-accessible with no authentication; restricted content is fully exposed; no integrity or availability impact applies.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The Page and Post Restriction plugin for WordPress is vulnerable to Sensitive Information Exposure in versions up to and including 1.4.0 via the WordPress core REST endpoints /wp-json/wp/v2/pages, /wp-json/wp/v2/pages/<id>, /wp-json/wp/v2/posts, and /wp-json/wp/v2/posts/<id>. This is due to the plugin's REST guards - papr_restrict_page_post_rest_api() and the the_posts filter registered by papr_filter_posts() - sourcing their restricted-ID list exclusively from papr_get_restricted_posts_id(), which only reads the per-page metabox options papr_allowed_redirect_for_pages and papr_allowed_redirect_for_posts and never consults the two global toggles papr_access_for_only_loggedin and papr_access_for_only_loggedin_posts that the plugin's own UI describes as 'Make all Pages Private' / 'Make all Posts Private'. This makes it possible for unauthenticated attackers to read the full rendered content of every published page and post on sites configured with the documented global toggles, bypassing the security boundary enforced on the frontend by papr_restrict_logged_in_users().
AnalysisAI
Sensitive information exposure in the Page and Post Restriction WordPress plugin (versions ≤ 1.4.0) allows unauthenticated attackers to read the full rendered content of every published page and post on sites relying on the plugin's global privacy toggles. The plugin's REST API guards - papr_restrict_page_post_rest_api() and the the_posts filter in papr_filter_posts() - consult only per-post/page metabox settings and completely ignore the 'Make all Pages Private' and 'Make all Posts Private' global options, leaving the /wp-json/wp/v2/pages and /wp-json/wp/v2/posts endpoints unguarded. No public exploit is identified at time of analysis, but the attack is trivially executable with a single unauthenticated HTTP GET request.
Technical ContextAI
The Page and Post Restriction plugin (CPE: cpe:2.3:a:cyberlord92:page_and_post_restriction:*:*:*:*:*:*:*:*) provides two distinct restriction mechanisms: per-post/page metabox settings (stored in papr_allowed_redirect_for_pages and papr_allowed_redirect_for_posts) and site-wide global toggles (papr_access_for_only_loggedin and papr_access_for_only_loggedin_posts). The internal helper papr_get_restricted_posts_id() - called by both the REST API guard registered on rest_pre_dispatch and the the_posts filter - only reads the metabox options, never the global toggle options. This creates an authorization decision that is correct for per-post restrictions but structurally incomplete for global restrictions, matching CWE-862 (Missing Authorization): a check exists but fails to consult all relevant access-control state. WordPress's REST API, enabled by default, exposes full post content including rendered blocks and meta to unauthenticated callers when no effective guard intercepts the request.
RemediationAI
Upgrade the Page and Post Restriction plugin to version 1.4.2 or later; the fix is confirmed present in the 1.4.1 plugin repository tag (https://plugins.trac.wordpress.org/browser/page-and-post-restriction/tags/1.4.1/page-and-post-restriction.php#L69) with a subsequent release at 1.4.2 per the trac changeset. For sites unable to update immediately, the most targeted workaround is to migrate from the global 'Make all Pages Private' / 'Make all Posts Private' toggles to per-post/page metabox restrictions, which the guard code does correctly enforce - though this is operationally burdensome on large sites and does not replicate global behavior precisely. As an alternative compensating control, restrict access to /wp-json/wp/v2/pages and /wp-json/wp/v2/posts at the web server or WAF layer to authenticated sessions only; note that this may break REST-dependent themes, mobile apps, or third-party integrations that legitimately require public API access. Wordfence advisory: https://www.wordfence.com/threat-intel/vulnerabilities/id/f01302aa-00ef-440a-9c37-4fde6bb4bb4d.
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 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
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
Same weakness CWE-862 – Missing Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-53188
GHSA-j2cm-38v7-pfcv