---
id: "CVE-2026-111110"
kind: "vulnerability"
aliases: ["CVE-2026-111110"]
title: "GetPaid WordPress plugin: unauthenticated stored XSS through a form parameter"
severity: "high"
cvss: 7.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["getpaid", "package", "self-hosted", "wordpress", "wordpress-plugin"]
not_affected_if: ["patched-version", "plugin-not-installed"]
published_at: "2026-10-17T08:16:28+00:00"
first_seen_at: "2026-10-23T21:57:14+00:00"
updated_at: "2026-10-25T03:29:26+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-111110", "first_seen_at": "2026-10-23T21:57:14+00:00"}]
---

# GetPaid WordPress plugin: unauthenticated stored XSS through a form parameter

The GetPaid plugin for WordPress does not sanitize the 'mmdwqzpoxadd' parameter, so an unauthenticated visitor can store a script that runs for anyone who opens the affected page. The stored payload also fires when an administrator views the invoice's Payment Form Details metabox, which can lead to admin session takeover.

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

## How to check

- Check the installed GetPaid version in the WordPress plugins screen or with `wp plugin get getpaid --field=version`
- Look for the 'mmdwqzpoxadd' parameter in stored invoice or form data

## Fix

- Update the GetPaid plugin to a version later than `2.8.61`
- Until updated, review pages and invoices for injected script tags

## Timeline

- 2026-10-23T21:57:14+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-111110

## From the sources

The Payment forms, Buy now buttons, and Invoicing System | GetPaid plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'mmdwqzpoxadd' parameter in all versions up to, and including, 2.8.61 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 required nonce (getpaid_form_nonce) is publicly emitted to all visitors via wp_localize_script as WPInv.formNonce, meaning no authentication or prior nonce leak is needed; the stored payload fires when an administrator views the affected invoice's Payment Form Details metabox.

---

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