Skip to main content

Events Made Easy CVE-2026-107649

| EUVDEUVD-2026-102832 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-16 Wordfence GHSA-98qh-x2j4-35ch
5.4
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify site with guest submit + forced location creation enabled
  2. Delivery
    Submit guest event with entity-encoded payload in location_name
  3. Exploit
    Payload stored, bypasses sanitization
  4. Execution
    Victim views page, browser decodes and executes script
  5. Impact
    Session/credential theft in site origin

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires two specific plugin settings to be explicitly turned on by a site administrator, both of which default to off: guest event submission (eme_fs[guest_submit]) AND forced location creation (eme_fs[force_location_creation]). The payload must be placed in the event[location_name] parameter and, per the fix, is delivered as HTML-entity-encoded markup to evade wp_kses before browser decoding re-materializes it as live script in the location map balloon. Limiting factors: on default configurations the attack surface does not exist; a victim must subsequently view the injected page for the stored script to fire; and sites updated to version 3.2.23 or later are protected.

Impact

This is a moderate-severity Stored XSS (CVSS 5.4, CWE-79) reported by Wordfence with a vendor fix in the commit history, but real-world risk is substantially gated by configuration. The CVSS vector (AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N) correctly reflects the tension in this bug: it is network-reachable and unauthenticated (PR:N), yet carries high attack complexity (AC:H) precisely because exploitation requires two non-default settings - guest event submission and forced location creation - to be explicitly enabled by an administrator. No EPSS score, KEV listing, or public POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the AC:H plus the non-default-config dependency strongly suggests this is a high-CVSS-reachability-but-low-real-world-risk issue rather than a mass-exploitation candidate. The scope change (S:C) and C:L/I:L reflect script execution in victims' browsers against the WordPress site's origin. Note the conflict defenders should weigh: the 'unauthenticated' label is real per PR:N, but it only matters on the minority of sites that deviate from the secure defaults, so prioritization should be driven by configuration audit rather than by the unauthenticated qualifier alone.

Exploit ScenarioDerived

On a site where an administrator has enabled both guest event submission and forced location creation, an unauthenticated attacker submits an event whose location_name field carries an HTML-entity-encoded payload (e.g. <img onerror=...>) that slips past wp_kses and is decoded to live markup when rendered in a location map balloon. When any user - including an administrator reviewing submissions - views the affected page, the injected script executes in their browser session. No public exploit code was identified in the provided intelligence.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 16, 2026

Stored cross-site scripting in the Events Made Easy WordPress plugin (all versions up to and including 3.2.22) lets unauthenticated attackers inject arbitrary script into the event[location_name] field, which then executes in the browser of any visitor who views the affected location map balloon. Per the CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N) the flaw is remotely reachable without credentials, but exploiting it requires an administrator to have explicitly enabled both the guest event submission feature (eme_fs[guest_submit]) and forced location creation (eme_fs[force_location_creation]) - both of which default to off - so default-configured sites are not exposed. There is no public exploit identified at time of analysis and the plugin is not in CISA KEV; the vendor addressed the issue in version 3.2.23.

RemediationAI

Vendor-released patch: upgrade the Events Made Easy plugin to version 3.2.23 or later, which is the release containing the fix (compare the 3.2.23 changeset at https://plugins.trac.wordpress.org/changeset?reponame=&new=3748824%40events-made-easy%2Ftags%2F3.2.23&old=3723758%40events-made-easy%2Ftags%2F3.2.21 against your installed copy, and review the upstream commit https://github.com/liedekef/events-made-easy/commit/3d9e92f98a9d9e443d65323ec8c86d598b3e34e0). Because the attack surface only exists when both eme_fs[guest_submit] and eme_fs[force_location_creation] are turned on, the immediate compensating control for sites that cannot patch is to disable guest event submission (eme_fs[guest_submit]) and/or forced location creation (eme_fs[force_location_creation]) in the plugin's front-end submission settings - the trade-off is that anonymous visitors will no longer be able to submit events, and if only guest_submit is disabled while unauthenticated event creation is provided some other way, residual exposure may remain. Both settings default to off, so administrators who never enabled them need take no action beyond routinely updating. After patching, consider auditing existing location and event records for stored markup in the location_name field, since any payload injected before the fix would persist in the database. Additional context is available in the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/f80a1fa2-d44b-4101-a891-fce21ee99427?source=cve.

Affected VersionsENISA

Events Made Easy 0 ≤3.2.22

Affected Packages

euvd events_made_easy no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically a stored/browser-side XSS that survives the plugin's wp_kses-based sanitization. Events Made Easy uses the _eme_kses_single() wrapper in includes/eme-functions.php to filter submitted values, but the pre-fix logic stripped tags before decoding HTML entities, allowing an attacker to submit markup in the &lt;img onerror=...&gt; form: wp_kses sees no live tag, and the browser re-decodes the entities on render, re-materializing an executable element. The payload flowed through the front-end submission handler in includes/eme-fs.php (around lines 831 and 867) and the location handling code in includes/eme-locations.php (around line 3082) into the event[location_name] value, which was then interpolated into a template string and passed to Leaflet's marker.bindPopup() in js/eme_show_maps.js. The upstream commit 3d9e92f98a9d9e443d65323ec8c86d598b3e34e0 fixes this in two complementary ways: it moves html_entity_decode() ahead of tag stripping in _eme_kses_single() so entity-obfuscated tags are caught, and it replaces the string-concatenation popup construction with DOM nodes built via the Sanitizer API's setHTML() (which strips <script>, on* handlers, and javascript: URLs). Per the CPE cpe:2.3:a:liedekef:events_made_easy:*:*:*:*:*:*:*:*, the entire version lineage up to the fixed release is in scope; the fix landed in the 3.2.23 tag (changeset 3748824 versus the 3.2.21 baseline 3723758).

Know when Events Made Easy gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Wordfence) PRIMARY 5.4 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

Unauthenticated guest submission gives PR:N, but the required non-default dual-setting configuration and entity-encoding bypass justify AC:H; stored XSS in the browser origin gives S:C with C:L/I:L and no availability impact.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.4%
Top 72% exploitable
Prevalence
Low
Niche WordPress events plugin with modest install base, not ubiquitous
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy