Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as WordPress Contributor
-
DeliverySend REST API POST with malicious CSS payload to zakra_menu_item_color meta field
-
ExploitPayload stored without sanitization
-
ExecutionVictim (admin or user) loads page with affected menu
-
PersistInjected script executes in victim browser
-
ImpactSteal session token or perform unauthorized admin actions
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 | Exploitation requires an authenticated account with at least Contributor-level access to the WordPress site. The Zakra theme must be the active theme (versions up to and including 4.2.0) - it need not be in any special configuration beyond activation. The REST API must be accessible (WordPress REST API is enabled by default and commonly exposed publicly). No additional plugins, non-default settings, or specific configurations are required beyond theme activation and a valid low-privilege account. Exploitation is limited by the need for at minimum a Contributor credential - sites that disable open registration or restrict the Contributor role have meaningfully reduced exposure. The stored payload only executes when a victim user subsequently browses to a page containing the affected menu items, meaning impact depends on traffic and the value of targeted victim sessions (e.g., administrator accounts). |
| Impact | The CVSS 3.1 base score of 6.4 (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) appropriately reflects the real-world risk profile. Network attack vector and low complexity are accurate: exploitation requires only a standard authenticated REST API POST request. PR:L is correct since Contributors (the lowest posting role in WordPress by default) can write these meta fields. The Scope:Changed metric is justified because the XSS payload executes in victim browsers outside the contributor's own privilege boundary. UI:N is consistent with stored XSS convention where the attacker does not need to deliver a link - the payload fires automatically for any visitor. No EPSS score was provided in the input data, and there is no CISA KEV listing, meaning widespread active exploitation is not confirmed. No public POC exploit code is identified at time of analysis. The primary real-world risk is privilege escalation: a Contributor could inject JavaScript to steal admin session cookies or redirect administrators to attacker-controlled pages, potentially achieving full site takeover. The sanitization bypass via the REST API is a non-obvious but reliably exploitable path, making this a genuine priority for WordPress sites allowing Contributor registrations or untrusted contributors. |
| Exploit ScenarioDerived | An attacker registers or obtains a Contributor-level account on the target WordPress site. They issue a REST API POST request to update the zakra_menu_item_color post meta field with a value containing a malicious JavaScript payload (e.g., a CSS string break followed by a script tag or expression). Because the REST API path applies no sanitize_callback, the raw payload is stored. When any administrator or visitor subsequently loads any page rendering that menu item, the injected script executes in their browser, enabling session cookie theft, credential harvesting, or unauthorized administrative actions. No public POC has been identified, but the exploitation path is straightforward for any attacker familiar with WordPress REST API meta registration mechanics. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 03, 2026
Stored Cross-Site Scripting in the Zakra WordPress theme (versions up to and including 4.2.0) allows authenticated Contributors to inject arbitrary JavaScript into site pages via the REST API. The vulnerability stems from a sanitization bypass: while the classic editor code path correctly applies sanitize_hex_color() to three menu-color post meta fields, the REST API registration omits any sanitize_callback, permitting unfiltered values to be written. Those values are later concatenated unsanitized into inline CSS and rendered on every page load, triggering stored XSS against any site visitor. No active exploitation (CISA KEV) is confirmed; a vendor-released patch is available in version 4.2.1.
RemediationAI
Upgrade the Zakra theme to version 4.2.1 or later, which is confirmed to contain the fix per the WordPress themes Trac changeset (https://themes.trac.wordpress.org/changeset?reponame=&new=330192%40zakra%2F4.2.1&old=297420%40zakra%2F4.2.0). The fix should add a sanitize_callback (such as sanitize_hex_color) to the register_post_meta() calls for the three affected fields to enforce validation on the REST API write path. If an immediate upgrade is not possible, administrators should restrict the Contributor role to only fully trusted users, effectively raising the minimum privilege threshold for exploitation. Alternatively, a Web Application Firewall rule blocking REST API writes to the zakra_menu_item_color, zakra_menu_item_hover_color, and zakra_menu_item_active_color post meta keys can serve as a compensating control, though this may break legitimate theme color customization via the block editor. The Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/bbda67a3-0413-4d8e-8157-84c9c87b8695 should be consulted for additional remediation guidance.
Affected VersionsENISA
Affected Packages
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 Zakra theme by ThemeGrill (CPE: cpe:2.3:a:themegrill:zakra:*:*:*:*:*:*:*:*), a free WordPress theme distributed via the official themes repository. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation). Specifically, three post meta keys - zakra_menu_item_color, zakra_menu_item_hover_color, and zakra_menu_item_active_color - are registered with register_post_meta() using 'show_in_rest' => true and 'auth_callback' => '__return_true' but without a sanitize_callback parameter. WordPress applies registered sanitize_callbacks on both classic editor and REST API writes; without one, REST API write paths receive no sanitization. The sanitized classic-editor path calls sanitize_hex_color(), which enforces valid hex color format. The unsanitized values are later retrieved via get_post_meta() and directly concatenated into CSS rule strings passed to wp_add_inline_style(), which outputs them into the page HTML without escaping, completing the stored XSS sink.
Know when Zakra 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
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Network REST API vector, no special conditions, Contributor authentication required, scope changes to victim browser; no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Zakra theme for WordPress is vulnerable to Stored Cross-Site Scripting via post meta values in all versions up to, and including, 4.2.0. This is due to the theme registering three post meta fields (zakra_menu_item_color, zakra_menu_item_hover_color, and zakra_menu_item_active_color) with 'show_in_rest' => true and 'auth_callback' => '__return_true', but without any sanitize_callback parameter in the register_post_meta() calls. While the classic editor save path applies sanitize_hex_color() sanitization, the REST API path completely bypasses this protection. The unsanitized meta values are then retrieved via get_post_meta() and concatenated directly into CSS strings that are output through wp_add_inline_style() without any escaping. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses the injected page.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
EUVD-2026-41523
GHSA-vwhw-cgc3-f4mh
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB