CVE-2026-43948 wger: cross-tenant password reset and plaintext disclosure via gym=None bypass
Attackers with gym.manage_gym permission can bypass authorization checks to reset passwords and view plaintext credentials for users without gym assignments.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-43948?
CVE-2026-43948 is a critical authentication bypass vulnerability in wger-project wger, published on 12 May 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
wger is a free, open-source workout and fitness manager. Prior to 2.6, the reset_user_password and gym_permissions_user_edit views in wger perform a gym-scope authorization check using Python object comparison (!=) that evaluates None != None as False, silently bypassing the guard when both the attacker and victim have no gym assignment (gym=None). A user with gym.manage_gym permission and gym=None can reset the password of any other gym=None user; the new plaintext password is returned verbatim in the HTML response body, enabling one-shot full account takeover. The victim's original password is invalidated, locking them out permanently. This vulnerability is fixed in 2.6.
Weakness: CWE-863
Which versions are affected by CVE-2026-43948?
3 open source packages ship an affected version, including wger.
| Package | Affected | Fixed in |
|---|---|---|
wger PyPI | All versions | 2.6 |
wger PyPI | All versions | 2.6 |
wger PyPI | All versions | 2.6 |
How do I fix CVE-2026-43948?
Upgrade wger to 2.6 or later.
Upgrade, and rotate credentials and sessions that may have been exposed. More about Authentication bypass.
Is CVE-2026-43948 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-43948 exists.
Sources
Also known as GHSA-mhc8-p3jx-84mm, PYSEC-2026-574.