---
id: "CVE-2026-109997"
kind: "vulnerability"
aliases: ["CVE-2026-109997"]
title: "Ninja Forms WordPress plugin: unauthenticated stored cross-site scripting via form submissions"
severity: "high"
cvss: 7.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["ninja-forms", "package", "self-hosted", "wordpress"]
not_affected_if: ["plugin-not-installed", "version-above-3.15.5"]
published_at: "2026-10-31T06:16:31+00:00"
first_seen_at: "2026-10-31T06:33:50+00:00"
updated_at: "2026-10-31T06:34:14+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-109997", "first_seen_at": "2026-10-31T06:33:50+00:00"}]
---

# Ninja Forms WordPress plugin: unauthenticated stored cross-site scripting via form submissions

Ninja Forms, a WordPress contact form plugin, fails to sanitize the formData.extra parameter, so anyone can store malicious scripts that run in the browser of whoever opens an affected page. The form submission endpoint also hands out valid nonces to any requester on failure, which removes the anti-forgery check and makes exploitation a single unauthenticated request.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Ninja Forms plugin version in the WordPress admin under Plugins, or with `wp plugin get ninja-forms --field=version`.
- Confirm whether the installed version is `3.15.5` or earlier, which the sources say is affected.

## Fix

- Move to a Ninja Forms version newer than `3.15.5`; the sources do not name the exact fixed release.

## Timeline

- 2026-10-31T06:33:50+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-109997

## From the sources

The Ninja Forms – Contact Form Builder with Calculators, Quizzes, Signatures & AI Form Builder plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'formData.extra' parameter in all versions up to, and including, 3.15.5 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 nf_ajax_submit endpoint issues a valid nonce to any requester on failure, effectively neutralizing the nonce check and making exploitation trivially achievable in a single unauthenticated request.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
