Contact Form 7 – PayPal & Stripe Add-on <= 2.4.9 - Unauthenticated Payment Bypass via Insufficient Verification of Data Authenticity via PayPal IPN Handler ('invoice'/'mc_gross' Verification)
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: yes
- Technical impact: partial
Summary
The Contact Form 7 – PayPal & Stripe Add-on plugin for WordPress is vulnerable to Payment Bypass via Insufficient Verification of Data Authenticity in all versions up to, and including, 2.4.9. Although `cf7pp_paypal_ipn_handler()` correctly validates IPN authenticity by posting back to PayPal with `cmd=_notify-validate`, it fails to compare the IPN payload's `mc_gross` (payment amount), `mc_currency`, or `receiver_email` fields against the corresponding stored order values before passing the attacker-controlled `invoice` field directly to `cf7pp_complete_payment()`, which marks the order completed after only an integer cast with no amount verification. This makes it possible for unauthenticated attackers to mark arbitrary high-value pending orders as fully paid by making a minimal real PayPal payment and crafting an IPN whose `invoice` parameter references the targeted order, effectively completing purchases without tendering the required payment amount.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: yes · Technical impact: partial
- Record last updated
Affected versions
- scottpaterson Contact Form 7 – PayPal & Stripe Add-on
through 2.4.9
References 8
plugins.trac.wordpress.org
- browser/contact-form-7-paypal-add-on/tags/2.4.8/includes/payments/paypal_handler.php#L106
- browser/contact-form-7-paypal-add-on/tags/2.4.8/includes/payments/paypal_handler.php#L75
- browser/contact-form-7-paypal-add-on/tags/2.4.8/includes/payments/functions.php#L31
- browser/contact-form-7-paypal-add-on/tags/2.4.6/includes/payments/paypal_handler.php#L106
- browser/contact-form-7-paypal-add-on/tags/2.4.6/includes/payments/paypal_handler.php#L75
- browser/contact-form-7-paypal-add-on/tags/2.4.6/includes/payments/functions.php#L31
- changeset/3551197/contact-form-7-paypal-add-on