{"id":"CVE-2026-93293","kind":"vulnerability","aliases":["CVE-2026-93293"],"related":[],"title":"WordPress Password Protected plugin: stored XSS via bundled Freemius SDK","description":"The Password Protected plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the bundled Freemius SDK's purchase-completion handler in all versions up to, and including, 2.8.4 due to insufficient input sanitization and output escaping. Once the site's Freemius opt-in is complete (the normal state after an administrator clicks \"Allow & Continue\"), the handler processes the 'purchased_plan' request parameter on any wp-admin request from an authenticated user without any capability, nonce, or purchase validation, and stores it in a persistent, site-wide administrative notice. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts that execute automatically when an administrator views a standard admin page such as their Profile page.","summary":"The Password Protected WordPress plugin up to and including 2.8.4 has a bundled Freemius SDK that stores an unsanitized 'purchased_plan' request parameter in a site-wide admin notice. An authenticated subscriber can inject scripts that run in an administrator's browser when they view an admin page.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","password-protected","self-hosted","wordpress","wordpress-plugin"],"not_affected_if":["freemius-opt-in-not-completed","no-subscriber-accounts","plugin-not-installed"],"how_to_check":"- Check the installed Password Protected plugin version in the WordPress admin Plugins screen, or in `wp-content/plugins/password-protected/`\n- Confirm whether the Freemius opt-in was completed by looking for the Freemius data on the site (unknown how to confirm beyond this from the sources)","fix":null,"status":"open","published_at":"2026-10-29T06:17:24+00:00","first_seen_at":"2026-10-29T06:53:14+00:00","triaged_at":"2026-10-29T06:54:34+00:00","updated_at":"2026-10-29T06:54:34+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-29T06:54:34Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"WordPress Password Protected plugin: stored XSS via bundled Freemius SDK","impact":"medium","summary":"The Password Protected WordPress plugin up to and including 2.8.4 has a bundled Freemius SDK that stores an unsanitized 'purchased_plan' request parameter in a site-wide admin notice. An authenticated subscriber can inject scripts that run in an administrator's browser when they view an admin page.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugin","password-protected","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"Attacker script runs in administrator's browser on the site","analyst_note":"Check the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-93293 and the WordPress plugin changelog for a fixed version after 2.8.4.","how_to_check":"- Check the installed Password Protected plugin version in the WordPress admin Plugins screen, or in `wp-content/plugins/password-protected/`\n- Confirm whether the Freemius opt-in was completed by looking for the Freemius data on the site (unknown how to confirm beyond this from the sources)","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","no-subscriber-accounts","freemius-opt-in-not-completed"],"who_is_affected":"Sites running the Password Protected WordPress plugin version 2.8.4 or earlier with the bundled Freemius SDK opt-in completed. Exploitation needs a logged-in account with at least subscriber access, and the payload fires when an administrator views an admin page such as their Profile page. Sites without the plugin, or with a fixed version, are not affected.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000766,"input_tokens":4294,"output_tokens":674,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-93293':13A,16A '2.8.4':37B,108C 'access':183C 'admin':56B,75B,148C,200C 'administr':68B,132C,170C,196C 'allow':134C 'arbitrari':188C 'attack':178C 'authent':59B,152C,177C 'automat':193C 'browser':70B 'bundl':8A,40B,93C 'capabl':156C 'click':133C 'complet':99C,126C 'continu':135C 'cross':88C 'cross-sit':87C 'cve':11A,14A 'due':109C 'escap':116C 'execut':192C 'freemius':9A,41B,94C,121C 'handler':100C,137C 'host':23B 'includ':36B,107C 'inject':62B,187C 'input':112C 'insuffici':111C 'level':182C 'make':173C 'nonc':157C 'normal':128C 'notic':57B,171C 'opt':123C 'opt-in':122C 'output':115C 'packag':17B 'page':76B,201C,206C 'paramet':50B,143C 'password':2A,19B,29B,78C 'password-protect':18B 'persist':166C 'plan':48B,141C 'plugin':4A,27B,32B,80C 'possibl':175C 'process':138C 'profil':205C 'protect':3A,20B,30B,79C 'purchas':47B,98C,140C,159C 'purchase-complet':97C 'request':49B,142C,149C 'run':65B 'sanit':113C 'script':63B,90C,190C 'sdk':10A,42B,95C 'self':22B 'self-host':21B 'site':54B,89C,119C,168C 'site-wid':53B,167C 'standard':199C 'state':129C 'store':5A,44B,86C,162C 'subscrib':60B,181C 'subscriber-level':180C 'unsanit':46B 'user':153C 'valid':160C 'version':103C 'via':7A,91C 'view':73B,197C 'vulner':84C 'web':189C 'wide':55B,169C 'without':154C 'wordpress':1A,24B,26B,31B,82C 'wordpress-plugin':25B 'wp':147C 'wp-admin':146C 'xss':6A","nicknames":[],"mitigations":[],"who_affected":"Sites running the Password Protected WordPress plugin version 2.8.4 or earlier with the bundled Freemius SDK opt-in completed. Exploitation needs a logged-in account with at least subscriber access, and the payload fires when an administrator views an admin page such as their Profile page. Sites without the plugin, or with a fixed version, are not affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"first_public_at":"2026-10-29T06:17:24+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-93293","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-93293","severity":null,"published_at":"2026-10-29T06:17:24+00:00","modified_at":"2026-10-29T06:17:24+00:00","first_seen_at":"2026-10-29T06:53:14+00:00","fetched_at":"2026-10-29T06:53:14+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}