CVE-2025-30935 Overview
CVE-2025-30935 is a DOM-based Cross-Site Scripting (XSS) vulnerability in the NickDuncan Contact Form WordPress plugin (contact-form-ready). The flaw stems from improper neutralization of input during web page generation [CWE-79]. It affects all plugin versions up to and including 2.0.12. Attackers can inject malicious scripts that execute in the victim's browser context when the crafted input is processed by client-side code. Exploitation requires low-privileged authentication and user interaction, and the impact crosses security scopes, meaning injected scripts can affect resources beyond the vulnerable component.
Critical Impact
Authenticated attackers can inject arbitrary JavaScript that executes in visitors' browsers, enabling session theft, credential harvesting, and unauthorized actions performed on behalf of authenticated WordPress users.
Affected Products
- NickDuncan Contact Form (contact-form-ready) plugin for WordPress
- All versions from n/a through 2.0.12
- WordPress sites using the vulnerable plugin
Discovery Timeline
- 2025-06-06 - CVE-2025-30935 published to NVD
- 2026-06-17 - Last updated in NVD database
Technical Details for CVE-2025-30935
Vulnerability Analysis
The vulnerability resides in the client-side JavaScript of the Contact Form plugin. User-controlled input flows into a DOM sink without proper sanitization or output encoding. The browser then interprets the payload as executable script rather than inert data. Because the flaw is DOM-based, the malicious payload never needs to traverse the server for processing. Attackers craft URLs or form interactions that cause the plugin's JavaScript to write attacker-controlled values into the page.
The scope-changed classification indicates that a successful exploit can affect resources under a different security authority than the vulnerable component. In WordPress contexts, this often means an authenticated contributor or subscriber can execute script in an administrator's browser session.
Root Cause
The root cause is unsafe handling of untrusted input in DOM manipulation routines. The plugin passes data derived from user input to sinks such as innerHTML, document.write, or eval-like functions without validating or encoding the content. Any HTML or script markup embedded in the input becomes part of the executed document.
Attack Vector
Exploitation requires an authenticated user with low privileges and user interaction, typically clicking a crafted link or submitting a poisoned form. The attacker delivers a payload containing HTML or JavaScript through a field the plugin later renders through a DOM sink. When another user, often a higher-privileged administrator, views the affected page, the browser executes the injected script under the site's origin. Consequences include cookie theft, session hijacking, plugin or theme modification through administrative endpoints, and pivoting to full site compromise. See the Patchstack WordPress Vulnerability Report for additional technical context.
Detection Methods for CVE-2025-30935
Indicators of Compromise
- Unexpected <script> tags, event handlers (onerror, onload), or javascript: URIs stored in Contact Form submissions or WordPress database tables.
- Outbound requests from administrator browsers to unknown domains shortly after viewing form submissions or plugin pages.
- New or modified administrator accounts, plugins, or theme files created without authorized change records.
Detection Strategies
- Inspect WordPress wp_options and plugin-specific tables for form data containing HTML or JavaScript syntax.
- Monitor web server access logs for requests to plugin endpoints containing encoded script payloads such as %3Cscript%3E or javascript%3A.
- Deploy Content Security Policy (CSP) reporting to surface inline script execution attempts on WordPress admin pages.
Monitoring Recommendations
- Enable file integrity monitoring on the wp-content/plugins/contact-form-ready/ directory to detect tampering.
- Alert on newly created WordPress administrator accounts or role escalations tied to sessions that viewed contact form submissions.
- Correlate authenticated low-privileged user activity with subsequent administrative session anomalies.
How to Mitigate CVE-2025-30935
Immediate Actions Required
- Deactivate the Contact Form (contact-form-ready) plugin on WordPress sites running version 2.0.12 or earlier until a fixed release is available.
- Audit existing contact form submissions and stored records for HTML or script content and purge any malicious entries.
- Rotate WordPress administrator credentials and invalidate active sessions if exploitation is suspected.
Patch Information
At the time of publication, no vendor-supplied patch is referenced in the NVD entry. Consult the Patchstack WordPress Vulnerability Report for updated remediation guidance and monitor the plugin's WordPress repository page for a fixed release.
Workarounds
- Replace the vulnerable plugin with a maintained contact form alternative that enforces server-side and client-side output encoding.
- Deploy a Web Application Firewall (WAF) rule that blocks requests containing script tags or JavaScript URI schemes destined for plugin endpoints.
- Enforce a strict Content Security Policy that disallows inline scripts and restricts script sources to trusted origins.
- Restrict WordPress user registration and limit low-privileged roles to trusted contributors only.
# Example WordPress CLI commands to disable the vulnerable plugin
wp plugin deactivate contact-form-ready
wp plugin status contact-form-ready
# Example Nginx rule to block script payloads targeting the plugin
location ~* /wp-content/plugins/contact-form-ready/ {
if ($args ~* "(<script|javascript:|onerror=|onload=)") {
return 403;
}
}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

