/

CVE-2026-92975

Severity:

HIGH RISK

(8.1)

Privilege Escalation (CWE-269) in Groundhogg WordPress

CVE-2026-92975

Deferred

Vulnerability type

Category:

Privilege Escalation

CWE:

CWE-269

Impact:

Administrative Account Takeover

Severity:

HIGH RISK

(8.1)

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

Groundhogg for WordPress contains a privilege-escalation flaw in its support-user creation flow, where attacker-controlled account attributes can be mistaken for trusted support credentials. If an attacker can create or obtain a matching account and a legitimate administrator triggers support access, the account may be promoted to administrator, or to super administrator on multisite installations.

Groundhogg for WordPress contains a privilege-escalation flaw in its support-user creation flow, where attacker-controlled account attributes can be mistaken for trusted support credentials. If an attacker can create or obtain a matching account and a legitimate administrator triggers support access, the account may be promoted to administrator, or to super administrator on multisite installations.

Affected context

The issue occurs in Groundhogg installations using the support-access functionality, including the submit_ticket or process_send_support_access entry points. Exploitation depends on the attacker having an account with the hardcoded login and email characteristics recognized by create_support_user(), together with a legitimate administrator invoking the relevant support workflow. Multisite impact may depend on the triggering administrator having network-management privileges.

The issue occurs in Groundhogg installations using the support-access functionality, including the submit_ticket or process_send_support_access entry points. Exploitation depends on the attacker having an account with the hardcoded login and email characteristics recognized by create_support_user(), together with a legitimate administrator invoking the relevant support workflow. Multisite impact may depend on the triggering administrator having network-management privileges.

Exploit preconditions

  • Attack surface: Groundhogg support-access and ticket-processing functionality in WordPress
  • Required access: An attacker-controlled or pre-planted account with the recognized user_login and user_email values
  • Account creation condition: Open registration or another authorized account-creation path must allow the attacker to obtain the matching account attributes
  • Trigger point: A legitimate administrator invokes the support-access workflow through the affected entry points
  • Why exploitation is possible: The plugin treats publicly known credential values as a trust boundary, even though users can control their own email address and may obtain a matching login
  • Attack surface: Groundhogg support-access and ticket-processing functionality in WordPress
  • Required access: An attacker-controlled or pre-planted account with the recognized user_login and user_email values
  • Account creation condition: Open registration or another authorized account-creation path must allow the attacker to obtain the matching account attributes
  • Trigger point: A legitimate administrator invokes the support-access workflow through the affected entry points
  • Why exploitation is possible: The plugin treats publicly known credential values as a trust boundary, even though users can control their own email address and may obtain a matching login

Why this happens

The vulnerability results from using predictable, user-controllable account attributes as proof that an account is a trusted support identity. The create_support_user() function compares the login and email values against hardcoded constants, while the email equality check does not establish ownership or authority because an account holder controls their own email value. This is a CWE-269: Improper Privilege Management condition in which an untrusted identity can satisfy a privileged-account check and receive administrative capabilities.

The vulnerability results from using predictable, user-controllable account attributes as proof that an account is a trusted support identity. The create_support_user() function compares the login and email values against hardcoded constants, while the email equality check does not establish ownership or authority because an account holder controls their own email value. This is a CWE-269: Improper Privilege Management condition in which an untrusted identity can satisfy a privileged-account check and receive administrative capabilities.

Potential impact

  • An attacker may gain administrator privileges on the affected WordPress site.
  • An attacker could modify site content, settings, users, plugins, or stored data.
  • A compromised administrator account may enable further persistence or lateral compromise.
  • On multisite deployments, an attacker could gain super-administrator privileges when the triggering administrator has network-management authority.
  • Site availability, confidentiality, and integrity could be affected.
  • An attacker may gain administrator privileges on the affected WordPress site.
  • An attacker could modify site content, settings, users, plugins, or stored data.
  • A compromised administrator account may enable further persistence or lateral compromise.
  • On multisite deployments, an attacker could gain super-administrator privileges when the triggering administrator has network-management authority.
  • Site availability, confidentiality, and integrity could be affected.

General mitigation guidance

Mitigation focuses on removing identity assumptions based on public, user-controlled values and ensuring that privilege grants require an independently authenticated trust decision.

Common defensive patterns include:

  • Avoiding hardcoded usernames or email addresses as authorization credentials.
  • Using server-generated, short-lived, single-use support tokens tied to an authenticated request.
  • Requiring explicit administrator confirmation and validating the intended target account before granting privileges.
  • Separating support access from permanent administrator or super-administrator roles.
  • Applying least privilege and limiting network-level capabilities to only workflows that require them.
  • Restricting account registration and monitoring account-creation paths for suspicious attribute combinations.

Mitigation focuses on removing identity assumptions based on public, user-controlled values and ensuring that privilege grants require an independently authenticated trust decision.

Common defensive patterns include:

  • Avoiding hardcoded usernames or email addresses as authorization credentials.
  • Using server-generated, short-lived, single-use support tokens tied to an authenticated request.
  • Requiring explicit administrator confirmation and validating the intended target account before granting privileges.
  • Separating support access from permanent administrator or super-administrator roles.
  • Applying least privilege and limiting network-level capabilities to only workflows that require them.
  • Restricting account registration and monitoring account-creation paths for suspicious attribute combinations.

How teams detect issues like this

Organizations can identify similar issues through:

  • Static analysis for authorization decisions based on hardcoded usernames, email addresses, or other public identifiers.
  • Code review checks for privilege-changing functions that do not verify account ownership or use authenticated capability checks.
  • Tests that attempt to create accounts with reserved support attributes and verify that no elevated role is granted.
  • Audit logging and alerting for unexpected administrator or super-administrator role changes.
  • WordPress policy enforcement that restricts registration, monitors privileged-account creation, and reviews support-access events.
  • Automated security review tools can help flag user-controlled values used as authorization conditions.

Organizations can identify similar issues through:

  • Static analysis for authorization decisions based on hardcoded usernames, email addresses, or other public identifiers.
  • Code review checks for privilege-changing functions that do not verify account ownership or use authenticated capability checks.
  • Tests that attempt to create accounts with reserved support attributes and verify that no elevated role is granted.
  • Audit logging and alerting for unexpected administrator or super-administrator role changes.
  • WordPress policy enforcement that restricts registration, monitors privileged-account creation, and reviews support-access events.
  • Automated security review tools can help flag user-controlled values used as authorization conditions.

Sources

SourceLink
github.comgithub.com/groundhoggwp/groundhogg/commit/4b413aa6e
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/groundhogg/tags/4.8.1/admin/help/help-page.php#L224
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/groundhogg/tags/4.8.1/admin/help/help-page.php#L238
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/groundhogg/tags/4.8.1/admin/help/help-page.php#L250
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/groundhogg/tags/4.8.1/admin/help/help-page.php#L298
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/groundhogg/tags/4.8.1/admin/help/help-page.php#L599
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/c355658a-515a-48ed-a114-6a202e23e34b?source=cve

Frequently asked

questions

It can be exploitable through WordPress application workflows when the attacker can obtain a matching account and a legitimate administrator later invokes the affected support-access feature. It is not a simple unauthenticated one-step attack because the two-actor flow is required.

The attacker needs a way to create or control an account with the recognized login and email values. Open registration or another account-creation path may provide that opportunity.

Replace hardcoded identity matching with an authenticated, server-generated support-access mechanism that is scoped, time-limited, single-use, and explicitly approved by an authorized administrator.

Treat user-controlled profile fields as untrusted, review every role-changing operation, enforce least privilege, restrict registration where appropriate, and monitor administrative role changes.

It can be exploitable through WordPress application workflows when the attacker can obtain a matching account and a legitimate administrator later invokes the affected support-access feature. It is not a simple unauthenticated one-step attack because the two-actor flow is required.

The attacker needs a way to create or control an account with the recognized login and email values. Open registration or another account-creation path may provide that opportunity.

Replace hardcoded identity matching with an authenticated, server-generated support-access mechanism that is scoped, time-limited, single-use, and explicitly approved by an authorized administrator.

Treat user-controlled profile fields as untrusted, review every role-changing operation, enforce least privilege, restrict registration where appropriate, and monitor administrative role changes.

Find out what's already
exploitable in your codebase.