/

CVE-2026-109381

Severity:

HIGH RISK

(7.2)

Privilege Escalation (CWE-269) in Mage Eventpress Plugin

CVE-2026-109381

Deferred

Vulnerability type

Category:

Privilege Escalation

CWE:

CWE-269

Impact:

Unauthorized Administrator-level access

Severity:

HIGH RISK

(7.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Mage Eventpress for WordPress contains a privilege-escalation flaw in its capability handling logic. An authenticated attacker with Shop Manager-level access or higher may manipulate an admin request marker to receive Administrator-level capabilities when the vulnerable hook processes the request.

Mage Eventpress for WordPress contains a privilege-escalation flaw in its capability handling logic. An authenticated attacker with Shop Manager-level access or higher may manipulate an admin request marker to receive Administrator-level capabilities when the vulnerable hook processes the request.

Affected context

The issue occurs in WordPress installations using Mage Eventpress versions up to and including 5.7.8. It becomes risky when the plugin's capability filter processes attacker-controlled request values, such as an administrative page parameter, without confirming that the value identifies a registered EventPress screen.

The issue occurs in WordPress installations using Mage Eventpress versions up to and including 5.7.8. It becomes risky when the plugin's capability filter processes attacker-controlled request values, such as an administrative page parameter, without confirming that the value identifies a registered EventPress screen.

Exploit preconditions

  • Attack surface: WordPress administrative URLs processed by the Mage Eventpress plugin
  • Required access: An authenticated account with Shop Manager-level access or higher
  • Trigger point: Capability evaluation through the user_has_cap hook during an administrative request
  • Why exploitation is possible: The plugin may grant manage_options when an attacker-controlled request marker begins with an expected EventPress prefix, without validating that the target screen is actually registered
  • Attack surface: WordPress administrative URLs processed by the Mage Eventpress plugin
  • Required access: An authenticated account with Shop Manager-level access or higher
  • Trigger point: Capability evaluation through the user_has_cap hook during an administrative request
  • Why exploitation is possible: The plugin may grant manage_options when an attacker-controlled request marker begins with an expected EventPress prefix, without validating that the target screen is actually registered

Why this happens

The vulnerability results from insecure authorization logic that derives a privileged capability from an untrusted request parameter. The mep_grant_shop_manager_access() function hooks user_has_cap and can unconditionally grant manage_options when a request marker matches a prefix such as mep_ or mpwem_. Because the value is not tied to a verified, registered EventPress screen, a lower-privileged authenticated user may influence authorization decisions. This behavior maps to CWE-269: Improper Privilege Management.

The vulnerability results from insecure authorization logic that derives a privileged capability from an untrusted request parameter. The mep_grant_shop_manager_access() function hooks user_has_cap and can unconditionally grant manage_options when a request marker matches a prefix such as mep_ or mpwem_. Because the value is not tied to a verified, registered EventPress screen, a lower-privileged authenticated user may influence authorization decisions. This behavior maps to CWE-269: Improper Privilege Management.

Potential impact

  • An attacker may obtain Administrator-level WordPress capabilities
  • The attacker could modify site settings and plugin configuration
  • The attacker could create or alter privileged accounts
  • Site content, data, and administrative functionality may be changed
  • The compromised site could be used to distribute malicious content or affect connected systems
  • An attacker may obtain Administrator-level WordPress capabilities
  • The attacker could modify site settings and plugin configuration
  • The attacker could create or alter privileged accounts
  • Site content, data, and administrative functionality may be changed
  • The compromised site could be used to distribute malicious content or affect connected systems

General mitigation guidance

Mitigation should focus on separating request routing from authorization decisions and ensuring that capabilities are granted only after explicit identity, action, and resource checks.

Common defensive patterns include:

  • Avoiding unconditional capability grants based on request parameters
  • Validating administrative screen identifiers against an allowlist of registered plugin screens
  • Enforcing authorization checks at the specific action or resource boundary
  • Applying least-privilege roles and limiting Shop Manager permissions where practical
  • Treating all client-supplied request values as untrusted
  • Adding regression tests for unauthorized capability elevation and malformed administrative requests

Mitigation should focus on separating request routing from authorization decisions and ensuring that capabilities are granted only after explicit identity, action, and resource checks.

Common defensive patterns include:

  • Avoiding unconditional capability grants based on request parameters
  • Validating administrative screen identifiers against an allowlist of registered plugin screens
  • Enforcing authorization checks at the specific action or resource boundary
  • Applying least-privilege roles and limiting Shop Manager permissions where practical
  • Treating all client-supplied request values as untrusted
  • Adding regression tests for unauthorized capability elevation and malformed administrative requests

How teams detect issues like this

Organizations can look for:

  • Static analysis patterns involving user_has_cap, map_meta_cap, or similar authorization hooks that grant capabilities based on $_GET, $_POST, or other request data
  • Code review signals such as prefix-only checks, unconditional manage_options grants, and missing validation against registered screens or actions
  • Tests that exercise administrative endpoints with unexpected page markers while using non-administrator accounts
  • WordPress audit logs showing Shop Manager accounts accessing administrator-only settings or changing users and site configuration
  • Policy enforcement requiring centralized authorization checks and explicit capability-to-action mappings

Automated code review and security scanning tools may help identify request-derived privilege decisions, but findings should be validated against the application's role and routing model.

Organizations can look for:

  • Static analysis patterns involving user_has_cap, map_meta_cap, or similar authorization hooks that grant capabilities based on $_GET, $_POST, or other request data
  • Code review signals such as prefix-only checks, unconditional manage_options grants, and missing validation against registered screens or actions
  • Tests that exercise administrative endpoints with unexpected page markers while using non-administrator accounts
  • WordPress audit logs showing Shop Manager accounts accessing administrator-only settings or changing users and site configuration
  • Policy enforcement requiring centralized authorization checks and explicit capability-to-action mappings

Automated code review and security scanning tools may help identify request-derived privilege decisions, but findings should be validated against the application's role and routing model.

Sources

SourceLink
github.comgithub.com/magepeopleteam/mage-eventpress
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/mage-eventpress/trunk/woocommerce-event-press.php#L405
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/mage-eventpress/trunk/woocommerce-event-press.php#L432
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/mage-eventpress/trunk/woocommerce-event-press.php#L504
plugins.trac.wordpress.orgplugins.trac.wordpress.org/changeset/3754150/mage-eventpress/trunk/woocommerce-event-press.php
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/076607ec-d848-4b4e-986b-31287f8f0ae4?source=cve

Frequently asked

questions

Exploitation generally requires an authenticated WordPress account with Shop Manager-level access or higher. Unauthenticated visitors would not normally reach the relevant capability evaluation path.

No. The issue is specifically relevant because a sufficiently privileged non-administrator account may influence a request marker and receive capabilities intended for administrators.

Do not grant capabilities based solely on request parameters. Verify the requested screen or action against registered plugin functionality, then perform an explicit capability check at the protected operation.

Treat request data as untrusted, centralize authorization logic, test every administrative action with each supported role, and monitor for unexpected privilege changes or administrator-only activity.

Exploitation generally requires an authenticated WordPress account with Shop Manager-level access or higher. Unauthenticated visitors would not normally reach the relevant capability evaluation path.

No. The issue is specifically relevant because a sufficiently privileged non-administrator account may influence a request marker and receive capabilities intended for administrators.

Do not grant capabilities based solely on request parameters. Verify the requested screen or action against registered plugin functionality, then perform an explicit capability check at the protected operation.

Treat request data as untrusted, centralize authorization logic, test every administrative action with each supported role, and monitor for unexpected privilege changes or administrator-only activity.

Find out what's already
exploitable in your codebase.