/

CVE-2026-111110

Severity:

HIGH RISK

(7.2)

Stored XSS (CWE-79) in GetPaid Invoice Forms Plugin

CVE-2026-111110

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Arbitrary Script Execution in an Administrator's Browser

Severity:

HIGH RISK

(7.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

The GetPaid WordPress plugin contains a stored cross-site scripting vulnerability caused by insufficient sanitization of the mmdwqzpoxadd parameter and inadequate output escaping. An unauthenticated attacker may store arbitrary browser script that executes when an administrator views the affected invoice's Payment Form Details metabox.

The GetPaid WordPress plugin contains a stored cross-site scripting vulnerability caused by insufficient sanitization of the mmdwqzpoxadd parameter and inadequate output escaping. An unauthenticated attacker may store arbitrary browser script that executes when an administrator views the affected invoice's Payment Form Details metabox.

Affected context

The issue affects WordPress sites using the GetPaid plugin's payment forms, Buy Now buttons, or invoicing features. It becomes risky when user-controlled input reaches the affected parameter, is stored without context-appropriate sanitization, and is later rendered in the invoice administration interface. The publicly emitted getPaid_form_nonce value may allow unauthenticated request flows where no prior authentication or nonce disclosure is required.

The issue affects WordPress sites using the GetPaid plugin's payment forms, Buy Now buttons, or invoicing features. It becomes risky when user-controlled input reaches the affected parameter, is stored without context-appropriate sanitization, and is later rendered in the invoice administration interface. The publicly emitted getPaid_form_nonce value may allow unauthenticated request flows where no prior authentication or nonce disclosure is required.

Exploit preconditions

  • Attack surface: WordPress-facing GetPaid payment or invoicing functionality
  • Required access: No authenticated account is generally required if the affected unauthenticated input path is reachable
  • Trigger point: An administrator views an affected invoice's Payment Form Details metabox
  • Why exploitation is possible: The parameter's value can be stored and later rendered without sufficient input sanitization or output escaping, while the related nonce is publicly exposed to visitors
  • Attack surface: WordPress-facing GetPaid payment or invoicing functionality
  • Required access: No authenticated account is generally required if the affected unauthenticated input path is reachable
  • Trigger point: An administrator views an affected invoice's Payment Form Details metabox
  • Why exploitation is possible: The parameter's value can be stored and later rendered without sufficient input sanitization or output escaping, while the related nonce is publicly exposed to visitors

Why this happens

The vulnerability results from treating externally supplied parameter data as trusted content when storing and rendering invoice-related fields. Insufficient sanitization during input handling, combined with missing or context-inappropriate output escaping, allows markup or script content to be interpreted by a browser in an administrative context. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

The vulnerability results from treating externally supplied parameter data as trusted content when storing and rendering invoice-related fields. Insufficient sanitization during input handling, combined with missing or context-inappropriate output escaping, allows markup or script content to be interpreted by a browser in an administrative context. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

Potential impact

  • An attacker may execute arbitrary script in an administrator's browser session
  • The script could perform actions available to the affected administrator
  • Sensitive administrative information may be exposed
  • Site content, settings, or plugin data could be modified
  • The vulnerability can facilitate administrative account compromise or further site abuse
  • An attacker may execute arbitrary script in an administrator's browser session
  • The script could perform actions available to the affected administrator
  • Sensitive administrative information may be exposed
  • Site content, settings, or plugin data could be modified
  • The vulnerability can facilitate administrative account compromise or further site abuse

General mitigation guidance

Mitigation generally focuses on reducing trust in form and invoice data and applying defenses at both input and output boundaries.

Common defensive patterns include:

  • Validate and sanitize values according to their expected type and business purpose
  • Apply context-appropriate output escaping immediately before rendering data in HTML, attributes, or JavaScript
  • Use framework-provided escaping and validation APIs rather than manually constructed filters
  • Treat publicly exposed nonces as request-integrity controls, not authentication or authorization mechanisms
  • Enforce capability checks for administrative invoice views and state-changing operations
  • Use restrictive browser security policies, such as Content Security Policy, as defense in depth

Mitigation generally focuses on reducing trust in form and invoice data and applying defenses at both input and output boundaries.

Common defensive patterns include:

  • Validate and sanitize values according to their expected type and business purpose
  • Apply context-appropriate output escaping immediately before rendering data in HTML, attributes, or JavaScript
  • Use framework-provided escaping and validation APIs rather than manually constructed filters
  • Treat publicly exposed nonces as request-integrity controls, not authentication or authorization mechanisms
  • Enforce capability checks for administrative invoice views and state-changing operations
  • Use restrictive browser security policies, such as Content Security Policy, as defense in depth

How teams detect issues like this

Organizations can look for this issue through:

  • Static analysis rules identifying unescaped user-controlled values in WordPress output contexts
  • Code review checks tracing parameters from request handling through storage and administrative rendering
  • Tests that submit representative special characters and verify encoded output in every rendering context
  • Monitoring for unexpected script-like content in invoice, payment-form, and metadata fields
  • Policy enforcement requiring capability checks, validation, and escaping for plugin data flows
  • Automated security and code review tools that flag common stored XSS patterns

Organizations can look for this issue through:

  • Static analysis rules identifying unescaped user-controlled values in WordPress output contexts
  • Code review checks tracing parameters from request handling through storage and administrative rendering
  • Tests that submit representative special characters and verify encoded output in every rendering context
  • Monitoring for unexpected script-like content in invoice, payment-form, and metadata fields
  • Policy enforcement requiring capability checks, validation, and escaping for plugin data flows
  • Automated security and code review tools that flag common stored XSS patterns

Sources

SourceLink
github.comgithub.com/AyeCode/invoicing/archive/refs/heads/master.zip
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/invoicing/tags/2.8.61/includes/admin/meta-boxes/class-mb-payment-form.php#L30
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/invoicing/tags/2.8.61/includes/class-wpinv-ajax.php#L359
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/invoicing/tags/2.8.61/includes/payments/class-getpaid-checkout.php#L293
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/invoicing/tags/2.8.61/includes/payments/class-getpaid-checkout.php#L402
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/invoicing/tags/2.8.61/includes/payments/class-getpaid-payment-form-submission.php#L150
plugins.trac.wordpress.orgplugins.trac.wordpress.org/changeset/3750463/invoicing/trunk/includes/admin/meta-boxes/class-mb-payment-form.php
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/2161ecdc-d3c2-4ede-9c42-28f30fa0f91e?source=cve

Frequently asked

questions

Yes. Where the affected public-facing input flow is reachable, an unauthenticated attacker may be able to submit data remotely. The stored script executes later when an administrator views the affected invoice interface.

The described flow does not require authentication or a previously leaked nonce. The relevant nonce is publicly emitted to visitors, although authorization checks remain important for protecting administrative operations.

Validate and sanitize input according to its intended data type, then apply context-specific escaping at every output location. Administrative capability checks should also be enforced independently of nonce validation.

Review data flows from request parameters through persistence and rendering, use established WordPress validation and escaping APIs, add stored-XSS tests, and enforce secure coding checks in development and review pipelines.

Yes. Where the affected public-facing input flow is reachable, an unauthenticated attacker may be able to submit data remotely. The stored script executes later when an administrator views the affected invoice interface.

The described flow does not require authentication or a previously leaked nonce. The relevant nonce is publicly emitted to visitors, although authorization checks remain important for protecting administrative operations.

Validate and sanitize input according to its intended data type, then apply context-specific escaping at every output location. Administrative capability checks should also be enforced independently of nonce validation.

Review data flows from request parameters through persistence and rendering, use established WordPress validation and escaping APIs, add stored-XSS tests, and enforce secure coding checks in development and review pipelines.

Find out what's already
exploitable in your codebase.