CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-V25J-WQCW-FVHJ

GHSA-V25J-WQCW-FVHJ: Uncontrolled Resource Consumption via Unbounded Date Sequences in wger

Alon Barad
Alon Barad
Software Engineer

May 13, 2026·5 min read·10 visits

Executive Summary (TL;DR)

Authenticated attackers can trigger a Denial of Service by creating workout routines with excessively large date ranges, causing unbounded loops that exhaust server CPU and worker threads.

wger is susceptible to an authenticated Denial of Service (DoS) vulnerability due to uncontrolled resource consumption (CWE-400). The flaw resides in the application's handling of date sequences within routine configurations, allowing authenticated attackers to exhaust server resources by defining enormous date ranges.

Vulnerability Overview

wger is an open-source web application designed to manage personal workouts, routines, and nutritional plans. The core functionality relies on generating and tracking dates for exercise routines over defined periods. The application exposes a REST API allowing users to programmatically create and modify these workout schedules.

A vulnerability identified as GHSA-V25J-WQCW-FVHJ exists within the routine processing logic, specifically categorized as CWE-400 (Uncontrolled Resource Consumption). The vulnerability occurs when the application parses user-supplied start and end dates for a given routine.

By supplying abnormally large date ranges, an authenticated user forces the application to compute massive date sequences in memory. This unbounded computation directly exhausts server resources. The resulting Denial of Service (DoS) affects all users of the specific instance by consuming available application worker threads.

Root Cause Analysis

The root cause lies in the algorithmic complexity of the date_sequence property within the Routine model. This property generates an iterative sequence of dates spanning the provided start and end boundaries. Historically, this generation was implemented using an iterative loop mechanism without an artificial bound.

The application previously validated only that the end date occurred chronologically after the start date. No constraints restricted the total mathematical difference between the two dates. This oversight allowed the creation of timebounds spanning several centuries.

When a routine with a massive date range is queried, the backend initiates a sequence generation that executes tens of thousands of loop iterations. Each iteration performs resource-intensive database lookups and object instantiation for workout slots, log entries, and user configurations.

The combination of unbounded iterations and heavy per-iteration computational cost causes the application worker handling the request to hang indefinitely. This locks the underlying thread, eventually starving the web server of available workers to serve legitimate traffic.

Code Analysis

Prior to the patch, the application lacked proper duration bounds checking at the API boundary. The database model's clean() method was incomplete and did not sufficiently protect the endpoints driven by the Django REST Framework. This permitted malicious objects to persist in the database.

The remediation introduced in commit 5f07a4473e2c32d298c8cdd31d78e5107840039c enforces a hard limit of 120 days on any newly created or modified routine. The fix centralizes this logic within the RoutineSerializer class.

# Patch implementation in RoutineSerializer validate method
if (end - start).days > Routine.MAX_DURATION_DAYS:
    raise serializers.ValidationError(
        {'end': f'A routine cannot span more than {Routine.MAX_DURATION_DAYS} days.'}
    )

While the serializer validation prevents external creation via the API, the underlying date_sequence loop remains algorithmically unconstrained. If an attacker bypasses the API layer or preexisting malicious data exists in the database, the iteration loop will still trigger the resource consumption condition.

Exploitation Methodology

Exploitation requires the attacker to possess a valid, authenticated session within the target wger application. The attacker initiates the exploit by sending a crafted POST request to the /api/v1/routine/ endpoint. The payload contains a start and end date with a massive differential.

Once the malicious routine record is committed to the database, the attacker must trigger the sequence generation logic. The attacker accesses endpoints such as /api/v1/routine/<id>/date-sequence-display/ or /api/v1/routine/<id>/stats/. These views attempt to render the requested data, firing the vulnerable property.

A proof-of-concept exists within the developer's regression tests. The PoC establishes a routine starting in the year 2024 and ending several centuries later. Accessing the created object locks the processing thread immediately.

Because the vulnerability ties up application workers rather than crashing the process, the server simply stops responding to subsequent requests. Administrators observe high CPU usage and full connection queues at the reverse proxy layer.

Impact Assessment

The primary impact is a severe degradation of availability. A single authenticated request can fully consume a worker thread. A low-bandwidth attacker making concurrent requests can rapidly exhaust all available web workers.

The condition creates an Application Exhaustion Flood, mapped to MITRE ATT&CK technique T1499.003. Since the malicious routine persists in the database, the Denial of Service condition becomes persistent if automated background processes attempt to aggregate statistics across all system routines.

The vulnerability does not directly compromise confidentiality or integrity. No arbitrary code execution or data exfiltration is achieved. The blast radius is limited strictly to system availability.

Remediation efforts may require system downtime. Administrators must identify and manually remove the offending records from the underlying database before normal operation can resume if the exploit was triggered persistently.

Remediation and Mitigation Guidance

System administrators must update their wger deployments to a version incorporating commit 5f07a4473e2c32d298c8cdd31d78e5107840039c. The patch enforces a 120-day maximum duration limit on routine creation via the application's REST framework.

Because the patch relies on the Django REST Framework serializer, administrators must sanitize existing database entries. Any pre-existing routines with durations exceeding the 120-day limit remain viable vectors for resource exhaustion.

Administrators should execute SQL queries against the manager_routine table to identify anomalous records. Records where the mathematical difference between the end and start dates exceeds expected limits should be truncated or deleted to restore full application stability.

Network administrators can implement Web Application Firewall (WAF) rules to inspect incoming POST and PATCH requests directed at the /api/v1/routine/ endpoint. The WAF can block payloads containing unusually long date ranges before they reach the backend application.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Affected Systems

wger Workout Manager backend API

Affected Versions Detail

Product
Affected Versions
Fixed Version
wger
wger-project
< commit 5f07a4473e2c32d298c8cdd31d78e5107840039c-
AttributeDetail
CWE IDCWE-400
Attack VectorNetwork (Authenticated API)
ImpactDenial of Service (CPU Exhaustion)
Exploit StatusProof-of-Concept
Patch StatusAvailable
CVSS SeverityHigh (7.5 estimated)

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
T1499.003Application Exhaustion Flood
Impact
CWE-400
Uncontrolled Resource Consumption

The software does not properly control the allocation and maintenance of a limited resource, thereby enabling an actor to influence the amount of resources consumed, eventually leading to the exhaustion of available resources.

Vulnerability Timeline

Patch committed by project maintainer
2026-05-08
GHSA-V25J-WQCW-FVHJ advisory published
2026-05-13

References & Sources

  • [1]GitHub Advisory GHSA-V25J-WQCW-FVHJ
  • [2]Fix Commit 5f07a4473e2c32d298c8cdd31d78e5107840039c
  • [3]wger-project GitHub Repository

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•1 minute ago•CVE-2024-29203
4.3

CVE-2024-29203: Client-Side Cross-Site Scripting via Unsandboxed Iframes and Legacy Embed Elements in TinyMCE

CVE-2024-29203 identifies a cross-site scripting (XSS) vulnerability in the content ingestion and parsing mechanics of TinyMCE rich text editor. Due to a failure to enforce sandbox attributes on dynamic iframe elements and safely handle legacy embed objects, unauthenticated attackers can inject malicious elements that execute scripts within the context of the parent application session.

Amit Schendel
Amit Schendel
0 views•5 min read
•about 2 hours ago•CVE-2026-9277
8.1

CVE-2026-9277: OS Command Injection in shell-quote via Object-Token Line Terminator Parsing Defect

A technical breakdown of the OS command injection vulnerability in the shell-quote NPM package (CVE-2026-9277 / GHSA-w7jw-789q-3m8p). The bug resides in the character-by-character backslash-escaping logic applied to the .op field of object-tokens within the quote() function, which fails to match and escape line terminators due to a regex matching oversight in JavaScript. This allows unauthenticated remote attackers to execute arbitrary shell commands if they can control inputs processed by this library.

Alon Barad
Alon Barad
6 views•6 min read
•about 3 hours ago•CVE-2026-11645
8.8

CVE-2026-11645: Out-of-Bounds Memory Access in Google Chrome V8 Engine

A high-severity memory corruption vulnerability exists in the V8 JavaScript engine of Google Chrome before versions 149.0.7827.102/103. The flaw arises from an incorrect bounds-check elimination during JIT compilation by the TurboFan optimizer, allowing remote attackers to achieve out-of-bounds read and write access inside the sandboxed renderer process.

Amit Schendel
Amit Schendel
18 views•6 min read
•about 12 hours ago•CVE-2026-50751
9.3

CVE-2026-50751: Authentication Bypass in Check Point Security Gateway IKEv1 Legacy Validation

An improper authentication vulnerability (CWE-287) exists in the legacy, deprecated Internet Key Exchange version 1 (IKEv1) key exchange protocol implementation in Check Point Security Gateways. The vulnerability is caused by a logic flow weakness during the certificate validation process for Remote Access VPN and Mobile Access (SSL VPN) connections. An unauthenticated remote attacker can exploit this weakness to bypass user authentication entirely, establishing a fully functional Remote Access VPN connection without a valid password.

Alon Barad
Alon Barad
63 views•6 min read
•1 day ago•CVE-2026-39922
6.3

CVE-2026-39922: Server-Side Request Forgery in GeoNode Service Registration Endpoint

GeoNode versions prior to 4.4.5 and 5.0.2 are vulnerable to Server-Side Request Forgery (SSRF) in the service registration endpoint. Authenticated attackers with low privileges can exploit insufficient input validation in the Web Map Service (WMS) registration module to force the application server to make outbound network queries to loopback addresses, private RFC1918 subnets, link-local scopes, and cloud metadata endpoints. This technical report details the mechanics of the vulnerability, the underlying architectural flaw, and how to effectively remediate and mitigate the associated security risks.

Alon Barad
Alon Barad
4 views•7 min read
•1 day ago•CVE-2022-0492
7.8

CVE-2022-0492: Privilege Escalation and Container Escape via cgroups v1 release_agent

CVE-2022-0492 is a high-severity missing authorization vulnerability in the Linux kernel's Control Groups (cgroups) v1 implementation. The flaw resides within the cgroup_release_agent_write function in kernel/cgroup/cgroup-v1.c, where the kernel fails to validate if the process writing to the release_agent file possesses administrative capabilities in the initial user namespace. This allows a local attacker inside a container with root privileges (UID 0) to abuse user namespaces, mount a cgroups v1 directory, modify the release_agent parameter, and execute arbitrary commands on the host system as host root, effectively achieving a complete container escape.

Amit Schendel
Amit Schendel
12 views•7 min read