Skip to content
Heist/ feed
Back to feed
Critical

wger: cross-tenant password reset and plaintext disclosure via gym=None bypass

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-43948
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 16:09 UTC · Revision 1

Source evidence

wger: cross-tenant password reset and plaintext disclosure via gym=None bypass

core-osv · Original source

Published 12 May 2026, 20:47 UTC

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.

osv:CVE-2026-43948
Complete source record
{
  "id": "e611f7a4719e6753643b6e20c6345734d77d7d3eea6e39ccb5dcf9e8bcf6ef46",
  "url": "https://osv.dev/vulnerability/CVE-2026-43948",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "wger: cross-tenant password reset and plaintext disclosure via gym=None bypass",
    "summary": "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.",
    "evidence": "osv:CVE-2026-43948",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-43948",
      "aliases": [
        "CVE-2026-43948",
        "GHSA-mhc8-p3jx-84mm",
        "PYSEC-2026-574"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/wger-project/wger",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "e1d70bcc38cd56ae4a254dca1713c404d069f319"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.6"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "2.6"
                      }
                    ],
                    "source": "DESCRIPTION"
                  }
                ]
              }
            }
          ],
          "versions": [
            "2.5",
            "2.4",
            "2.3",
            "2.0",
            "1.9",
            "1.8",
            "1.7",
            "1.5",
            "1.4",
            "1.3",
            "1.2",
            "1.1",
            "1.0.3",
            "1.0.2",
            "1.0.1",
            "1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-43948.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:30.106261101Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43948.json",
        "https://github.com/wger-project/wger/security/advisories/GHSA-mhc8-p3jx-84mm",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-43948"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-863"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43948.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-43948",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 497157,
  "published_at": "2026-05-12T20:47:23.906+00:00"
}