# PPWP – Password Protect Pages <= 1.9.26 - Authenticated (Contributor+) Stored Cross-Site Scripting via 'ppwp' Shortcode

- **ID:** WPSEC-2026-2062
- **Plugin:** PPWP – Password Protect Pages (`password-protect-page`), https://wordpress.org/plugins/password-protect-page/
- **Affected versions:** all versions before 1.9.27
- **Fixed in:** 1.9.27 (Update to 1.9.27 or later.)
- **Severity:** Medium 6.4 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N)
- **Weakness:** CWE-79
- **Usage among sites WPSec scans:** plugin Low, affected versions None seen (as of 2026-10-30)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/password-protect-page
- **Fix released:** 2026-10-29
- **Published:** 2026-10-30
- **URL:** https://wpsec.com/vuln/WPSEC-2026-2062/

## Description

The Password Protect Pages plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the plugin's [ppwp] shortcode in all versions up to, and including, 1.9.26 due to insufficient input sanitization and output escaping when building the password form template, where user-supplied shortcode attribute values could contain placeholder tokens that were later expanded in an already-escaped context. This makes it possible for authenticated attackers, with contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.

## References

- https://wpsec.com/vuln/WPSEC-2026-2062/
- https://plugins.svn.wordpress.org/password-protect-page/tags/1.9.27/
- https://wordpress.org/plugins/password-protect-page/

Source: WPSec, https://wpsec.com/vuln/WPSEC-2026-2062/

License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Free to use, share and adapt, also commercially, if you credit WPSec and link to this advisory.
