# Persistent Login <= 3.1.4 - Unauthenticated Content Injection via Freemius SDK 'purchase_completed' Admin Notice

- **ID:** WPSEC-2026-0782
- **Plugin:** Persistent Login (`wp-persistent-login`), https://wordpress.org/plugins/wp-persistent-login/
- **Affected versions:** all versions before 3.1.5
- **Fixed in:** 3.1.5 (Update to 3.1.5 or later.)
- **Severity:** Low 3.7 (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N)
- **Weakness:** CWE-74
- **Usage among sites WPSec scans:** plugin Low, affected versions None seen (as of 2026-10-12)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/wp-persistent-login
- **Fix released:** 2026-10-11
- **Published:** 2026-10-12
- **URL:** https://wpsec.com/vuln/WPSEC-2026-0782/

## Description

The Persistent Login plugin for WordPress is vulnerable to Content Injection via the 'purchased_plan' and 'purchase_email' parameters handled by its bundled Freemius SDK in all versions up to, and including, 3.1.4. This is due to the SDK saving a persistent 'plan_purchased' admin notice built from these request parameters whenever a wp-admin URL carrying 'purchase_completed' is loaded. It does this during plugin initialisation, before any authentication, capability or nonce check. This makes it possible for unauthenticated attackers to inject arbitrary text into a sticky notice shown to administrators in the dashboard, for example misleading purchase or license messages used for phishing, on sites that have opted in to Freemius. HTML is stripped, so script injection is not possible.

## References

- https://wpsec.com/vuln/WPSEC-2026-0782/
- https://plugins.svn.wordpress.org/wp-persistent-login/tags/3.1.5/
- https://wordpress.org/plugins/wp-persistent-login/

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

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.
