{"id":"CVE-2026-107649","kind":"vulnerability","aliases":["CVE-2026-107649"],"related":[],"title":"Events Made Easy WordPress plugin: unauthenticated stored XSS via event location","description":"The Events Made Easy plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'event[location_name]' parameter in all versions up to, and including, 3.2.22 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This vulnerability is only exploitable when both the guest event submission feature (eme_fs[guest_submit]) and forced location creation (eme_fs[force_location_creation]) are explicitly enabled by a site administrator, as both settings default to off.","summary":"The Events Made Easy plugin for WordPress up to and including 3.2.22 does not sanitize the event[location_name] parameter on guest event submissions. An unauthenticated attacker can plant script that runs in the browser of any visitor who opens the injected page.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","wordpress","wordpress-plugins"],"not_affected_if":["auth-required","default-config"],"how_to_check":"- Check the installed plugin version in the WordPress admin plugin list or with `wp plugin get events-made-easy --field=version`\n- In the plugin settings, confirm whether guest submission (eme_fs[guest_submit]) and forced location creation (eme_fs[force_location_creation]) are enabled","fix":"- Update Events Made Easy to a version later than `3.2.22`, as soon as a patched release is published (the sources do not name one)\n- Until patched, disable guest event submission and forced location creation in the plugin settings","status":"open","published_at":"2026-10-16T10:18:04+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T04:18:36+00:00","updated_at":"2026-10-25T04:18:36+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T04:18:36Z","model":"claude-haiku-5-5","output":{"fix":"- Update Events Made Easy to a version later than `3.2.22`, as soon as a patched release is published (the sources do not name one)\n- Until patched, disable guest event submission and forced location creation in the plugin settings","reach":"internet","title":"Events Made Easy WordPress plugin: unauthenticated stored XSS via event location","impact":"medium","summary":"The Events Made Easy plugin for WordPress up to and including 3.2.22 does not sanitize the event[location_name] parameter on guest event submissions. An unauthenticated attacker can plant script that runs in the browser of any visitor who opens the injected page.","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugins","self-hosted"],"confidence":0.8,"needs_auth":"no","worst_case":"Script runs in visitors' browsers, possibly including administrators","analyst_note":"Confirm the patched version number and whether a fix has shipped; the NVD entry alone does not name one.","how_to_check":"- Check the installed plugin version in the WordPress admin plugin list or with `wp plugin get events-made-easy --field=version`\n- In the plugin settings, confirm whether guest submission (eme_fs[guest_submit]) and forced location creation (eme_fs[force_location_creation]) are enabled","needs_analyst":true,"not_affected_if":["default-config","auth-required"],"who_is_affected":"Sites running Events Made Easy at version 3.2.22 or older with both guest event submission and forced location creation turned on. Both settings default to off, so most installs are not exposed. Sites that only display events created by staff are not exposed through this path.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000644,"input_tokens":3431,"output_tokens":602,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-107649':14A,17A '-2026':13A,16A '3.2.22':37B,97C 'access':126C 'administr':161C 'arbitrari':115C 'attack':52B,112C 'browser':60B 'creation':149C,154C 'cross':81C 'cross-sit':80C 'cve':12A,15A 'default':165C 'due':98C 'easi':3A,29B,72C 'eme':142C,150C 'enabl':157C 'escap':105C 'event':1A,10A,27B,42B,48B,70C,86C,139C 'execut':122C 'explicit':156C 'exploit':134C 'featur':141C 'forc':147C,152C 'fs':143C,151C 'guest':47B,138C,144C 'host':21B 'includ':36B,96C 'inject':67B,114C,128C 'input':101C 'insuffici':100C 'locat':11A,43B,87C,148C,153C 'made':2A,28B,71C 'make':107C 'name':44B,88C 'open':65B 'output':104C 'packag':18B 'page':68B,119C,129C 'paramet':45B,89C 'plant':54B 'plugin':5A,25B,30B,73C 'possibl':109C 'run':57B 'sanit':40B,102C 'script':55B,83C,117C 'self':20B 'self-host':19B 'set':164C 'site':82C,160C 'store':7A,79C 'submiss':49B,140C 'submit':145C 'unauthent':6A,51B,111C 'user':125C 'version':92C 'via':9A,84C 'visitor':63B 'vulner':77C,131C 'web':116C 'whenev':123C 'wordpress':4A,22B,24B,32B,75C 'wordpress-plugin':23B 'xss':8A","nicknames":[],"mitigations":[],"who_affected":"Sites running Events Made Easy at version 3.2.22 or older with both guest event submission and forced location creation turned on. Both settings default to off, so most installs are not exposed. Sites that only display events created by staff are not exposed through this path.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T10:18:04+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/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-107649","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-107649","severity":null,"published_at":"2026-10-16T10:18:04+00:00","modified_at":"2026-10-16T15:17:05+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","fetched_at":"2026-10-23T22:28:55+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"}