Skip to content
Heist/ feed
UnratedFix available

UBUNTU-CVE-2026-48523

Type: advisorySource: OSV1 source record

PyJWT is a JSON Web Token implementation in Python. From 2.9.0 to 2.12.1, there is a verifier-side algorithm allow-list bypass when jwt.decode() or jwt.decode_complete() are called with a PyJWK key. The token header alg is checked against the caller-supplied algorithms allow-list, but signature verification is performed with the algorithm bound to the PyJWK object instead of the header algorithm. An attacker who controls a registered JWK/JWKS private key can sign with a disallowed algorithm, advertise an allowed algorithm in the JWT header, and still be accepted. The issue affects the documented PyJWKClient.get_signing_key_from_jwt(...) flow. This vulnerability is fixed in 2.13.0.

Announced Source revision 1
Original source ↗

UBUNTU-CVE-2026-48523

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:UBUNTU-CVE-2026-48523

pyjwt

Source reference: /affected/0/package/name

Affected versions
2.10.1-2

Source reference: /affected/0/versions

2.10.1-2ubuntu0.1

Source reference: /affected/0/versions

Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

pyjwt

Source reference: /affected/1/package/name

Affected versions
2.10.1-2

Source reference: /affected/1/versions

2.10.1-3

Source reference: /affected/1/versions

2.10.1-3build1

Source reference: /affected/1/versions

2.10.1-4

Source reference: /affected/1/versions

2.10.1-4ubuntu1

Source reference: /affected/1/versions

Fixed versions
2.10.1-4ubuntu1.1

Source reference: /affected/1/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "ECOSYSTEM",
        "events": [
          {
            "introduced": "0"
          }
        ]
      }
    ],
    "package": {
      "name": "pyjwt",
      "purl": "pkg:deb/ubuntu/pyjwt?arch=source&distro=questing",
      "ecosystem": "Ubuntu:25.10"
    },
    "versions": [
      "2.10.1-2",
      "2.10.1-2ubuntu0.1"
    ],
    "database_specific": {
      "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-48523.json"
    },
    "ecosystem_specific": {
      "binaries": [
        {
          "binary_name": "python3-jwt",
          "binary_version": "2.10.1-2ubuntu0.1"
        }
      ]
    }
  },
  {
    "ranges": [
      {
        "type": "ECOSYSTEM",
        "events": [
          {
            "introduced": "0"
          },
          {
            "fixed": "2.10.1-4ubuntu1.1"
          }
        ]
      }
    ],
    "package": {
      "name": "pyjwt",
      "purl": "pkg:deb/ubuntu/pyjwt?arch=source&distro=resolute",
      "ecosystem": "Ubuntu:26.04:LTS"
    },
    "versions": [
      "2.10.1-2",
      "2.10.1-3",
      "2.10.1-3build1",
      "2.10.1-4",
      "2.10.1-4ubuntu1"
    ],
    "database_specific": {
      "source": "https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-48523.json"
    },
    "ecosystem_specific": {
      "binaries": [
        {
          "binary_name": "python3-jwt",
          "binary_version": "2.10.1-4ubuntu1.1"
        }
      ],
      "availability": "No subscription required"
    }
  }
]

Publisher severity

No explicit severity was provided.

Event
#22398 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement