PatchSiren cyber security CVE debrief
CVE-2026-48522 jpadilla CVE debrief
PyJWT's PyJWKClient prior to version 2.13.0 accepts arbitrary URI schemes through its uri parameter, which is passed directly to urllib.request.urlopen(). This allows attacker-influenced URLs to trigger unintended protocol handlers including file://, ftp://, and data:// schemes. The vulnerability creates Server-Side Request Forgery (SSRF) conditions where an attacker can read arbitrary local files or cause unexpected network requests when the application passes untrusted input (such as JWT jku headers, configuration values, or OAuth parameters) to PyJWKClient. Successful exploitation for token forgery requires additional application-layer weaknesses, including attacker write access to filesystem paths and flawed jku URL derivation logic that the PyJWT fix does not address. The CVSS 3.1 score of 4.2 (Medium) reflects the attack complexity and user interaction requirements.
- Vendor
- jpadilla
- Product
- pyjwt
- CVSS
- MEDIUM 4.2
- CISA KEV
- Not listed in stored evidence
- Original CVE published
- 2026-05-28
- Original CVE updated
- 2026-06-02
- Advisory published
- 2026-05-28
- Advisory updated
- 2026-06-02
Who should care
Development teams using PyJWT for JWT verification with PyJWKClient, particularly those accepting dynamic or attacker-influenced jku URLs; security engineers reviewing authentication implementations; DevOps teams managing Python dependency updates
Technical summary
The PyJWKClient class in PyJWT versions prior to 2.13.0 does not restrict URI schemes when fetching JSON Web Key Sets. The uri parameter passes directly to urllib.request.urlopen(), enabling file://, ftp://, and data:// protocol handlers. Attackers controlling jku header values or configuration-derived URIs can induce local file reads or unintended network requests. Token forgery exploitation requires supplementary application flaws including filesystem write access and insecure jku derivation. Fixed in PyJWT 2.13.0.
Defensive priority
medium
Recommended defensive actions
- Upgrade PyJWT to version 2.13.0 or later to obtain scheme restriction controls
- Validate and sanitize all URI inputs passed to PyJWKClient before instantiation, rejecting non-HTTP(S) schemes at the application layer
- Implement allowlist-based URL validation for any attacker-influenced jku header values or configuration-derived URIs
- Review application logic that derives jku URLs from untrusted sources; ensure filesystem write permissions do not overlap with paths used in jku resolution
- Monitor for anomalous outbound requests from applications using PyJWKClient, particularly file:// and ftp:// scheme attempts
- Conduct code review of JWT verification implementations to identify custom PyJWKClient instantiations with user-controlled URIs
Evidence notes
CVE published 2026-05-28T16:16:29.150Z; modified 2026-05-28T18:03:16.223Z. Advisory references GitHub Security Advisory GHSA-993g-76c3-p5m4. CWE-441 (Unintended Proxy or Intermediary) and CWE-918 (Server-Side Request Forgery) identified. Fix version 2.13.0 confirmed.
Sources and references
Verified primary and authoritative sources
-
CVE-2026-48522 CVE Program record
Publisher, destination, and source semantics verified
URL: https://www.cve.org/CVERecord?id=CVE-2026-48522
CVE Program - Official CVE Program record with source-provided CVE metadata.
-
CVE-2026-48522 NVD vulnerability detail
Publisher, destination, and source semantics verified
URL: https://nvd.nist.gov/vuln/detail/CVE-2026-48522
NIST National Vulnerability Database - Official NIST NVD detail page and source-specific vulnerability assessment.
Supplemental references
-
Source reference
Unverified legacy reference
URL: https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4
Methodology and review provenance
AI-assisted synthesis based on stored public vulnerability evidence. System validation, approval state, and publication status do not by themselves establish human review of this revision. PatchSiren helps prioritize defensive review and does not prove exposure or remediation on any system.