CVE-2026-45161 wger: trainer_login accepts GET - CSRF bypass enables forced session rebinding
An attacker can force a logged-in trainer to switch sessions to an arbitrary account via a GET request, enabling account takeover.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- None listed
What is CVE-2026-45161?
CVE-2026-45161 is a medium-severity vulnerability in wger-project wger, published on 7 Oct 2026. Any signed-in user can exploit it over the network, and only if a user opens a file or follows a link.
Official description
wger is a free, open-source workout and fitness manager. Prior to version 2.6, the `trainer_login` view in wger accepts GET requests and executes `django_login()` without any CSRF protection, because Django's `CsrfViewMiddleware` only enforces tokens on unsafe methods (POST/PUT/PATCH/DELETE). An attacker can embed a single `<img>` tag on a malicious page; when an authenticated trainer loads that page, their browser auto-issues the GET with the session cookie, forcibly rebinding the trainer's session to an arbitrary user account. Version 2.6 fixes the issue.
Weakness: CWE-352
Which versions are affected by CVE-2026-45161?
3 open source packages ship an affected version, including wger.
| Package | Affected | Fixed in |
|---|---|---|
wger PyPI | All versions to 2.1 | None |
wger PyPI | All versions to 2.1 | None |
wger PyPI | All versions to 2.1 | None |
How do I fix CVE-2026-45161?
No fix has been published for CVE-2026-45161 yet. Limit exposure of the affected software until one is available.
Is CVE-2026-45161 being exploited?
There is no known exploitation of CVE-2026-45161 in the wild and no public exploit code.
Sources
Also known as GHSA-xf64-4pmc-h8qf, PYSEC-2026-4317.