Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconTrainer authenticates to wger with gym_trainer credentials
-
DeliveryAttacker crafts trainer-login URL with external next= parameter
-
ExploitTrainer clicks delivered link
-
Installwger sets trainer.identity session key
-
C2Unvalidated HttpResponseRedirect issues 302 to attacker domain
-
ExecuteTrainer's browser follows redirect leaking user_pk via Referer
-
ImpactAttacker presents phishing page to harvest credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Redirect URL validation
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The victim must hold an active, authenticated wger session with the |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P, score 5.1) accurately characterises the attack profile: network-reachable with low complexity, but gated behind an authenticated trainer session and a social-engineering step requiring the trainer to interact with a crafted link. The real-world risk is moderate-to-low: there is no direct server-side code execution, no privilege escalation within wger, and the attacker gains only indirect influence over the trainer's browser session. The PoC is publicly documented in the GHSA advisory, raising the likelihood of eventual opportunistic exploitation, but the requirement for a credentialed trainer target limits automation potential significantly. No EPSS data or CISA KEV entry is present in the available input, and no reports of active exploitation have surfaced; even a small gym management deployment should treat this as a routine patch-cycle priority rather than an emergency response, given that the blast radius is confined to phishing and passive user_pk disclosure rather than host compromise. |
| Exploit ScenarioDerived | An attacker crafts the URL |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 06, 2026
Open redirect in wger's trainer_login view allows an attacker to redirect an authenticated trainer's browser to an arbitrary external domain immediately after impersonation mode is established. The root cause is in wger/core/views/user.py (~line 203), where HttpResponseRedirect(request.GET['next']) is called without invoking Django's url_has_allowed_host_and_scheme() guard, allowing any URL - including off-host ones - to be supplied via the ?next= GET parameter. Beyond phishing, the redirect leaks the wger instance URL structure and the impersonated user's user_pk through the browser's Referer header; a working PoC is confirmed in the GHSA advisory, though no active exploitation has been reported.
RemediationAI
Upgrade to wger 2.6 or later, which fixes the vulnerability by adding a url_has_allowed_host_and_scheme() check in wger/core/views/user.py before issuing the redirect, falling back to reverse('core:index') for any URL that fails validation. See the vendor advisory at https://github.com/wger-project/wger/security/advisories/GHSA-vqv8-j3mj-wjxj for the exact patch diff. For deployments unable to upgrade immediately, a compensating control is to configure a reverse proxy or WAF rule to strip or reject ?next= parameters that contain :// or hostnames other than the wger instance's own domain on the /en/user/*/trainer-login path - this eliminates the cross-origin redirect without disabling same-host redirects. The GHSA advisory also recommends adding @require_POST to the trainer_login view, which moves the next parameter into the POST body where Django's CSRF middleware applies, eliminating the combined CSRF/open-redirect attack surface; note this change requires updating any client-side links that currently use GET requests to the trainer-login endpoint.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
wger is an open-source Django-based workout and gym management platform (CPE cpe:2.3:a:wger-project:wger:*:*:*:*:*:*:*:*). Its trainer impersonation feature, exposed at GET /en/user/<user_pk>/trainer-login, allows users holding the gym.gym_trainer permission to assume another user's session context. After setting request.session['trainer.identity'], the view unconditionally passes request.GET['next'] to HttpResponseRedirect() with no host or scheme validation. Django provides url_has_allowed_host_and_scheme() specifically to prevent this class of defect (CWE-601: URL Redirection to Untrusted Site). The omission means any URL - cross-origin or otherwise - can appear in the HTTP Location response header, redirecting the trainer's browser off-site. The secondary information disclosure arises because browsers include the full originating URL in the Referer header when following the redirect, exposing the user_pk path segment and confirming the wger instance's URL structure to the attacker.
Know when Wger gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
Trainer authentication required (PR:L) and trainer must click the crafted link (UI:R); impact is limited to Referer-based user_pk leakage (C:L) and phishing redirect (I:L) with no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
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.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Improper Restriction of Excessive Authentication Attempts in GitHub repository wger-project/wger prior to 2.2. Rated cri
Cross Site Scripting vulnerability in wger Project wger Workout Manager v.2.2.0a3 allows a remote attacker to gain privi
Cross Site Request Forgery (CSRF) vulnerability in wger Project wger Workout Manager 2.2.0a3 allows a remote attacker to
Wger versions up to 2.4 allow authenticated users to access other users' private nutrition plans through insecure direct
Wger versions up to 2.4 expose all users' repetition configuration data to any authenticated attacker due to missing aut
Uncontrolled resource consumption in wger before 2.5 allows any authenticated user to exhaust server worker threads and
wger is a free, open-source workout and fitness manager. Five routine detail action endpoints check a cache before calli
Account-deactivation privilege escalation in wger before 2.6 lets an authenticated user who holds only the gym_trainer r
Cross-user integrity corruption in wger versions prior to 2.6 allows authenticated attackers to inject arbitrary workout
Incomplete authorization fix in wger through master exposes three user-management views in wger/core/views/user.py to th
wger before 2.6 contains a CSRF bypass (CWE-352) that lets an attacker-controlled web page silently rebind an authentica
Cross-site request forgery in wger's gym password-reset endpoint allows a remote attacker to force an arbitrary member's
EUVD-2026-72112
GHSA-rc6j-63fm-mhq4
NVD
CVE.org
EPSS
VulDB
Exploit-DB