---
title: "CVE-2026-43948: wger: cross-tenant password reset and plaintext disclosure via gym=None bypass"
url: https://erroneo.us/security/cve/CVE-2026-43948/
description: "CVE-2026-43948 (wger (PyPI)): wger is a free, open-source workout and fitness manager. Prior to 2.6, the resetuserpassword and gympermissionsuseredit views…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-05-12
date_modified: 2026-05-13
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-43948"
kev: false
cvss: 9.9
epss: 0.00443
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-43948: wger: cross-tenant password reset and plaintext disclosure via gym=None bypass

**Signal:** Critical, preconditions apply. Severe if exploited, but exploitation needs conditions that may not apply to you. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- Not in CISA KEV , but CISA’s SSVC assessment records a public proof-of-concept, so attack code exists.
- EPSS 0.4% , percentile 37: FIRST’s model estimates a 0.4% chance of exploitation activity in the next 30 days, higher than 37% of all scored CVEs (low). EPSS is a probability, not a verdict.
- Needs an account (low (any account)). Exposure depends on who can log in.
- Only applies if your dependency tree includes wger (PyPI) <= 2.5, fixed in 2.6 . Check your lockfile, including transitive dependencies.

## What it is

wger is a free, open-source workout and fitness manager. Prior to 2.6, the resetuserpassword and gympermissionsuseredit 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.managegym 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.

## Affected packages

- PyPI `wger` <= 2.5 → fixed: 2.6

## Affected products (CVE record)

- wger-project wger: < 2.6

## Severity

- GitHub_M CVSS 3.1: 9.9 `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.9 `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H`

## Exploitation

- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation poc , automatable no , technical impact total .
- FIRST EPSS (model of 2026-10-21): 0.44% probability of exploitation activity in the next 30 days; percentile 37.

## Sources

- [GitHub Advisory GHSA-mhc8-p3jx-84mm](https://github.com/advisories/GHSA-mhc8-p3jx-84mm)
- [CVE.org record CVE-2026-43948](https://www.cve.org/CVERecord?id=CVE-2026-43948)
- [NVD entry CVE-2026-43948](https://nvd.nist.gov/vuln/detail/CVE-2026-43948)
- [github.com](https://github.com/wger-project/wger/security/advisories/GHSA-mhc8-p3jx-84mm)

---
Source page: https://erroneo.us/security/cve/CVE-2026-43948/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
