{"id":"CVE-2026-120514","kind":"vulnerability","aliases":["CVE-2026-120514"],"related":[],"title":"WordPress Zephyr Project Manager plugin: stored XSS via profile picture field","description":"The Zephyr Project Manager plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'zpm_profile_picture' parameter in all versions up to, and including, 3.3.209 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The injected payload is stored in the subscriber's own Zephyr profile and fires in any Administrator's browser session the first time the autocomplete mention lookup renders the avatar field, requiring no additional configuration beyond the plugin's default access_roles setting. Successful exploitation additionally requires an action by an administrator — the attacker cannot trigger the vulnerability on their own.","summary":"The Zephyr Project Manager WordPress plugin does not sanitize the zpm_profile_picture parameter, so a subscriber-level account can store a script in their profile. When an administrator later views the affected avatar field, the script runs in that administrator's browser session.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["other","wordpress","zephyr-project-manager"],"not_affected_if":["no-subscriber-accounts","plugin-not-installed"],"how_to_check":"- Check whether the Zephyr Project Manager plugin is installed and its version is `3.3.209` or lower\n- Confirm whether any users hold subscriber-level accounts that can edit a Zephyr profile","fix":null,"status":"open","published_at":"2026-11-07T10:17:09+00:00","first_seen_at":"2026-11-07T10:46:41+00:00","triaged_at":"2026-11-07T10:48:38+00:00","updated_at":"2026-11-07T10:48:38+00:00","category":"other","confidence":0.7,"triage":{"at":"2026-11-07T10:48:38Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"WordPress Zephyr Project Manager plugin: stored XSS via profile picture field","impact":"medium","summary":"The Zephyr Project Manager WordPress plugin does not sanitize the zpm_profile_picture parameter, so a subscriber-level account can store a script in their profile. When an administrator later views the affected avatar field, the script runs in that administrator's browser session.","audience":"businesses","category":"other","nicknames":[],"who_cares":["wordpress","zephyr-project-manager"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"script runs in an administrator's browser session","analyst_note":"","how_to_check":"- Check whether the Zephyr Project Manager plugin is installed and its version is `3.3.209` or lower\n- Confirm whether any users hold subscriber-level accounts that can edit a Zephyr profile","plain_action":"","needs_analyst":false,"not_affected_if":["plugin-not-installed","no-subscriber-accounts"],"who_is_affected":"Sites running the Zephyr Project Manager plugin through version 3.3.209 where subscribers can register or log in and edit profiles. The attacker needs a subscriber-level account and an administrator must view the injected content, so sites without open registration or with the plugin removed can skip it.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000694,"input_tokens":4401,"output_tokens":507,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-120514':14A,17A '-2026':13A,16A '3.3.209':97C 'access':117C,133C,177C 'account':43B 'action':185C 'addit':170C,182C 'administr':53B,65B,153C,188C 'affect':57B 'arbitrari':122C 'attack':112C,190C 'authent':111C 'autocomplet':161C 'avatar':58B,166C 'beyond':172C 'browser':67B,155C 'cannot':191C 'configur':171C 'cross':81C 'cross-sit':80C 'cve':12A,15A 'default':176C 'due':98C 'escap':105C 'execut':129C 'exploit':181C 'field':11A,59B,167C 'fire':150C 'first':158C 'includ':96C 'inject':121C,135C,138C 'input':101C 'insuffici':100C 'later':54B 'level':42B,116C 'lookup':163C 'make':107C 'manag':4A,23B,27B,72C 'mention':162C 'output':104C 'page':126C,136C 'paramet':37B,89C 'payload':139C 'pictur':10A,36B,88C 'plugin':5A,29B,73C,174C 'possibl':109C 'profil':9A,35B,50B,87C,148C 'project':3A,22B,26B,71C 'render':164C 'requir':168C,183C 'role':178C 'run':62B 'sanit':32B,102C 'script':47B,61B,83C,124C 'session':68B,156C 'set':179C 'site':82C 'store':6A,45B,79C,141C 'subscrib':41B,115C,144C 'subscriber-level':40B,114C 'success':180C 'time':159C 'trigger':192C 'user':132C 'version':92C 'via':8A,84C 'view':55B 'vulner':77C,194C 'web':123C 'whenev':130C 'wordpress':1A,19B,28B,75C 'xss':7A 'zephyr':2A,21B,25B,70C,147C 'zephyr-project-manag':20B 'zpm':34B,86C","nicknames":[],"mitigations":[],"who_affected":"Sites running the Zephyr Project Manager plugin through version 3.3.209 where subscribers can register or log in and edit profiles. The attacker needs a subscriber-level account and an administrator must view the injected content, so sites without open registration or with the plugin removed can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","other","wordpress","zephyrprojectmanager"],"campaign_type":null,"search_a":"'-120514':14A,17A '-2026':13A,16A 'cve':12A,15A 'field':11A 'manag':4A 'pictur':10A 'plugin':5A 'profil':9A 'project':3A 'store':6A 'via':8A 'wordpress':1A 'xss':7A 'zephyr':2A","search_b":"'account':43B 'administr':53B,65B 'affect':57B 'avatar':58B 'browser':67B 'field':59B 'later':54B 'level':42B 'manag':23B,27B 'paramet':37B 'pictur':36B 'plugin':29B 'profil':35B,50B 'project':22B,26B 'run':62B 'sanit':32B 'script':47B,61B 'session':68B 'store':45B 'subscrib':41B 'subscriber-level':40B 'view':55B 'wordpress':19B,28B 'zephyr':21B,25B 'zephyr-project-manag':20B 'zpm':34B","search_c":"'3.3.209':97C 'access':117C,133C,177C 'action':185C 'addit':170C,182C 'administr':153C,188C 'arbitrari':122C 'attack':112C,190C 'authent':111C 'autocomplet':161C 'avatar':166C 'beyond':172C 'browser':155C 'cannot':191C 'configur':171C 'cross':81C 'cross-sit':80C 'default':176C 'due':98C 'escap':105C 'execut':129C 'exploit':181C 'field':167C 'fire':150C 'first':158C 'includ':96C 'inject':121C,135C,138C 'input':101C 'insuffici':100C 'level':116C 'lookup':163C 'make':107C 'manag':72C 'mention':162C 'output':104C 'page':126C,136C 'paramet':89C 'payload':139C 'pictur':88C 'plugin':73C,174C 'possibl':109C 'profil':87C,148C 'project':71C 'render':164C 'requir':168C,183C 'role':178C 'sanit':102C 'script':83C,124C 'session':156C 'set':179C 'site':82C 'store':79C,141C 'subscrib':115C,144C 'subscriber-level':114C 'success':180C 'time':159C 'trigger':192C 'user':132C 'version':92C 'via':84C 'vulner':77C,194C 'web':123C 'whenev':130C 'wordpress':75C 'zephyr':70C,147C 'zpm':86C","first_public_at":"2026-11-07T10:17:09+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-120514","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120514","severity":null,"published_at":"2026-11-07T10:17:09+00:00","modified_at":"2026-11-07T10:17:09+00:00","first_seen_at":"2026-11-07T10:46:41+00:00","fetched_at":"2026-11-07T10:46:41+00:00","note":null}],"documents":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}