Description
wger versions through master contain an incomplete authorization bypass in wger/core/views/user.py where three views retain the original gym-scope check using raw integer comparison instead of the is_same_gym() helper, allowing gym staff with gym=None to delete, deactivate, or activate any other user with gym=None. Attackers with gym.manage_gym permission and gym=None affiliation can permanently delete user accounts, lock users out via deactivation, or undo defensive deactivations by exploiting the None != None comparison edge case.
Published: 2026-09-06
Score: 6.1 Medium
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability resides in wger’s core view handlers where a legacy integer equality check is used instead of the is_same_gym() helper. This oversight means that staff with a null gym affiliation (gym=None) can bypass the intended gym‑scoped restrictions and delete, deactivate, or activate any user who also has a null gym affiliation. This capability is effectively an authorization escalation that allows an attacker to permanently remove or lock out other users, reversing defense mechanisms.

Affected Systems

The issue affects all wger-project:wger releases that use the vulnerable master branch. No specific version numbers are supplied, but any build that includes the unpatched master code is susceptible.

Risk and Exploitability

With a CVSS score of 6.1, the vulnerability is considered moderate severity. The EPSS score is not available, and the vulnerability is not listed in CISA KEV, indicating no known active exploits at this time. However, exploitation requires the attacker to hold gym.manage_gym permission and belong to a null gym affiliation, conditions that may be present in some deployments. Once those prerequisites are met, the attacker can delete or deactivate user accounts, causing loss of availability and potential data loss.

Generated by OpenCVE AI on September 6, 2026 at 13:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the latest patch or upgrade to a release that replaces the raw integer check with the is_same_gym() helper.
  • Revoke or tightly restrict gym.manage_gym permissions for users assigned to a null gym.
  • Audit existing user accounts for null gym affiliations and correct or reassign them to a valid gym.
  • Implement temporary checks to block delete/deactivate actions when the target user’s gym is null until a formal fix is deployed.

Generated by OpenCVE AI on September 6, 2026 at 13:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 06 Sep 2026 12:15:00 +0000

Type Values Removed Values Added
Description wger versions through master contain an incomplete authorization bypass in wger/core/views/user.py where three views retain the original gym-scope check using raw integer comparison instead of the is_same_gym() helper, allowing gym staff with gym=None to delete, deactivate, or activate any other user with gym=None. Attackers with gym.manage_gym permission and gym=None affiliation can permanently delete user accounts, lock users out via deactivation, or undo defensive deactivations by exploiting the None != None comparison edge case.
Title wger Incomplete Authorization Fix Cross-Tenant Account Deletion
First Time appeared Wger
Wger wger
Weaknesses CWE-862
CPEs cpe:2.3:a:wger:wger:*:*:*:*:*:*:*:*
Vendors & Products Wger
Wger wger
References
Metrics cvssV3_1

{'score': 6.8, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H'}

cvssV4_0

{'score': 6.1, 'vector': 'CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-06T12:00:28.899Z

Reserved: 2026-09-06T11:35:19.316Z

Link: CVE-2026-86254

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-06T12:17:16.297

Modified: 2026-09-06T12:17:16.297

Link: CVE-2026-86254

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-06T13:30:07Z

Weaknesses