CVE-2026-45161 wger: trainer_login accepts GET - CSRF bypass enables forced session rebinding

Medium 5.4 Published Updated

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.

PackageAffectedFixed in
wger PyPIAll versions to 2.1None
wger PyPIAll versions to 2.1None
wger PyPIAll versions to 2.1None

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.

Is CVE-2026-45161 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free