CVE-2026-43977
HighCVSS 7.5Exploitation Probability (EPSS)
Low risk14th percentile - higher than 14% of all known CVEs
Summary
In wger versions prior to 2.6, an authenticated user can read another user's private workout notes, exercise history, and training statistics by calling the /logs/ and /stats/ actions on a routine they do not own. The vulnerability is due to incorrect permission checks in RoutineViewSet, which grants read access to any authenticated user when the routine has is_template=True.
Risk Assessment
The organization is at risk of leaking private user workout data, potentially violating confidentiality and data protection regulations.
Recommendation
Upgrade wger to version 2.6 or later immediately, which contains the fix for this vulnerability.
Other vulnerabilities in wger
See all- 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-43978High
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.
Original NVD description (English source)
wger is a free, open-source workout and fitness manager. In versions prior to 2.6, any authenticated user can read another user's private workout session notes, exercise history, and training statistics by calling the /logs/ and /stats/ actions on a routine they do not own. The vulnerability exists in RoutineViewSet (wger/manager/api/views.py). The view defines two custom actions /logs/ and /stats/ that are intended to return data for the requesting user's own training history within a routine. However, the underlying permission check (RoutinePermission.has_object_permission) grants read access to any authenticated user when the routine has is_template=True, regardless of ownership. When the /logs/ or /stats/ actions are invoked against a routine the attacker does not own, they return the owner's private workout history, not the attacker's. This issue has been fixed in version 2.6.

