Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconRegister or obtain authenticated account
-
DeliveryPOST routine with arbitrarily large date range (e.g., 100 years)
-
ExploitSend GET request to date-sequence or related routine detail endpoint
-
InstallServer executes unbounded per-day while loop (36,525 iterations)
-
C2Repeat requests concurrently
-
ExecuteSaturate all gunicorn worker threads
-
ImpactDeny service to all legitimate users
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must hold a valid authenticated account on the target wger instance (CVSS PR:L); in deployments with open self-registration this requires only completing account creation. No admin role, elevated permissions, or special feature flag is needed - any default user role can call the routine creation endpoint and the five triggering read endpoints. The unbounded date-range computation is triggered by standard documented API calls requiring only a valid Authorization token. Exploitation is limited to wger instances running a version before 2.5 that are network-reachable (AV:N). Instances that disable self-registration and strictly vet user accounts have a meaningfully higher practical barrier, as the attacker must control at least one legitimate credential. |
| Impact | The CVSS 4.0 score of 7.1 (AV:N/AC:L/AT:N/PR:L/UI:N/VA:H) accurately reflects the threat model. Any account holder - including a self-registered user in open-registration deployments - can trigger the DoS; no elevated permissions are required. Attack complexity is low with no special configuration needed, and exploitation requires no user interaction beyond routine creation and a single GET request. The GHSA advisory includes a complete PoC with exact JSON payloads, which substantially lowers the practical exploitation threshold despite the absence of a separately released exploit tool. No CISA KEV listing exists and EPSS data was not provided in the input. Real-world risk is strongly modulated by deployment model: instances with open self-registration face a near-zero barrier beyond account creation, while SSO-gated or invite-only deployments require the attacker to already hold a legitimate account. The absence of scope change (S:U, SC:N) is appropriate - the DoS is confined to the wger application worker pool and does not affect the underlying OS or adjacent systems. |
| Exploit ScenarioDerived | An attacker registers a free account on a public wger instance, POSTs a routine with start=2000-01-01 and end=2099-12-31, then fires concurrent GET requests to /api/v2/routine/<id>/date-sequence-display/ using tools such as curl or a simple Python script. Each request occupies a gunicorn worker for several seconds while the server iterates 36,525 days; with enough concurrent requests the attacker saturates all worker threads, causing HTTP 503 errors for all other users. The GHSA advisory includes exact JSON payloads making this trivially reproducible. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 06, 2026
Uncontrolled resource consumption in wger before 2.5 allows any authenticated user to exhaust server worker threads and deny service to all legitimate users. By creating a routine with an arbitrarily long date range (e.g., 100 years spanning 2000-2099) and then triggering the unbounded date_sequence while-loop via any of five routine detail REST endpoints, a single HTTP request forces 36,525 per-day iterations - each performing O(slots × entries × configs) computation - consuming multiple seconds of CPU. No public exploit code has been released independently, though the GHSA advisory itself contains a complete, weaponizable step-by-step PoC including exact API payloads.
RemediationAI
A fix commit (5f07a4473e2c32d298c8cdd31d78e5107840039c) exists in the wger GitHub repository and adds maximum-duration validation to the Routine model and serializer. However, no formally released patched pip package version has been confirmed - the VulnCheck record states 'fixed in: None' - so the fix boundary of 2.5 stated in the CVE description should be verified against the wger release tags before upgrading. Operators running wger from source can apply the commit directly. Until a confirmed patched release is available, compensating controls include: restricting routine creation to verified/trusted user roles to reduce the attacker pool; adding a reverse-proxy or WAF rate limit (e.g., nginx limit_req or HAProxy stick-tables) on the five triggering endpoints (date-sequence-display, date-sequence-gym, structure, logs, stats) - note that overly aggressive rate limits may also affect legitimate power users; configuring a per-request timeout at the gunicorn layer (e.g., --timeout 30) to cap unbounded CPU consumption, accepting that legitimately large requests may also be terminated; and disabling open self-registration on public-facing instances. Monitor https://github.com/wger-project/wger/security/advisories/GHSA-v25j-wqcw-fvhj for an official patched release announcement.
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 training management application (CPE: cpe:2.3:a:wger-project:wger). The root cause is CWE-400 (Uncontrolled Resource Consumption). The Routine model in wger/manager/models/routine.py enforces only one constraint - that start does not exceed end - with no maximum duration bound on the date range. The date_sequence property (line 256 of the same file) uses an unbounded while current_date <= self.end loop that iterates once per calendar day, performing nested lookups for slots, entries, configs, and logs on each pass. A 100-year routine yields 36,525 iterations per request. The RoutineSerializer (wger/manager/api/serializers.py, line 43) also omits delta validation. Five API endpoints trigger this computation: GET /api/v2/routine/<id>/date-sequence-display/, /date-sequence-gym/, /structure/, /logs/, and /stats/.
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:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Any low-privilege authenticated user can trigger the DoS remotely with no special conditions; no confidentiality or integrity impact applies.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
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.
Technical POC Analysis
CWE-400: Uncontrolled Resource Consumption.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
wger (fitness and workout management application) versions before 2.5 contain a denial-of-service vulnerability allowing any authenticated user to crash the entire service with a single HTTP request through resource exhaustion. Publicly available exploit code exists (documented in the GHSA advisory), and no vendor patch is currently available, creating immediate operational risk for all users.
Implement rate limiting (1-2 requests per minute per authenticated user on affected endpoints), add request-level timeouts (30 seconds maximum), validate and reject date-range parameters exceeding 365 days, restrict routine creation to administrator-only access, and monitor worker thread and CPU utilization for anomalous spikes. No vendor-released patch identified at time of analysis.
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
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
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
Open redirect in wger's trainer_login view allows an attacker to redirect an authenticated trainer's browser to an arbit
EUVD-2026-72111
GHSA-vh7q-hj8h-q34m
NVD
CVE.org
EPSS
VulDB
Exploit-DB