Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAccess plugin's CF7 upload form
-
DeliveryUpload .txt/.csv file starting with HTML payload
-
ExploitBypass extension blocklist as text/plain
-
ExecutionPayload stored and rendered in page
-
ImpactScript executes in visitor/admin browser
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 the target WordPress site to run this plugin's file-upload/database add-on feature on a Contact Form 7 form, since that upload handler is the injection point. The specific bypass condition: the attacker must upload a file bearing an allowed text extension (.txt, .csv, .vtt, .srt, .asc) whose byte content begins with an HTML payload (e.g., '<BODY onload=…>'), exploiting that the blocklist gatekeeper classifies such files as text/plain by extension without inspecting content. Per CVSS PR:N, no authentication is required. The practical limiting factor is that the stored payload only executes when a user subsequently loads the injected page, and only sites that both run the plugin and expose its upload feature are affected - so the flaw does not apply to default WordPress or to deployments not using this add-on's upload function. |
| Impact | This is a credible, moderate-priority web vulnerability rather than an emergency. The source (Wordfence) is a reputable WordPress vulnerability authority, and the CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C, score 7.2) describes a network-reachable, low-complexity flaw requiring no privileges and no user interaction to inject, with a scope change reflecting that the payload executes in the browser context of other users. Exploitation status is 'no public exploit identified at time of analysis' - the input contains no CISA KEV listing, no POC flag, and no EPSS probability, so there is no evidence of active or automated exploitation; the absence of EPSS means widespread-exploitation likelihood cannot be quantified from this data. Impact is bounded: confidentiality and integrity are rated Low and availability None, consistent with stored XSS (session/cookie theft, admin-action forgery, content defacement in the victim's browser) rather than direct server compromise. The real-world risk is tempered by the fact that the flaw only matters on sites actually using this specific add-on's file-upload/database feature, and the stored payload still requires a victim to load the injected page before it fires. Net: a genuine unauthenticated stored XSS worth patching promptly on affected sites, but not a drop-everything issue absent evidence of exploitation. |
| Exploit ScenarioDerived | An unauthenticated attacker submits a Contact Form 7 form handled by this plugin and attaches a file with a permitted text extension (e.g., payload.txt) whose contents begin with an HTML payload such as '<BODY onload=alert(document.cookie)>'. Because the gatekeeper classifies the upload as text/plain by extension without inspecting byte content, the file is stored and later rendered on a plugin-generated page, and the script executes in the browser of any user - including a logged-in administrator - who views that page. No public exploit code is identified at time of analysis, but the technique is fully described in the advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
Stored cross-site scripting in the Ultra Addons for Contact Form 7 WordPress plugin (all versions up to and including 3.5.54) lets unauthenticated attackers upload a text-type file whose contents begin with HTML markup, which is then persisted and executed in the browser of any user who later views the injected page - a classic CWE-79 stored XSS. Per the assessed vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N (7.2), no authentication or user interaction is needed to deliver the payload, though execution depends on a victim subsequently loading the affected page. Exploitation is only reachable on sites that run the plugin and expose its file-upload/database add-on on a Contact Form 7 form; there is no public exploit identified at time of analysis and the issue is not in CISA KEV, so this is a credible moderate-priority web flaw rather than an emergency.
RemediationAI
Vendor-released patch version beyond 3.5.54 is not independently confirmed in the supplied data; what is available is an upstream fix commit/changeset to the upload handler at https://plugins.trac.wordpress.org/changeset/3738548/ultimate-addons-for-contact-form-7/trunk/addons/database/database.php - treat this as 'Upstream fix available (PR/commit); released patched version not independently confirmed', and check the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/29b9d978-f8b0-48f9-a10e-7e61a4f4a828?source=cve) and the plugin's WordPress.org page for the first tagged release newer than 3.5.54 before rolling out; do not install arbitrary trunk builds on production. Until a patched release is validated, the most effective compensating control is to disable the plugin's file-upload/database add-on or remove the CF7 file-upload field from any publicly reachable form - this fully closes the injection point but removes legitimate file-upload functionality. If uploads must stay enabled, restrict accepted extensions server-side to non-text types (dropping .txt, .csv, .vtt, .srt and .asc), enforce a server-side content-type/magic-byte check rather than an extension blocklist, and store uploads outside the web root or serve them with Content-Disposition: attachment plus a restrictive Content-Security-Policy and X-Content-Type-Options: nosniff so stored HTML is never parsed as markup; each of these trades off usability or requires web-server configuration. A WAF rule blocking uploads whose leading bytes contain HTML tags (e.g. '<body', 'onload=') can reduce exposure but is bypassable by encoding and should not be the sole control. Also audit and purge previously stored uploads for injected markup.
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 target is a WordPress plugin that extends Contact Form 7 (CF7) by registering a file-upload/database add-on; CP7 submissions are handled by the plugin's own upload handler in addons/database/database.php, with helper logic in inc/functions.php. Root cause is an insufficient input-sanitization and output-escaping flaw (CWE-79): the plugin's extension blocklist acts as a gatekeeper that classifies an uploaded file as text/plain purely from its allowed extension (.txt, .csv, .vtt, .srt, .asc) without inspecting the file's byte content. Because the gatekeeper only looks at the extension rather than sniffing the payload, a file whose first bytes are HTML such as '<BODY onload=...>' passes validation, is stored, and is later rendered into a page without adequate escaping, so the browser parses the stored bytes as markup. The CVSS vector's changed scope (S:C) reflects that the injected script executes in the context of the vulnerable site's origin rather than the attacker's, which is what makes stored XSS in a CMS plugin meaningful. CPE data maps the affected component to cpe:2.3:a:themefic:ultra_addons_for_contact_form_7:*:*:*:*:*:*:*:* (vendor Themefic), with the wildcard confirming that the version range rather than a single build is affected; the referenced code lines (database.php L869, L895, L901 and functions.php L1703 in tag 3.5.52) point at the upload/validation path where the extension-only check and the unsanitized storage occur.
Know when Ultra Addons For Contact Form 7 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:N/UI:N/S:C/C:L/I:L/A:N
Unauthenticated network upload (AV:N/PR:N/AC:L); stored payload executes in other users' browser context giving scope change (S:C) with low confidentiality/integrity impact and no availability loss.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Ultra Addons for Contact Form 7 plugin for WordPress is vulnerable to Stored Cross-Site Scripting via File Upload in all versions up to, and including, 3.5.54 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 extension blocklist gatekeeper is bypassed by uploading text-type files (.txt, .csv, .vtt, .srt, .asc) whose contents begin with an HTML payload such as '<BODY onload=…>', as the check classifies these files as text/plain without inspecting their byte content.
Executive ViewAI
A stored cross-site scripting flaw in the Ultra Addons for Contact Form 7 WordPress plugin, affecting all versions up to and including 3.5.54, lets an unauthenticated attacker plant malicious content that executes in the browser of anyone who later views the injected page. Because the payload persists on the site, every subsequent visitor - including administrators - is exposed, creating risk of session theft, credential compromise, and reputational damage to public-facing web properties. Leadership should care because the issue is remotely reachable without credentials and remediation currently depends on manual mitigation rather than a vendor fix.
No vendor-released patch identified at time of analysis. Interim mitigations: deactivate Ultra Addons for Contact Form 7 (versions up to and including 3.5.54) or disable its file-upload/database add-on on all Contact Form 7 forms; restrict uploads to an allowlist of non-executable content types and reject any file whose contents begin with HTML markup; sanitize and output-encode stored form-entry data before rendering; deploy a web application firewall rule or Content Security Policy that blocks inline and untrusted script execution; and limit which accounts can view or administer submitted form entries.
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.
Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.
Unauthenticated arbitrary file upload in the Ultra Addons for Contact Form 7 WordPress plugin (versions 3.2.4 through be
Unauthenticated arbitrary file upload in the WordPress plugin Ultra Addons for Contact Form 7 (themefic) affects every v
Stored Cross-Site Scripting in the Ultra Addons for Contact Form 7 WordPress plugin (all versions through 3.5.43) permit
EUVD-2026-102660
GHSA-3658-jvcq-xc7g
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB