Advisory

CVE-2026-110899: Cross-site scripting in Ninja Forms

CVSS 7.1 (CVE record)Published Oct 23, 2026Last verified Nov 4, 2026

An unauthenticated attacker can inject malicious web scripts into pages generated by the Ninja Forms plugin for WordPress, which are then stored and executed…

Exploited in the wild
Not reported
Installs not updated
At least 24.19%
Affected and fixed versions
ComponentAffectedFixed in
Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder (plugin)3.15.5 and earlier3.15.6
Run a free scan of your site

The free scan checks what is visible from outside your site. It does not log in, and it cannot confirm on its own whether this specific issue is present.

Summary

A Stored Cross-Site Scripting (XSS) vulnerability, identified as CVE-2026-110899, affects the Ninja Forms plugin for WordPress. This vulnerability impacts sites running the Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder plugin in versions 3.15.5 and earlier. The issue is resolved in version 3.15.6. A public proof of concept for this vulnerability exists.

Affected and patched versions

  • Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder (plugin ninja-forms): affected 3.15.5 and earlier; fixed in 3.15.6

Is my site vulnerable?

To determine if your WordPress site is affected by CVE-2026-110899, you need to check the installed version of the Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder plugin.

Follow these steps to verify your plugin version:

  1. Log in to your WordPress administration dashboard.

  2. Navigate to the "Plugins" section in the left-hand menu.

  3. Locate "Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder" in the list of installed plugins.

  4. The version number is displayed next to the plugin name.

If your installed version is 3.15.5 or any earlier version, your site is vulnerable. The vulnerability is resolved in version 3.15.6 and subsequent versions. Updating to version 3.15.6 or a newer release will address this specific security concern.

What an attacker actually does

CVE-2026-110899 describes a Stored Cross-Site Scripting (XSS) vulnerability within the Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder plugin. This vulnerability stems from insufficient input sanitization and output escaping. In practical terms, this means the plugin does not adequately filter or clean data submitted by users before storing it in the site's database and subsequently displaying it on web pages. The flaw allows for the injection of arbitrary web scripts.

An unauthenticated attacker can exploit this flaw by submitting malicious web scripts through a Ninja Forms form. These scripts are then stored within the site's database as part of the form entry or related data. When a legitimate user, including site administrators, accesses a page where the stored malicious script is displayed, the script executes within their web browser. This execution occurs in the context of the vulnerable website, granting the attacker access to sensitive information or the ability to perform unauthorized actions. The attacker does not need any special privileges to initiate this injection.

The consequences of such an attack can vary significantly. An attacker might steal session cookies, potentially allowing them to hijack a user's session and gain unauthorized access to their account. This could lead to a complete compromise of the user's identity on the website. They could also deface web pages by altering the content displayed to other visitors, or redirect users to malicious websites designed for phishing or malware distribution. Furthermore, an attacker could use the executed script to perform actions on behalf of the compromised user, such as creating new administrator accounts, modifying existing site content, or extracting sensitive data from the database, depending on the privileges of the user whose browser executes the script. The persistent nature of stored XSS means the malicious code remains active until removed, affecting every user who views the compromised content.

How to detect a compromise

Detecting a compromise related to a Stored Cross-Site Scripting vulnerability can be challenging, as the malicious script is often embedded within legitimate content. Since the vulnerability involves the injection of arbitrary web scripts, the primary indicators of compromise would be the presence of unexpected script tags or other HTML elements designed to execute code within your site's database or rendered output. These scripts might not be immediately visible without inspecting the underlying source code or database entries.

Administrators should inspect form entries and any content generated by Ninja Forms for unusual or suspicious code. This includes looking for <script> tags, onerror attributes, javascript: pseudo-URLs, <iframe> tags, or other unexpected HTML elements that could execute JavaScript. These malicious injections might appear in fields where users submit text, such as form submission data, comments, or custom fields managed by the plugin. Pay particular attention to any user-submitted content that appears to contain HTML or JavaScript code when viewed in a raw format.

To check for such injections, you can examine your WordPress database directly. For instance, you might use a command-line tool like WP-CLI to search for suspicious strings within relevant database tables. A general approach could involve searching for common script tags or event handlers within the wp_posts table, particularly in post_content or post_excerpt fields if Ninja Forms data is stored there. Additionally, check the wp_options table if form settings or serialized submission data are stored there. Reviewing any custom database tables created by Ninja Forms for form submissions is also advisable.

For example, using WP-CLI, you could attempt to search for script tags in your database: wp db search '<script' --all-tables --regex This command would search across all database tables for the string <script. While this might yield many legitimate results, it can help identify unexpected script injections. Reviewing server access logs and WordPress activity logs for unusual requests, particularly those involving form submissions with unusual payloads, or administrative actions following form submissions could also provide indirect indicators of a potential compromise. Look for any sudden changes in user roles or unexpected content modifications.

How to fix

Addressing CVE-2026-110899 requires updating the Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder plugin to a version that includes the necessary security fixes.

Follow these steps to resolve the vulnerability:

  1. Backup your site: Before performing any updates, create a complete backup of your WordPress website, including both your database and all files. This ensures you can restore your site if any issues arise during the update process.

  2. Update the plugin: Access your WordPress administration dashboard. Navigate to "Plugins" and locate "Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder." Click the "Update Now" link if an update to version 3.15.6 or later is available. If the update option is not immediately visible, you may need to deactivate and then reactivate the plugin, or manually update it by downloading the latest version from the official WordPress plugin repository and uploading it.

  3. Verify the update: After the update completes, confirm that the plugin's version number is 3.15.6 or higher.

  4. Review for existing injections: If you suspect your site may have been compromised prior to the update, review any existing form entries or content generated by Ninja Forms for malicious script injections. Remove any identified malicious code from your database.

Timeline

Date

Event

2026-10-15

Patched version released

2026-10-21

NVD publication

Sources

PowerSEC coverage
PowerSEC detects the affected versions on every plan, and has since October 24, 2026. No PowerSEC firewall rule blocks this attack. Update to 3.15.6 or later to remove the vulnerability.
This record contains material that is subject to copyright Copyright 2012-2026 Defiant Inc. Copyright 1999-2026 The MITRE Corporation
Hacked? Talk to us