CVE-2026-12165

Contest Gallery <= 30.0.2 - Authenticated (Author+) Privilege Escalation via 'RegistryUserRole' Parameter

2026-06-16 20:57
Chloe Chamberland

Strategic Overview

Status
Patched in 30.0.3
Affected Version
<= 30.0.2
CVSS
8.8High
Weakness type
CWE-269 · Improper Privilege Management
CVE
CVE-2026-12165
View all Contest Gallery – Upload & Vote Photos, Media, Sell with PayPal & Stripe vulnerabilities

At a glance

CVE-2026-12165 is a high-severity Improper Privilege Management vulnerability in the Contest Gallery WordPress plugin, affecting versions <= 30.0.2. It carries a CVSS score of 8.8 (reachable over the network; low attack complexity; high confidentiality, integrity, availability impact). Exploitation requires an authenticated account at Author level or above. The issue is fixed in version 30.0.3; sites on affected versions should update now. Disclosed June 2026, reported by Chloe Chamberland.

Vulnerability Overview

The Contest Gallery – Upload & Vote Photos, Media, Sell with PayPal & Stripe plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 30.0.2 via the `RegistryUserRole` parameter. This is due to the plugin's admin menu being registered at the `edit_posts` capability level — granting Contributor-level users access to the plugin's admin pages and a valid `cg_admin` nonce — while the option-saving handler in `change-options-and-sizes.php` performs no `current_user_can()` capability check beyond `check_admin_referer('cg_admin')`, and the `RegistryUserRole` value is processed only through `sanitize_text_field()` and `htmlentities()` without restriction to an allowlist of permitted role names. This makes it possible for authenticated attackers, with author-level access and above, to overwrite the plugin's stored `RegistryUserRole` option with `administrator`, which the `cg_create_wp_user_from_google_user` function then reads back from the `contest_gal1ery_registry_and_login_options` database table without any allowlist validation and passes directly to `wp_update_user()`, effectively promoting a newly registered Google sign-in account to Administrator.

Technical Analysis

The vector marks this flaw as remotely reachable over the network, with low attack complexity — no special timing or configuration is needed, and no interaction from a victim user. A successful exploit has high impact on confidentiality, integrity, availability — full site compromise territory.

CWE-269: Improper Privilege Management

Contest Gallery <= 30.0.2 carries this weakness at cg_admin, and reaching it takes an account at Author level or above. Improper privilege management means the code lets an account end up with capabilities its role should not have.

It converts a low-privileged account into an administrative one, which makes every other restriction on the site irrelevant. For Contest Gallery the fix is 30.0.3: builds <= 30.0.2 are affected, anything from 30.0.3 onward is not.

Remediation

Update to version 30.0.3, or a newer patched version

How does WordSec protect against this?

Because it turns on account access, WordSec's login security is the relevant layer: role-based two-factor, captcha and brute-force limits raise the cost of getting the account this needs. None of that substitutes for the fix: Contest Gallery 30.0.3 closes this, and updating the plugin is the step that ends it.

  • Login Security
  • Alerts

External References

Related records

Vulnerability data © Defiant, Inc., provided under the Wordfence Intelligence T&C