LiveActive security incident?Get immediate response
CVE Record

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.

MediumCVSS 5.3Not KEV-listedUpdated
Glexia's TakeAutomated analysismoderate

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.
Prepared
Confidence
high
Sources
3

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.

Open ATT&CK lookup
description · low confidence lookup

Credential and access behavior lookup

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.

Open ATT&CK lookup
cve · low confidence lookup

CVE-2026-48525 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Medium
CVSS
5.3 (3.1)
Known Exploited
No
Published

Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

Official CVE source material

CNA and ADP enrichment extracted from CVE v5

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.

1CVSS vectors
3Timeline events
1ADP providers
2Source links

SSVC decision data

CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: pocAutomatable: yesTechnical Impact: partial

CVSS vector scores

1 official score

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.

ScoreVersionSeverityVectorExploitImpactSource
5.3CVSS 3.1MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L3.91.4GitHub_M

Vulnerability scoring details

Base CVSS 3.1 score

5.3Medium
CVSS 3.1 vector shape for CVE-2026-48525Attack VectorAttack ComplexityPrivileges RequiredUser InteractionScopeConfidentiality ImpactIntegrity ImpactAvailability Impact

Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L

Attack Vector
NetworkAdjacentLocalPhysical
Attack Complexity
LowHigh
Privileges Required
NoneLowHigh
User Interaction
NoneRequired
Scope
ChangedUnchanged
Confidentiality Impact
HighLowNone
Integrity Impact
HighLowNone
Availability Impact
HighLowNone

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

ADP provider summaries

CISA-ADPCISA ADP Vulnrichment
other:ssvc

Source materials

Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
jpadillapyjwt>= 2.8.0, < 2.13.0Listed
Weakness

CWE details

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.