CVE-2026-86254
Received Received - Intake

Authorization Bypass in wger Gym Management System

Vulnerability report for CVE-2026-86254, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-09-06

Last updated on: 2026-09-06

Assigner: VulnCheck

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.

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-09-06
Last Modified
2026-09-06
Generated
2026-09-06
AI Q&A
2026-09-06
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 1 associated CPE
Vendor Product Version / Range
wger wger to master (inc)

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-862 The product does not perform an authorization check when an actor attempts to access a resource or perform an action.

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

CVE-2026-86254 is a medium-severity vulnerability in wger fitness management software affecting versions up to master. It involves incomplete authorization in wger/core/views/user.py where three views use raw integer comparison instead of the is_same_gym() helper function. This allows gym staff with gym=None affiliation and gym.manage_gym permission to bypass checks and perform unauthorized actions on other users with gym=None.

Detection Guidance

To detect this vulnerability, inspect the wger/core/views/user.py file for improper integer comparisons (e.g., gym_id != request.user.userprofile.gym_id) instead of using the is_same_gym() helper function. Check for users with gym=None and gym.manage_gym permission who can perform unauthorized actions on other gym=None users.

Impact Analysis

Attackers with gym.manage_gym permission and gym=None can permanently delete user accounts, deactivate accounts to lock users out, or reactivate deactivated accounts. This leads to data loss (workouts, weight history, nutrition plans), service disruption, and potential privilege escalation. Exploitation requires only user ID enumeration and triggering affected endpoints.

Compliance Impact

The vulnerability could violate GDPR's data protection requirements by enabling unauthorized account deletion and data loss. For HIPAA, it risks exposing protected health information through unauthorized account manipulation. Compliance impact depends on data sensitivity and organizational controls.

Mitigation Strategies

Immediately update wger to a patched version that replaces raw integer comparisons with the is_same_gym() helper in wger/core/views/user.py. Ensure no users with gym=None have gym.manage_gym permission. Review logs for unauthorized deactivation, activation, or deletion attempts targeting users with gym=None.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-86254. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart