{"id":"CVE-2026-116535","kind":"vulnerability","aliases":["CVE-2026-116535"],"related":[],"title":"SEOPress WordPress plugin: stored script injection through display names","description":"The SEOPress – AI SEO Plugin & On-site SEO plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'display_name' parameter in all versions up to, and including, 10.3 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. This is exploitable by any Subscriber who sets their display_name to a string containing the literal %%archive_title%% token alongside HTML event-handler payloads, as WordPress stores display names without HTML filtering and the plugin substitutes the token after escaping has already occurred.","summary":"The SEOPress WordPress plugin up to and including version 10.3 fails to escape a user's display name, so a subscriber can store a script that runs in pages other visitors open. An attacker gets script execution in the browser of whoever loads the injected page, including administrators.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","seopress","wordpress"],"not_affected_if":["no-public-registration","plugin-not-installed","version-above-10.3"],"how_to_check":"- Check the installed SEOPress version in the WordPress plugins screen or the plugin file header\n- Look for `seopress` in the plugin directory listing on the server\n- Check whether subscriber accounts can register on the site","fix":"- Move to a SEOPress release newer than `10.3`; the exact fixed version is unknown from the sources","status":"open","published_at":"2026-10-31T08:16:48+00:00","first_seen_at":"2026-10-31T08:34:28+00:00","triaged_at":"2026-10-31T08:35:09+00:00","updated_at":"2026-10-31T08:35:09+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-31T08:35:09Z","model":"claude-haiku-5-5","output":{"fix":"- Move to a SEOPress release newer than `10.3`; the exact fixed version is unknown from the sources","reach":"internet","title":"SEOPress WordPress plugin: stored script injection through display names","impact":"medium","summary":"The SEOPress WordPress plugin up to and including version 10.3 fails to escape a user's display name, so a subscriber can store a script that runs in pages other visitors open. An attacker gets script execution in the browser of whoever loads the injected page, including administrators.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","seopress","self-hosted"],"confidence":0.6,"fix_status":"unknown","needs_auth":"yes","worst_case":"script runs in visitors' browsers, including administrators, stealing sessions","analyst_note":"","how_to_check":"- Check the installed SEOPress version in the WordPress plugins screen or the plugin file header\n- Look for `seopress` in the plugin directory listing on the server\n- Check whether subscriber accounts can register on the site","plain_action":"","needs_analyst":false,"not_affected_if":["plugin-not-installed","version-above-10.3","no-public-registration"],"who_is_affected":"Sites running the SEOPress plugin at version 10.3 or older are exposed. The attacker needs a subscriber-level account, so sites that do not allow open registration and do not have subscriber accounts are less exposed. Sites with public registration or many low-privilege users should look at this first.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.000704,"input_tokens":4282,"output_tokens":552,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-116535':12A,15A '-2026':11A,14A '10.3':31B,102C 'access':122C,138C 'administr':69B 'ai':72C 'alongsid':162C 'alreadi':185C 'arbitrari':127C 'archiv':159C 'attack':55B,117C 'authent':116C 'browser':61B 'contain':156C 'cross':87C 'cross-sit':86C 'cve':10A,13A 'display':8A,38B,92C,151C,171C 'due':103C 'escap':34B,110C,183C 'event':165C 'event-handl':164C 'execut':58B,134C 'exploit':144C 'fail':32B 'filter':175C 'get':56B 'handler':166C 'host':19B 'html':163C,174C 'includ':29B,68B,101C 'inject':6A,66B,126C,140C 'input':106C 'insuffici':105C 'level':121C 'liter':158C 'load':64B 'make':112C 'name':9A,39B,93C,152C,172C 'occur':186C 'on-sit':75C 'open':53B 'output':109C 'packag':16B 'page':50B,67B,131C,141C 'paramet':94C 'payload':167C 'plugin':3A,25B,74C,79C,178C 'possibl':114C 'run':48B 'sanit':107C 'script':5A,46B,57B,89C,129C 'self':18B 'self-host':17B 'seo':73C,78C 'seopress':1A,20B,23B,71C 'set':149C 'site':77C,88C 'store':4A,44B,85C,170C 'string':155C 'subscrib':42B,120C,147C 'subscriber-level':119C 'substitut':179C 'titl':160C 'token':161C,181C 'user':36B,137C 'version':30B,97C 'via':90C 'visitor':52B 'vulner':83C 'web':128C 'whenev':135C 'whoever':63B 'without':173C 'wordpress':2A,21B,24B,81C,169C","nicknames":[],"mitigations":[],"who_affected":"Sites running the SEOPress plugin at version 10.3 or older are exposed. The attacker needs a subscriber-level account, so sites that do not allow open registration and do not have subscriber accounts are less exposed. Sites with public registration or many low-privilege users should look at this first.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-31T08:16:48+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-116535","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116535","severity":null,"published_at":"2026-10-31T08:16:48+00:00","modified_at":"2026-10-31T08:16:48+00:00","first_seen_at":"2026-10-31T08:34:28+00:00","fetched_at":"2026-10-31T08:34:28+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"}