CVE-2025-13384 Overview
The CP Contact Form with PayPal plugin for WordPress contains a critical Missing Authorization vulnerability affecting all versions up to and including 1.3.56. The vulnerability exists due to an unauthenticated IPN (Instant Payment Notification) endpoint exposed via the cp_contactformpp_ipncheck query parameter that processes payment confirmations without proper security controls. This flaw enables attackers to bypass payment verification entirely, marking form submissions as paid without completing actual transactions.
Critical Impact
Unauthenticated attackers can forge payment notifications to mark form submissions as paid without making actual payments, potentially leading to significant financial fraud and service theft.
Affected Products
- CP Contact Form with PayPal plugin for WordPress versions up to and including 1.3.56
Discovery Timeline
- 2025-11-22 - CVE-2025-13384 published to NVD
- 2026-04-15 - Last updated in NVD database
Technical Details for CVE-2025-13384
Vulnerability Analysis
This vulnerability falls under CWE-862 (Missing Authorization), representing a fundamental security design flaw in the payment verification process. The plugin implements an IPN-like endpoint that is intended to receive payment confirmation callbacks from PayPal, but critically fails to validate that these requests actually originate from PayPal's servers.
The vulnerable endpoint accepts the cp_contactformpp_ipncheck query parameter and processes incoming POST data containing payment information such as payment_status, txn_id, and payer_email. Under normal circumstances, PayPal IPN endpoints should implement signature validation to verify that notifications are authentic. However, this plugin accepts any incoming request without authentication, nonce verification, or PayPal IPN signature validation.
An attacker can craft HTTP POST requests directly to the vulnerable endpoint, supplying arbitrary values for payment-related fields. The plugin will process these forged notifications as legitimate, updating the database to reflect that payments have been completed when no actual transaction occurred.
Root Cause
The root cause stems from the absence of three critical security controls in the IPN endpoint implementation:
- No Authentication: The endpoint does not require any form of user authentication or API key validation
- No Nonce Verification: WordPress nonce tokens are not checked, allowing requests from any origin
- No PayPal IPN Signature Validation: The plugin fails to verify requests against PayPal's IPN verification service, which would confirm the authenticity of payment notifications
This design oversight allows any external party to send arbitrary payment confirmation data that the plugin blindly trusts and acts upon.
Attack Vector
The attack can be executed remotely over the network without any authentication. An attacker identifies a WordPress site running the vulnerable plugin version and crafts a malicious HTTP POST request to the site's root URL with the cp_contactformpp_ipncheck parameter. The request body contains forged payment data including a successful payment_status, fabricated txn_id, and arbitrary payer_email.
The vulnerable code paths are documented in the WordPress Plugin Code Review showing the endpoint processing logic at lines 541, 877, and 925 of cp_contactformpp_functions.php. When the plugin receives this forged notification, it updates the associated form submission record to indicate payment completion, effectively granting the attacker access to paid services or products without financial transaction.
Detection Methods for CVE-2025-13384
Indicators of Compromise
- Unexpected HTTP POST requests to WordPress URLs containing the cp_contactformpp_ipncheck query parameter from non-PayPal IP addresses
- Form submission records marked as paid without corresponding legitimate PayPal transaction IDs in PayPal account history
- Anomalous patterns of payment confirmations occurring without associated PayPal webhook activity
- POST requests containing payment_status, txn_id, or payer_email parameters originating from sources outside PayPal's documented IP ranges
Detection Strategies
- Monitor web server access logs for requests containing cp_contactformpp_ipncheck parameter and correlate with PayPal's known IP address ranges
- Implement web application firewall (WAF) rules to flag or block IPN-like requests that do not originate from PayPal servers
- Configure alerting for sudden increases in successful payment status updates that lack corresponding PayPal API activity
Monitoring Recommendations
- Enable detailed logging for all payment-related WordPress plugin activities
- Set up database monitoring to detect direct modifications to payment status fields
- Review the Wordfence Vulnerability Report for updated threat intelligence
- Regularly audit form submissions marked as paid against actual PayPal transaction records
How to Mitigate CVE-2025-13384
Immediate Actions Required
- Update the CP Contact Form with PayPal plugin to the latest patched version immediately
- Review all recent form submissions marked as paid and verify against actual PayPal transaction records
- Temporarily disable the plugin if an update is not yet available and paid form functionality is critical
- Implement WAF rules to restrict IPN endpoint access to PayPal's documented IP ranges as an interim measure
Patch Information
A security update addressing this vulnerability is available. The WordPress Plugin Change Log documents the changes made to resolve this issue. Site administrators should update to a version newer than 1.3.56 through the WordPress admin dashboard or by manually downloading the updated plugin from the WordPress plugin repository.
Workarounds
- Implement server-level IP whitelisting to restrict access to the IPN endpoint to PayPal's documented IP ranges only
- Add custom validation code via a WordPress hook to verify IPN requests against PayPal's verification endpoint before processing
- Consider temporarily disabling PayPal integration features until the plugin can be updated
- Deploy a web application firewall with rules specifically targeting forged IPN requests
# Example .htaccess rule to restrict IPN endpoint access to PayPal IP ranges
# Add to WordPress root .htaccess file
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} cp_contactformpp_ipncheck [NC]
RewriteCond %{REMOTE_ADDR} !^64\.4\.248\. [NC]
RewriteCond %{REMOTE_ADDR} !^66\.211\.170\. [NC]
RewriteCond %{REMOTE_ADDR} !^173\.0\. [NC]
RewriteRule .* - [F,L]
</IfModule>
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


