Skip to main content

WPLP Cookie Consent CVE-2026-14989

| EUVDEUVD-2026-74775 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-09-09 Wordfence GHSA-79fj-972f-xc72
7.2
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Read wpl_consent_logging_nonce from frontend page source
  2. Delivery
    Craft POST request to wp-admin/admin-ajax.php with JavaScript payload in wpl_user_preference
  3. Exploit
    Payload stored in consent log database
  4. Execution
    Admin reviews consent logs in WordPress dashboard
  5. Persist
    Stored XSS executes in admin browser
  6. Impact
    Session cookie exfiltrated to attacker infrastructure

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The WPLP Cookie Consent plugin (version ≤ 4.4.1) must be installed and active on the WordPress site, with the consent-logging AJAX action registered and reachable. No authentication, no user account, and no privileged access are required - the CVSS vector (PR:N, AC:L) and the description both confirm zero-authentication exploitation. The only functional prerequisite is that the wpl_consent_logging_nonce nonce is emitted on the frontend, which occurs automatically via wp_localize_script() on every page load when the plugin is active. Exploitation is bounded by plugin version (fixed versions beyond 4.4.1 are not affected) and by the requirement that a user or administrator must subsequently visit a page that renders the stored consent preference data for the XSS payload to execute. Sites that have disabled the consent-logging submodule within the plugin settings would not expose the vulnerable AJAX endpoint.

Impact

The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N = 7.2) accurately models this flaw. The most significant real-world risk multiplier is the publicly emitted nonce: most WordPress stored XSS vulnerabilities require at least Subscriber-level authentication, but here the access barrier is zero because the required token is handed to every site visitor. The scope change (S:C) reflects that the injected script executes in a separate browser security context from the server. Impact metrics C:L/I:L are appropriate for XSS - indirect cookie/session theft rather than direct server compromise. No EPSS score was provided in the input data; exploitation probability cannot be quantified numerically but is qualitatively elevated given the zero-prerequisite attack path. The CVE is not in CISA KEV and no public PoC has been identified, suggesting active exploitation has not been observed at time of analysis. Real-world risk is highest for WordPress sites targeting EU/California audiences (the plugin's core user base) where administrative review of consent logs is a routine operational activity - creating a reliable path for a stored payload to reach an authenticated admin session.

Exploit ScenarioDerived

An unauthenticated attacker loads any page on the target WordPress site, extracts the wpl_consent_logging_nonce value from the page's inline JavaScript, and submits a crafted POST request to wp-admin/admin-ajax.php with a JavaScript payload (e.g., a cookie-exfiltration script) in the wpl_user_preference field. The payload is stored in the consent log database, and when a site administrator next reviews the consent logs in the WordPress admin panel, the script silently executes in the admin's browser, exfiltrating their session cookie to an attacker-controlled server and enabling full site takeover.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 09, 2026

Stored cross-site scripting in the WPLP Cookie Consent WordPress plugin (all versions ≤ 4.4.1) enables any unauthenticated site visitor to inject persistent malicious scripts via the wpl_user_preference AJAX parameter. The consent-logging endpoint is registered without authentication requirements, and the protective nonce (wpl_consent_logging_nonce) is publicly broadcast to every page visitor via wp_localize_script(), rendering the nonce mechanism entirely ineffective as an access barrier. Injected payloads execute in the browsers of administrators or users who subsequently view pages rendering consent log data, enabling session hijacking, credential theft, or full administrative account takeover. No public exploit is identified at time of analysis and the CVE is not listed in CISA KEV, but the trivially low exploitation barrier warrants prompt patching.

RemediationAI

Update the WPLP Cookie Consent plugin to the version that incorporates fix commit changeset 3674117 (https://plugins.trac.wordpress.org/changeset?reponame=&old=3674117%40gdpr-cookie-consent&new=3674117%40gdpr-cookie-consent); the exact patched release version number is not confirmed in the available input data - verify the current version in the WordPress plugin directory before updating, and confirm the installed version exceeds 4.4.1. As a compensating control pending patching, deploy a WAF rule blocking JavaScript event handlers and <script> tag patterns in the wpl_user_preference POST parameter on requests to the WordPress AJAX endpoint (wp-admin/admin-ajax.php); note that WAF rules may block legitimate consent values if they contain special characters. Alternatively, disable the consent-logging feature within the plugin's settings if compliance requirements permit, which eliminates the attack surface entirely at the cost of losing consent audit trails. Restrict access to the consent-log admin review page via IP allowlisting to reduce the risk of stored payloads reaching administrative sessions.

Affected VersionsENISA

WPLP Cookie Consent – Cookie Banner & Consent Management for GDPR, CCPA & Google Consent Mode 0 ≤4.4.1

Affected Packages

euvd wplp_cookie_consent_cookie_banner_consent_management_for_gdpr_ccpa_google_consent_mode no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected product is the gdpr-cookie-consent WordPress plugin by WP Legal Pages (CPE: cpe:2.3:a:wplegalpages:wplp_cookie_consent_-_cookie_banner_&_consent_management_for_gdpr,_ccpa_&_google_consent_mode:*:*:*:*:*:*:*:*). The plugin implements a GDPR/CCPA consent-logging subsystem that records visitor preferences via a WordPress AJAX action. The vulnerability stems from CWE-79 (Improper Neutralization of Input During Web Page Generation): the wpl_user_preference POST parameter is accepted by the AJAX handler in class-wpl-consent-logs.php (line 700) and class-wpl-cookie-consent-consent-logs.php (lines 594, 725) without sanitizing HTML special characters on input or escaping on output, allowing injected JavaScript to be stored verbatim in the database and later rendered into HTML. The normally protective WordPress nonce (wpl_consent_logging_nonce) is emitted into the page's inline JavaScript via wp_localize_script() on every frontend page load, meaning any unauthenticated visitor can read a valid nonce directly from the DOM and construct a fully authenticated AJAX request - effectively bypassing WordPress's standard CSRF/access control layer for this endpoint.

Know when Wplegalpages gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Wordfence) PRIMARY 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 7.2 HIGH

Nonce is publicly emitted eliminating all auth barriers (PR:N, AC:L); stored XSS executes across browser scope change (S:C); no server-side CIA directly impacted beyond stored malicious data.

3.1 AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

DescriptionCVE.org

The Cookie Banner for GDPR / CCPA - WPLP Cookie Consent plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'wpl_user_preference' parameter in all versions up to, and including, 4.4.1 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The consent-logging AJAX endpoint is registered for unauthenticated users and its required nonce (wpl_consent_logging_nonce) is publicly emitted via wp_localize_script on the frontend, meaning any unauthenticated site visitor can plant a payload without any prior authentication or privileged access.

Executive ViewAI

Why It Matters

The WPLP Cookie Consent WordPress plugin (versions 4.4.1 and earlier) contains a stored cross-site scripting vulnerability allowing unauthenticated attackers to inject malicious code that executes in administrator browsers, enabling session hijacking, credential theft, and potential full site takeover. WordPress powers approximately 43% of all websites globally, making this a potentially widespread exposure for organizations using this plugin. The vulnerability is particularly dangerous because the protective security token is publicly visible to all site visitors, and no vendor-released patch is currently available.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include: (1) uninstall and disable the plugin if a functional replacement exists; (2) deploy Web Application Firewall rules blocking unauthenticated requests to wp-admin/admin-ajax.php with action=wpl_consent_logging; (3) enforce Content Security Policy headers restricting inline script execution (script-src 'self'); (4) implement IP whitelisting for all WordPress administrative console access; (5) enable comprehensive audit logging on all database tables storing consent data; (6) conduct immediate forensic scan for indicators of compromise including JavaScript injection patterns, unexpected administrator accounts, and unauthorized plugin/theme modifications; (7) establish real-time alerting on POST attempts to the affected endpoint.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Medium
popular GDPR/cookie-consent plugin category, moderate WordPress install base
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy