CVE-2026-48525: PyJWT: Unauthenticated DoS via unbounded Base64URL decoding of unused payload segment in b64=false detached JWS
PyJWT is a JSON Web Token implementation in Python. From 2.8.0 to 2.12.1, when verifying detached JWS tokens using the unencoded-payload option ("b64": false, RFC 7797), PyJWT performs Base64URL decoding of the compact-serialization payload segment before enforcing the detached-payload rules. For b64=false, PyJWT later discards that decoded payload and replaces it with the caller-provided detached_payload. In practice, this turns the middle segment into an attacker-controlled “work amplifier”: a remote client can supply an arbitrarily large Base64URL payload segment that forces CPU work + memory allocations even if the signature is invalid. This creates an unauthenticated DoS vector against any endpoint that verifies detached JWS using PyJWT. This vulnerability is fixed in 2.13.0.
Security readout for executives and security teams
Plain-English summary
A specific PyJWT verification path can waste server CPU and memory before rejecting a bad token. Only systems that verify detached JWS tokens with the b64=false option are indicated as exposed. The issue can be triggered remotely without authentication and mainly affects availability, not data confidentiality or integrity.
Executive priority
Treat as a targeted availability risk. It is not a broad data breach indicator, but exposed authentication or integration endpoints could be degraded cheaply if they use this uncommon detached JWS mode. Patch affected services during the next urgent maintenance window.
Technical view
PyJWT versions 2.8.0 through 2.12.1 Base64URL-decode the compact JWS payload segment before enforcing detached-payload handling for b64=false. That decoded value is later discarded and replaced by caller-supplied detached_payload, creating unbounded work and allocation on attacker-controlled input. Fixed in PyJWT 2.13.0.
Likely exposure
Exposure appears limited to Python services using PyJWT 2.8.0 to before 2.13.0 and verifying detached JWS tokens with RFC 7797 b64=false. Ordinary JWT/JWS use is not identified as affected in the supplied sources.
Exploitation context
The source bundle describes an unauthenticated network DoS vector with low attack complexity. KEV is false, and the supplied sources do not cite active exploitation or public exploit use. Evidence supports availability impact only, rated CVSS 5.3 medium.
Researcher notes
The important exposure condition is behavioral, not just package version. Confirm whether the application verifies compact detached JWS using b64=false. The root issue is premature Base64URL decoding of an unused payload segment before detached-payload replacement and signature failure handling.
Mitigation direction
Upgrade PyJWT to version 2.13.0 or later.
Rebuild and redeploy services that bundle vulnerable PyJWT versions.
Prioritize endpoints that verify detached JWS tokens with b64=false.
If upgrade is delayed, review the vendor advisory for supported guidance.
Keep existing request-size and rate controls around token-verification paths.
Validation and detection
Inventory Python dependencies for PyJWT versions 2.8.0 through 2.12.1.
Search application code for detached_payload and b64=false verification flows.
Confirm production runtime images use PyJWT 2.13.0 or later.
Review externally reachable routes that perform JWS verification.
Monitor affected services for CPU, memory, and error spikes.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-400: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references authentication or credential exposure, so valid-account and credential-access review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-400 · source CWE mapping
Uncontrolled Resource Consumption
Uncontrolled Resource Consumption represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.