Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as contributor-level user
-
DeliveryCreate Custom Font post with script in 'variations' repeater sub-field
-
ExploitPayload saved unescaped to post meta
-
ExecutionAdministrator opens Custom Fonts admin listing
-
ImpactScript executes in admin browser session
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 | Requires an authenticated WordPress account at contributor level or above on a site running Themify Builder <= 7.8.4. The attacker must create or edit a Custom Font (tb_cf) post and inject payload into the 'variations' repeater field's sub-fields (style, or woff/woff2/ttf/svg/eot URL values) - these bypass the wp_kses_data() sanitization that is only applied to 'textbox'/'textarea' field types. Execution is gated on a second user (typically an administrator) subsequently visiting the Custom Fonts admin listing page where render_columns() echoes the value unescaped inside a <style> block. Limiting factors: contributor-level authentication is mandatory (not exploitable anonymously), the payload only fires when a privileged user browses the specific admin listing, and the plugin must be installed and active. |
| Impact | This is a moderate-severity stored XSS (CVSS 6.4, CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) whose real-world priority is bounded by its authentication requirement. The vector's AV:N/AC:L/UI:N signals a low-friction network-reachable flaw, but PR:L is the decisive limiter: exploitation requires an authenticated contributor-level (or higher) account, so this is not a mass-exploitable unauthenticated bug. The scope change (S:C) and C:L/I:L reflect the classic XSS pattern where a low-privileged author injects script that executes in a higher-privileged admin's browser session, enabling privilege escalation toward full site takeover - the reason stored XSS in WordPress plugins is treated seriously despite modest base scores. No EPSS score and no KEV status were supplied in the input, and the Decision label is 'this_month' (not act_now/emergency), which is consistent with a patch-this-cycle rather than drop-everything posture. No public exploit code or PoC reference is present among the sources (only Wordfence threat intel, plugin source lines, and the fix changeset), so there is no evidence of active exploitation or available weaponization. Net: a legitimate issue to remediate within the normal cycle on sites that grant contributor access to untrusted users, but low urgency on sites where all authors are trusted. |
| Exploit ScenarioDerived | An attacker who holds (or phishes/registers for) a contributor-level account creates or edits a Custom Font (tb_cf) post and places a JavaScript payload inside a 'variations' repeater sub-field (e.g., the style or font-file URL values), which is written to post meta without sanitization. When an administrator later opens the Custom Fonts admin listing, the stored payload is echoed unescaped inside a <style> block and executes in the admin's authenticated session, allowing session/account actions on their behalf. No public exploit identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Stored cross-site scripting in the Themify Builder WordPress plugin affects all versions up to and including 7.8.4: authenticated users holding contributor-level access or higher can write arbitrary markup into the 'variations' repeater sub-fields (style, or the woff/woff2/ttf/svg/eot URL values) of a Custom Font (tb_cf) post, because Themify_Metabox::_save_meta() only applies wp_kses_data() when the field type is 'textbox' or 'textarea' and stores repeater values through update_post_meta() unfiltered. The injected content is later echoed without escaping by Themify_Custom_Fonts::render_columns() inside a <style> block on the Custom Fonts admin listing, so the script runs when a privileged user (typically an administrator) opens that page. The CVSS 3.1 score is 6.4 (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N), and no public exploit was identified at time of analysis; real-world priority is bounded by the mandatory contributor-level account, the need for the plugin to be active, and the requirement that a second, higher-privileged user visit the specific admin listing.
RemediationAI
An upstream fix has been committed to the plugin repository in changeset 3774070 (https://plugins.trac.wordpress.org/changeset?reponame=&old=3774070%40themify-builder&new=3774070%40themify-builder), which is the authoritative patch reference in the CVE record; a released, tagged plugin version containing that change was not independently confirmed from the available data, so verify the current changelog before upgrading and move off 7.8.4 as soon as a build carrying the fix is published. Because no fixed tagged version could be confirmed at time of analysis, sites that cannot immediately upgrade should reduce exposure at the specific attack surface: remove or restrict the ability of contributor-level and lower accounts to create or edit Custom Font (tb_cf) posts (for example by adjusting role capabilities or the post type's capabilities), which stops the write primitive but limits legitimate font-management workflows for those roles; audit existing tb_cf posts and their 'variations' post meta for unexpected style declarations or font URLs (including javascript: and event-handler payloads) and clean any injected entries, since existing stored payloads remain live after patching; and, as a last resort, deactivate Themify Builder until a patched build is available, accepting the loss of the builder's front-end layouts. Reviewing the Custom Fonts admin listing is the only way the stored payload fires, so administrators should avoid opening that screen on unpatched sites except when cleaning the affected meta. Additional detail and any updated fix version are published in the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/cf80f304-f79d-4863-b57a-d273daa5fe7f?source=cve.
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
Themify Builder ships its own metabox framework (Themify_Metabox) that serialises Custom Font post types (tb_cf) into WordPress post meta. The save routine, Themify_Metabox::_save_meta(), branches on the declared field type and only routes values through wp_kses_data() for 'textbox' and 'textarea' fields; the 'repeater' field type in the Custom Font 'variations' definition has no equivalent sanitisation, so each attacker-supplied sub-field is passed straight into update_post_meta() and persisted verbatim. The companion renderer, Themify_Custom_Fonts::render_columns(), reads that meta and prints the stored style and font-file URL values inside a <style> block on the Custom Fonts administration listing without esc_* or wp_kses output escaping, which is the sink that turns the persisted meta into executable script. This is CWE-79 (improper neutralisation of input during web page generation / cross-site scripting), with both the input-sanitisation and output-escaping defences missing on the same data path. The CPE cpe:2.3:a:themifyme:themify_builder:*:*:*:*:*:*:*:* covers the plugin across versions up to 7.8.4; the vulnerable code paths are visible in the 7.8.4 tagged source at class-themify-custom-fonts.php (render_columns) and themify-metabox-core.php (the save logic). The CVSS scope-change component (S:C) reflects that the script executes in the admin context of a different, higher-privileged user than the one who stored the payload.
Know when Themify Builder 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-reachable admin screen with low-complexity injection; PR:L reflects the mandatory contributor account; S:C and C:L/I:L capture script executing in a different (admin) security context; no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Themify Builder plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'variations' repeater field of Custom Font (tb_cf) posts in versions up to, and including, 7.8.4. This is due to insufficient input sanitization and output escaping on the variations post meta: Themify_Metabox::_save_meta() only passes the value through wp_kses_data() when the field type is 'textbox' or 'textarea', so the 'repeater' field writes attacker-controlled sub-fields (style, woff/woff2/ttf/svg/eot URLs) to update_post_meta() verbatim, and Themify_Custom_Fonts::render_columns() later echoes those values unescaped inside a <style> block on the Custom Fonts admin listing. 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 an injected page (specifically, the Custom Fonts admin listing).
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.
More in Themify Builder
View allAuthenticated Contributor-level users can exploit a PHP Object Injection vulnerability in Themify Builder versions up to
Stored cross-site scripting in the Themify Builder plugin for WordPress, affecting all versions up to and including 7.8.
Reflected cross-site scripting in the Themify Builder WordPress plugin (versions up to and including 7.7.4) lets remote
Stored XSS in the Themify Builder WordPress plugin (all versions through 7.7.6) allows contributor-level authenticated u
Stored cross-site scripting in the Themify Builder plugin for WordPress (all versions through 7.8.2) allows an authentic
Stored Cross-Site Scripting in the Themify Builder WordPress plugin (all versions through 7.7.6) enables authenticated a
Unauthenticated styling data manipulation in the Themify Builder WordPress plugin (all versions through 7.8.0) allows an
Authorization bypass in the Themify Builder WordPress plugin (all versions through 7.7.7) permits any authenticated subs
The Themify Builder plugin for WordPress is vulnerable to Reflected Cross-Site Scripting due to the use of add_query_arg
EUVD-2026-114233
GHSA-2m93-9jp5-xhh2
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB