CVE-2026-39514

Paid Membership Subscriptions – Effortless Memberships, Recurring Payments & Content Restriction <= 2.17.3 - Reflected Cross-Site Scripting

mediumImproper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
6.1
CVSS Score
6.1
CVSS Score
medium
Severity
3.0.0
Patched in
11d
Time to patch

Description

The Paid Membership Subscriptions – Effortless Memberships, Recurring Payments & Content Restriction plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 2.17.3 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link.

CVSS Vector Breakdown

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Low
Confidentiality
Low
Integrity
None
Availability

Technical Details

Affected versions<=2.17.3
PublishedApril 20, 2026
Last updatedApril 30, 2026

What Changed in the Fix

Changes introduced in v3.0.0

Loading patch diff...

Source Code

WordPress.org SVN
Research Plan
Unverified

deactivate'; ``` Wait, there's no reflection of `$_GET` here. * Let's try the Dashboard page. * Page: `admin.php?page=pms-dashboard-page` * Try parameters: `pms_add_ons_action`, `interval`, `search`. * *Wait!* I found it! Look at `assets/libs/pms-add-ons-lis…

Show full research plan

deactivate';
```
Wait, there's no reflection of $_GET here.

*   Let's try the Dashboard page.
*   Page: `admin.php?page=pms-dashboard-page`
*   Try parameters: `pms_add_ons_action`, `interval`, `search`.

*   *Wait!* I found it! Look at `assets/libs/pms-add-ons-listing/pms-add-ons-listing.php` line 185.
    ```php
    $base_url = admin_url( 'admin.php?page='. sanitize_text_field( $_REQUEST['page'] ) );
    ```
    If the admin is on `admin.php?page=pms-add-ons`.
    If the plugin uses this `$base_url` to generate links.
    What if we add another parameter to the `page`?
    `admin.php?page=pms-add-ons&test="><script>alert(1)</script>`
    Does `test` get reflected?

*   Actually, let's look at the description again: "arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link."
*   This sounds like the XSS payload is *in the link*.
*   Example: `https://site.com/wp-admin/admin

Check if your site is affected.

Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.