CVE-2026-43978
HighCVSS 8.1Exploitation Probability (EPSS)
Low risk12th percentile - higher than 12% of all known CVEs
Summary
In wger prior to version 2.6, a gym trainer can escalate their session to any higher-privileged account (gym manager, general manager) by chaining two calls to the trainer-login endpoint. After a legitimate switch to a low-privileged user, the session flag `trainer.identity` is set and bypasses permission checks on subsequent trainer-login calls.
Risk Assessment
The organization is at risk of unauthorized access to all member data, contract modifications, gym configuration management, and access to personal information of other trainers and managers, potentially leading to privacy breaches and system integrity issues.
Recommendation
Immediately upgrade wger to version 2.6 or later, which includes the fix for this vulnerability. Before upgrading, consider restricting access to the trainer-login endpoint to trusted users only.
Other vulnerabilities in wger
See all- CVE-2026-46434High
wger, a free workout and fitness manager, prior to version 2.6 contains a vulnerability allowing a user with only the `gym_trainer` permission to deactivate any account in the same gym, including `gym_manager` and `general_gym_manager` accounts. The `UserDeactivateView` grants access to anyone holding any one of `gym.manage_gym`, `gym.manage_gyms`, or `gym.gym_trainer` (OR logic) without privilege-hierarchy checks. Version 2.6 fixes the issue.
- CVE-2026-45161Medium
In wger prior to version 2.6, the trainer_login view accepts GET requests and executes django_login() without CSRF protection, because Django's CsrfViewMiddleware only enforces tokens on unsafe methods. An attacker can embed an <img> tag on a malicious page; when an authenticated trainer loads it, their browser auto-issues the GET with the session cookie, forcibly rebinding the trainer's session to an arbitrary user account.
- CVE-2026-43948Critical
In wger prior to version 2.6, there is a vulnerability that allows a user with gym.manage_gym permissions to reset the password of any user with no gym assignment. By exploiting an object comparison error, an attacker can take over the victim's account, and the victim's original password is invalidated.
- CVE-2026-46438Medium
In wger prior to version 2.6, an authenticated attacker can inject arbitrary workout log entries into any other user's SlotEntry by supplying the victim's slot_entry ID in a POST /api/v2/workoutlog/ request. The slot_entry foreign key is not included in ownership verification, and the injected data is silently folded into the victim's progressive-overload calculations, corrupting auto-generated targets.
- CVE-2026-46437Medium
In wger prior to version 2.6, a vulnerability in the authentication/session lifecycle allows bearer-style API credentials to remain valid after a user logs out and after a password change. An attacker who steals a DRF authtoken or JWT refresh token can continue to access protected /api/v2/* endpoints until the token is manually rotated/deleted or naturally expires.
- CVE-2026-43976High
wger prior to version 2.6 contains a vulnerability in five gym management views where the gym-scope guard (`gym_a != gym_b`) silently passes when both operands are `None`. A trainer with `gym.gym_trainer` and `gym.add_adminusernote` permissions and no gym assignment (`gym=None`) can read private admin notes, uploaded documents, gym contracts, user configuration, and user permission data for any other unaffiliated user. The querysets filter only on `member_id` without secondary gym-scoped validation, disclosing all records. Version 2.6 fixes the issue.
- CVE-2026-86257Medium
wger before 2.6 fails to sanitize first_name and last_name fields in the gym member TSV export endpoint, allowing any gym member to inject spreadsheet formulas. Attackers can inject formulas like =HYPERLINK to exfiltrate admin data or execute code when admins open the exported file in Excel or LibreOffice Calc.
- CVE-2026-86256Medium
wger before 2.6 (affected versions <= 2.5.0) contains an open redirect vulnerability in the trainer_login view (wger/core/views/user.py). After a trainer enters impersonation mode, the view redirects to the user-supplied 'next' GET parameter via HttpResponseRedirect() without validating it with url_has_allowed_host_and_scheme(). An attacker who delivers a crafted link to an authenticated trainer can redirect the trainer's browser to an attacker-controlled domain, enabling phishing and leaking the wger URL structure (including the impersonated user's user_pk) via the Referer header.
- CVE-2026-86255Medium
wger before 2.5 fails to validate the maximum duration of routine date ranges, allowing authenticated users to create routines spanning arbitrarily long periods. Attackers can trigger the date_sequence computation via routine detail endpoints, forcing the server to iterate thousands of times per request and exhaust worker threads, denying service to legitimate users.
- CVE-2026-86254Medium
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.
Original NVD description (English source)
wger is a free, open-source workout and fitness manager. In versions prior to 2.6, a gym trainer can escalate their session to any higher-privileged account (gym manager, general manager) by chaining two calls to the trainer-login endpoint. Once a trainer performs a legitimate switch into a low-privileged user, the session flag trainer.identity is set and this flag alone bypasses the permission check on all subsequent trainer-login calls. This grants full gym administration capabilities including viewing all member data, modifying contracts, managing gym configuration, and accessing other trainers' and managers' personal information. This issue has been fixed in version 2.6.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

