Paid Memberships Pro <= 2.6.6 - Unauthenticated SQL Injection
Strategic Overview
- Status
- Patched in 2.6.7
- Affected Version
< 2.6.7- CVSS
- 9.8Critical
- Weakness type
- CWE-89 · Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
- CVE
CVE-2021-25114
At a glance
CVE-2021-25114 is a critical-severity Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in the Paid Memberships Pro WordPress plugin, affecting versions < 2.6.7. It carries a CVSS score of 9.8 (reachable over the network; low attack complexity; high confidentiality, integrity, availability impact). Exploitation requires no authentication. The issue is fixed in version 2.6.7; sites on affected versions should update now. Disclosed January 2022, reported by Krzysztof Zając.
Vulnerability Overview
The Paid Memberships Pro WordPress plugin before 2.6.7 does not escape the discount_code in one of its REST route (available to unauthenticated users) before using it in a SQL statement, leading to a SQL injection
Technical Analysis
The vector marks this flaw as remotely reachable over the network, with low attack complexity — no special timing or configuration is needed, and no privileges on the target site, and no interaction from a victim user. A successful exploit has high impact on confidentiality, integrity, availability — full site compromise territory.
CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
Reaching this weakness in Paid Memberships Pro < 2.6.7 takes no account at all. SQL injection happens when request data is concatenated into a query instead of being bound as a parameter, letting an attacker change the structure of the statement rather than just its values.
A working injection can read any table the database user can see, which on a WordPress install means user records, password hashes and session or API secrets stored in options. For Paid Memberships Pro the fix is 2.6.7: builds < 2.6.7 are affected, anything from 2.6.7 onward is not.
Remediation
Update to version 2.6.7, or a newer patched version
How does WordSec protect against this?
Requests carrying this pattern arrive without a session, so nothing upstream of the firewall gets a chance to reject them: WordSec's web application firewall inspects request payloads before WordPress loads them. None of that substitutes for the fix: Paid Memberships Pro 2.6.7 closes this, and updating the plugin is the step that ends it.
- Firewall
- Login Security
- Alerts
External References
Related records
Same weakness class
- 9.8CVE-2023-23488: Paid Memberships Pro < 2.9.8 SQL Injection
CVE-2023-23488 - 9.1CVE-2024-37486: Paid Memberships Pro <= 3.0.5 SQL Injection
CVE-2024-37486 - 8.8CVE-2021-20678: Paid Memberships Pro <= 2.5.5 SQL Injection
CVE-2021-20678 - 7.7CVE-2023-0631: Paid Memberships Pro <= 2.9.11 SQL Injection
CVE-2023-0631
Other vulnerabilities in Paid Memberships Pro – Content Restriction, User Registration, & Paid Subscriptions
- 7.5CVE-2023-6187: Paid Memberships Pro <= 2.12.3 Arbitrary File Upload
CVE-2023-6187 - 7.5CVE-2014-8801: Paid Memberships Pro < 1.7.15 Directory Traversal
CVE-2014-8801 - 7.2Paid Memberships Pro <= 2.0.5 Open Redirect
- 7.1CVE-2026-4100: Paid Memberships Pro Authenticated (Subscriber+)
CVE-2026-4100 - 6.4CVE-2026-15016: Paid Memberships Pro Stored XSS
CVE-2026-15016 - 6.4CVE-2022-4830: Paid Memberships Pro <= 2.9.8 Stored XSS
CVE-2022-4830 - 6.4Paid Memberships Pro XSS
- 6.4Paid Memberships Pro <= 2.5.0 Cross-Site Scripting
Vulnerability data © Defiant, Inc., provided under the Wordfence Intelligence T&C