CVE-2026-19945
Threat Intelligence Report: CVE-2026-19945
Executive Summary
CVE-2026-19945 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the WP Crowdfunding plugin for WordPress, impacting all versions up to and including 2.2.1. The vulnerability resides in the first_name parameter, which suffers from insufficient input sanitization and output escaping, allowing authenticated attackers with subscriber-level access or above to inject arbitrary web scripts. The stored payload executes when an administrator views any user's profile via the ?show_user_id= parameter, enabling cross-privilege script execution in the admin's browser session. With a CVSS score of 6.4 and no patch currently available, affected WordPress installations are at risk of account compromise and administrative session hijacking.
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.
No signup required
Technical Analysis
Vulnerability Class and Mechanism
This vulnerability is categorized under CWE-79 (Improper Neutralization of Input During Web Page Generation - Cross-Site Scripting). The flaw is a Stored XSS, also known as Persistent XSS, which occurs when user-supplied data is persisted to the application's storage (in this case, the WordPress user profile) and later rendered to other users without proper sanitization or output encoding.
Root Cause
The WP Crowdfunding plugin processes the first_name parameter as part of user profile management. The plugin fails to properly sanitize input during data ingestion and fails to escape output during data rendering. Specifically:
Insufficient input sanitization: When an authenticated user updates their profile, the
first_namefield is not sanitized to remove or neutralize HTML/JavaScript payloads before being stored in the database.Insufficient output escaping: When the plugin renders user profile information (specifically the
first_namevalue) via the?show_user_id=parameter, the output is not escaped to prevent browser interpretation of embedded script content.
Attack Surface
The attack surface is the WordPress user profile editing functionality exposed to authenticated users. WordPress subscriptions are free to obtain in most configurations (registration is enabled by default), making the attack broadly accessible.
The vulnerable parameter is exposed through the WP Crowdfunding plugin's handling of the first_name user meta field. The plugin likely renders user information—including the first_name value—when an administrator views user details using the ?show_user_id= query parameter. This parameter instructs WordPress/admin dashboards to display details for a specific user ID.
Why This Is Significant
The cross-privilege execution aspect distinguishes this from a typical stored XSS. The payload is rendered not only when the attacker accesses their own profile but critically when an administrator with higher privileges views the attacker's profile. This enables privilege escalation from a low-privileged subscriber account toward administrative control.
The CVSS vector highlights the key risk factors:
- AV:N (Network): Exploitable over the network, no physical/adjacent access required.
- AC:L (Low): No special conditions or race conditions are required for exploitation.
- PR:L (Low): Requires only subscriber-level authentication.
- UI:N (None): The attacker requires no victim interaction beyond the administrator merely accessing the injected page.
- S:C (Changed): The compromise of the vulnerable component affects the broader security scope—administrative session compromise extends beyond the plugin itself.
- C:L/I:L (Low Confidentiality/Integrity Impact): The confidentiality and integrity impact assessments are low, but the scope change (S:C) is the critical element indicating the blast radius extends past the vulnerable application.
Exploitation Scenarios
Attack Chain Overview
Note: No public PoC or exploit code is currently available. The attack chain described below is inferred from the vulnerability class (Stored XSS) and the explicit technical details provided in the NVD description.
Step 1: Target Identification and Reconnaissance
The attacker identifies WordPress sites running the WP Crowdfunding plugin with a version ≤ 2.2.1. This reconnaissance can be performed via:
- Banner grabbing and content inspection for
wp-content/plugins/wp-crowdfunding/markers. - Checking the WordPress admin footer or meta tags exposing plugin versions.
- Scanning for obvious plugin indicators in page content or headers.
Criminal actors would use automated scanners (e.g., WPScan) to fingerprint the plugin and version.
Step 2: Authentication and Account Establishment
The attacker must have at least subscriber-level access. Attackers can:
- Self-register if the WordPress site allows open registration (default configuration).
- Purchase or compromise a low-privilege account.
- Enumerate existing subscriber accounts for takeover via credential stuffing or brute force.
Step 3: Payload Injection
The attacker navigates to their user profile editing page (typically accessible via the WordPress admin or profile edit forms) and locates the first_name field. The attacker submits a malicious payload as the first_name value. Example payloads at the vulnerability-class level include:
<script>/* malicious JavaScript execution logic */</script>
or event-handler based vectors such as:
<img src=x onerror="/* malicious logic */">
Since the field lacks input sanitization, the raw payload is accepted and stored in the WordPress user meta database table (wp_usermeta).
Step 4: Payload Delivery and Execution
The stored payload remains dormant until triggered. The trigger condition, per the NVD description, is when an administrator views the attacker's user profile via the ?show_user_id= parameter. When the WP Crowdfunding plugin renders the profile data, the plugin does not escape the HTML in the first_name field. The user's browser interprets the injected HTML/JavaScript, executing the payload in the administrative session context.
Step 5: Post-Exploitation
With script execution in the admin's browser:
- Session hijacking: The payload steals the administrator's session cookie, allowing the attacker to impersonate the admin.
- Account takeover: The payload can create a new administrative user account, changing the user's role from subscriber to administrator.
- Backdoor persistence: The payload can install a persistent backdoor (e.g., a malicious plugin/theme or a webshell via existing WordPress functionality).
- Data exfiltration: Sensitive site data, user databases, and potentially server credentials accessible from the admin panel can be exfiltrated.
- Further lateral movement: If the WordPress server connects to other internal systems, the compromised admin account can serve as a pivot point.
Attack Scenario Summary
| Stage | Description |
|---|---|
| Reconnaissance | Identify vulnerable client with WP Crowdfunding ≤ 2.2.1 |
| Access acquisition | Obtain subscriber account (self-registration or compromise) |
| Injection | Submit malicious first_name containing XSS payload |
| Trigger | Administrator loads victim user profile via ?show_user_id= |
| Exploitation | Arbitrary JS executes in admin session context |
| Post-exploitation | Session hijack, privilege escalation, site compromise |
Impact Assessment
Business Impact
Confidentiality Impact (Low): Successful exploitation can expose admin-level data to the attacker, including the WordPress admin session data, access to site configuration files, user databases, and potentially the underlying server file system if plugin vulnerabilities allow file operations.
Integrity Impact (Low): The attacker gains the ability to modify content, inject further malicious content into site pages, deface the website, or modify critical site configuration settings.
Availability Impact (None): The CVSS vector does not indicate direct availability impacts. However, secondary effects (e.g., site takeover) could indirectly disrupt availability if the attacker uses their access destructively.
Affected Systems
- Primary: WordPress installations with the WP Crowdfunding plugin (versions ≤ 2.2.1) installed and activated.
- Users: All subscriber-level and above accounts can inject payloads.
- Targets: Administrative users who view profile data are the direct victims of the cross-privilege execution.
- Organizations: Businesses that rely on crowdfunding platforms built with this plugin (fundraising sites, donation-based sites, equity crowdfunding platforms).
Blast Radius
The scope-change metric (S:C) in the CVSS vector signals that the impact extends beyond the vulnerable application. Compromise of the WordPress administrative session has implications for:
- The entire WordPress site (all posts, pages, media, users, settings).
- Connected third-party services (payment gateways, CRM integrations, email systems).
- Potentially the hosting infrastructure if additional privilege escalation occurs.
Exploitation Likelihood
Despite no public PoC being available at the time of writing, several factors elevate exploitation likelihood:
- The plugin's subscriber-level access requirement lowers the authentication bar significantly.
- Stored XSS in profile fields is a well-known vulnerability class with documented exploitation patterns.
- WordPress's ubiquity means large numbers of potential targets exist.
- The attacker does not require victim interaction beyond the admin accessing a profile page, which is a routine administrative task.
- No patch survives, meaning all deployments remain vulnerable indefinitely until a fix is released.
Detection Guidance
The following detection content is designed to identify exploitation attempts for CVE-2026-19945. These rules assume standard WordPress deployment patterns and should be tuned to the specific environment.
Sigma Rule
title: WP Crowdfunding Plugin Stored XSS - first_name Parameter Injection
id: 5f83a5c6-8b3e-4c6f-9a2e-7d4f1b3c9e55
status: experimental
description: Detects attempts to inject script content into the first_name parameter used by the WP Crowdfunding plugin, indicative of CVE-2026-19945 exploitation.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-19945
author: Valtersit Threat Intelligence
date: 2026/01/15
tags:
- attack.t1190
- attack.initial-access
logsource:
category: webserver
product: apache
definition: HTTP access logs for WordPress deployments with WP Crowdfunding plugin
detection:
selection_first_name_script:
http.url|contains:
- 'first_name='
- '%66%69%72%73%74%5f%6e%61%6d%65%3d'
selection_payload_chars:
http.url|contains|any:
- '<script>'
- '%3Cscript%3E'
- '<script>'
- '%3C%2Fscript%3E'
- '3c7363726970743e'
- 'onerror'
- 'javascript:'
selection_auth_context:
http.url|contains: 'wp-admin/profile.php'
condition: selection_first_name_script and selection_payload_chars
falsepositives:
- Legitimate profile name fields containing typographic HTML characters (rare)
- Security scanners performing XSS vulnerability checks
level: high
YARA Rule
rule WP_Crowdfunding_CVE_2026_19945_XSS {
meta:
author = "Valtersit Threat Intelligence"
description = "Detects malicious script patterns associated with CVE-2026-19945 WP Crowdfunding stored XSS"
date = "2026-01-15"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-19945"
cve = "CVE-2026-19945"
severity = "high"
strings:
$xss1 = "<script>" ascii wide
$xss2 = "</script>" ascii wide
$xss3 = "onerror=" ascii wide
$xss4 = "onload=" ascii wide
$xss5 = "javascript:" ascii wide
$xss6 = "document.cookie" ascii wide
$xss7 = "first_name" ascii wide
$xss8 = "show_user_id" ascii wide
$xss9 = ".php?show_user_id=" ascii wide
$xss10 = "fetch(" ascii wide
$xss11 = "XMLHttpRequest" ascii wide
$xss12 = "eval(" ascii wide
$xss13 = "alert(1)" ascii wide
condition:
uint16(0) == 0x3C21 and // Looks for HTML content
(
(2 of ($xss1, $xss2, $xss3, $xss4, $xss5, $xss12, $xss13)) and
(1 of ($xss6, $xss10, $xss11)) and
(1 of ($xss7, $xss8, $xss9))
)
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (msg:"ET EXPLOIT WP Crowdfunding CVE-2026-19945 Stored XSS Attempt"; flow:established,to_server; content:"POST"; http_method; content:"profile.php"; http_uri; content:"first_name="; http_client_body; content:"<script>"; http_client_body; sid:202600001; rev:1; reference:cve,CVE-2026-19945; classtype:web-application-attack; priority:1;)
Elastic Detection
sequence by source.ip with maxspan=15s
[network where event.category == "web" and network.protocol == "http"
and http.request.method == "POST" and http.request.body.content_type == "application/x-www-form-urlencoded"
and http.request.body.content contains "first_name"
and (http.request.body.content contains "<script>" or
http.request.body.content contains "javascript:" or
http.request.body.content contains "onerror=")]
[network where event.category == "web" and network.protocol == "http"
and http.request.uri contains "show_user_id="]
Splunk SPL Query
index=web sourcetype=access_combined
| where like(uri, "%show_user_id=%")
| rex field=uri "show_user_id=(?<target_user>\d+)"
| join type=inner target_user [
search index=web sourcetype=access_combined
| rex field=uri "show_user_id=(?<shown_id>\d+)"
| stats count by shown_id
]
| search (uri LIKE "%<script>%" OR uri LIKE "%3Cscript%3E%" OR uri LIKE "%javascript:%" OR uri LIKE "%onerror=%")
| table _time, src_ip, user, uri, status
| eval threat_indicator = "WP_Crowdfunding_CVE-2026-19945_XSS"
| sort -_time
Wazuh OSSEC Rule
<group name="wordpress,">
<rule id="100210" level="12">
<decoded_as>json</decoded_as>
<field name="url">\.php\?show_user_id=</field>
<regex>first_name=.*(<script|%3Cscript|<SCRIPT|%3C%2Fscript)</regex>
<description>WordPress WP Crowdfunding CVE-2026-19945 Stored XSS payload detected in first_name parameter</description>
<mitre>
<id>T1190</id>
</mitre>
<group>attack.initial_access,</group>
<options>no_full_log</options>
<alert>
<action>alert</action>
<severity>high</severity>
</alert>
</rule>
<rule id="100211" level="10">
<decoded_as>json</decoded_as>
<field name="url">wp-admin/profile\.php</field>
<field name="url">first_name=</field>
<description>Potential CVE-2026-19945 exploitation event - profile update with XSS payload markers</description>
<group>attack.initial_access,</group>
<if_sid>100210</if_sid>
</rule>
</group>
Mitigation & Patch Guidance
Patch Status
Patch Confidence: 0/4 — UNPATCHED
No patch evidence has been identified from any tracked source. The vendor has not released a patched version as of this report's publication date. All versions of WP Crowdfunding up to and including 2.2.1 remain vulnerable.
1. Immediate Mitigations
Since no vendor patch exists, the following immediate steps should be considered:
- Disable/deactivate the WP Crowdfunding plugin until a patched version is released. Restrict any user-facing functionality that relies on the plugin.
- Restrict subscriber-level user registration — disable open registration to prevent attackers from easily obtaining subscriber accounts.
- Restrict access to profile pages — if feasible, limit which users can view profile data and restrict administrative profile viewing.
- Add Web Application Firewall (WAF) rules to filter requests containing XSS payload markers within
first_nameparameter values. - Remove or quarantine any suspicious subscriber accounts that contain script-like markers in their stored profile fields.
2. Patch/Upgrade Steps
- Monitor the WP Crowdfunding plugin repository for new releases.
- When a patched version becomes available, apply the update immediately.
- Expected patch would implement:
sanitize_text_field()for thefirst_nameparameter on input.esc_html()oresc_attr()for output rendering of user profile data.
3. Long-Term Hardening
- Implement CSP (Content Security Policy) headers to restrict script execution, limiting XSS impact even if injection occurs.
- Subscribe to vendor security advisories from Themeum (the WP Crowdfunding vendor) and the WordPress plugin update notifications.
- Enforce strict user registration policies — require admin approval or email verification for all new accounts.
- Conduct a security audit of the WordPress deployment, focusing on user meta persistence and output rendering.
- Utilize a WordPress security scanner (e.g., WPScan) to identify vulnerable plugins and versions proactively.
- Enforce least privilege — restrict profile viewing capabilities and ensure admins don't view profiles with suspicious content.
- Implement input validation on custom fields to whitelist expected character patterns (e.g., names should only contain alphanumeric characters and spaces).
- Enable WordPress debug logging for early detection of anomalies.
References
- NVD Entry for CVE-2026-19945 — https://nvd.nist.gov/vuln/detail/CVE-2026-19945
- WordPress Plugin Repository — WP Crowdfunding — https://wordpress.org/plugins/wp-crowdfunding/
- CWE-79 Definition (XSS) — https://cwe.mitre.org/data/definitions/79.html
- OWASP Cross-Site Scripting Prevention Cheat Sheet — https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
- MITRE ATT&CK T1190 — https://attack.mitre.org/techniques/T1190/
Threat Actor Campaigns and Exploit-in-the-Wild Evidence: As of this report, no known threat actor campaigns or exploitation in the wild have been publicly documented for CVE-2026-19945. However, the vulnerability's characteristics (stored XSS in a widely-deployed WordPress plugin with subscriber-level exploitation capability) make it highly likely to attract attention from opportunistic threat actors and botnet operators. Security teams should monitor WordPress-focused threat intelligence sources for emerging Indicators of Compromise (IOCs) related to this vulnerability.
Report generated by Valtersit Threat Intelligence — January 2026
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.