fix(deps): update dependency pyjwt to v2.12.0 [security]#589
fix(deps): update dependency pyjwt to v2.12.0 [security]#589gjtorikian merged 2 commits intomainfrom
Conversation
|
Greptile SummaryThis PR addresses the critical JWT security vulnerability CVE-2026-32597 (missing Key observations:
Confidence Score: 3/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Install workos-python] --> B{Python Version?}
B -- "Python 3.8" --> C["pyjwt >=2.9.0,<2.10\n(resolves to 2.9.0)"]
B -- "Python 3.9+" --> D["pyjwt >=2.12.0\n(resolves to 2.12.1)"]
C --> E["⚠️ CVE-2026-32597\nVulnerable — crit header bypass"]
D --> F["✅ CVE-2026-32597 Fixed\n(crit header validation added)"]
D --> G["New transitive dep:\ntyping-extensions 4.15.0\n(Python 3.9–3.10 only)"]
Last reviewed commit: d6fac2d |
PyJWT 2.12 dropped Python 3.8 support, so the Renovate-generated constraint was unsatisfiable for Python 3.8. Keep the old pin for 3.8 and apply the security update (CVE-2026-32597) only for Python >=3.9. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
Pull request was closed
This PR contains the following updates:
>=2.9.0,<2.10→>=2.12,<2.132.10.1→2.12.0GitHub Vulnerability Alerts
CVE-2026-32597
Summary
PyJWT does not validate the
crit(Critical) Header Parameter defined inRFC 7515 §4.1.11. When a JWS token contains a
critarray listingextensions that PyJWT does not understand, the library accepts the token
instead of rejecting it. This violates the MUST requirement in the RFC.
This is the same class of vulnerability as CVE-2025-59420 (Authlib),
which received CVSS 7.5 (HIGH).
RFC Requirement
RFC 7515 §4.1.11:
Proof of Concept
Expected:
jwt.exceptions.InvalidTokenError: Unsupported critical extension: x-custom-policyActual: Token accepted, payload returned.
Comparison with RFC-compliant library
Impact
gateway using jwcrypto rejects, backend using PyJWT accepts)
critcarries enforcement semantics(MFA, token binding, scope restrictions)
cnf(Proof-of-Possession) can besilently ignored
Suggested Fix
In
jwt/api_jwt.py, add validation in_validate_headers()ordecode():CWE
References
Release Notes
jpadilla/pyjwt (pyjwt)
v2.12.0Compare Source
Fixed
PyJWKClientAPI reference and document the two-tier caching system (JWK Set cache and signing key LRU cache).v2.11.0Compare Source
Fixed
Configuration
📅 Schedule: Branch creation - "" in timezone UTC, Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.