CVE-2026-27835: wger: IDOR in RepetitionsConfig and MaxRepetitionsConfig API leak other users' workout data

Published Feb 26, 2026
·
Updated

Summary

RepetitionsConfigViewSet and MaxRepetitionsConfigViewSet return all users' repetition config data because their getqueryset() calls .all() instead of filtering by the authenticated user. Any registered user can enumerate every other user's workout structure.

Details

wger/manager/api/views.py:499 and :518:

python VULNERABLE class RepetitionsConfigViewSet(viewsets.ModelViewSet): def getqueryset(self): return RepetitionsConfig.objects.all()

class MaxRepetitionsConfigViewSet(viewsets.ModelViewSet): def getqueryset(self): return MaxRepetitionsConfig.objects.all()

Every sibling viewset in the same file correctly filters by user. For example, WeightConfigViewSet at line 459:

python CORRECT — how it should work def getqueryset(self): return WeightConfig.objects.filter( slotentryslotdayroutineuser=self.request.user )

The same user filter is present on SetsConfig, RestConfig, RiRConfig, and their Max variants — only RepetitionsConfig and MaxRepetitionsConfig are missing it.

PoC

python import requests

BASE = "http://localhost" headers = {"Authorization": "Token YOURTOKEN"} # any registered user

r = requests.get(f"{BASE}/api/v2/repetitions-config/", headers=headers) print(r.json()) # returns ALL users' repetition configs, not just your own

r = requests.get(f"{BASE}/api/v2/max-repetitions-config/", headers=headers) print(r.json()) # same — all users' max repetition configs

Registration is open by default. Sequential IDs allow full enumeration.

Impact

Any authenticated user can read other users' repetition and max-repetitions configs, exposing workout structure (slot entry IDs, iteration values, operations, step counts, repeat flags, requirements JSON). This is a broken object-level authorization (BOLA/IDOR) vulnerability — the same class of issue as OWASP API1.

Fix: Add the same user filter used by every other config viewset: python def getqueryset(self): return RepetitionsConfig.objects.filter( slotentryslotdayroutineuser=self.request.user )

Other sources

wger is a free, open-source workout and fitness manager. In versions up to and including 2.4, RepetitionsConfigViewSet and MaxRepetitionsConfigViewSet return all users' repetition config data because their getqueryset() calls .all() instead of filtering by the authenticated user. Any registered user can enumerate every other user's workout structure. Commit 1fda5690b35706bb137850c8a084ec6a13317b64 contains a fix for the issue.

NVD

Affected Software

2 affected components
pip/wger<=2.1
wger wger<=2.4

Event History

Feb 26, 2026
CVE Published
via MITRE·10:00 PM
Data Sourced
via MITRE·10:00 PM
DescriptionSeverityWeakness
Advisory Published
via GitHub·10:13 PM
Data Sourced
via GitHub·10:13 PM
DescriptionSeverityWeaknessAffected Software
Data Sourced
via NVD·10:20 PM
RemedyDescriptionSeverityWeaknessAffected Software
Mar 23, 58145
Event
via FIRST·04:52 AM

Frequently Asked Questions

1

What is the severity of CVE-2026-27835?

CVE-2026-27835 is classified as a medium severity vulnerability due to its impact on user privacy.

2

What software versions are affected by CVE-2026-27835?

CVE-2026-27835 affects wger versions up to and including 2.1.

3

How do I fix CVE-2026-27835?

To fix CVE-2026-27835, update your wger installation to the latest version that correctly filters `RepetitionsConfigViewSet` and `MaxRepetitionsConfigViewSet` data.

4

What type of vulnerability is CVE-2026-27835?

CVE-2026-27835 is an Insecure Direct Object Reference (IDOR) vulnerability that exposes other users' workout data.

5

What are the consequences of CVE-2026-27835?

The consequences of CVE-2026-27835 include unauthorized access to sensitive workout configurations of all users on the platform.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203