Skip to content

chore(deps): update dependency authlib to v1.6.5 [security]#1959

Merged
mergify[bot] merged 1 commit intomasterfrom
renovate/pypi-authlib-vulnerability
Oct 10, 2025
Merged

chore(deps): update dependency authlib to v1.6.5 [security]#1959
mergify[bot] merged 1 commit intomasterfrom
renovate/pypi-authlib-vulnerability

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate bot commented Oct 10, 2025

This PR contains the following updates:

Package Change Age Confidence
authlib 1.6.4 -> 1.6.5 age confidence

GitHub Vulnerability Alerts

CVE-2025-61920

Summary
Authlib’s JOSE implementation accepts unbounded JWS/JWT header and signature segments. A remote attacker can craft a token whose base64url‑encoded header or signature spans hundreds of megabytes. During verification, Authlib decodes and parses the full input before it is rejected, driving CPU and memory consumption to hostile levels and enabling denial of service.

Impact

  • Attack vector: unauthenticated network attacker submits a malicious JWS/JWT.

  • Effect: base64 decode + JSON/crypto processing of huge buffers pegs CPU and allocates large amounts of RAM; a single request can exhaust service capacity.

  • Observed behaviour: on a test host, the legacy code verified a 500 MB header, consuming ~4 GB RSS and ~9 s CPU before failing.

  • Severity: High. CVSS v3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H (7.5).

Affected Versions
Authlib ≤ 1.6.3 (and earlier) when verifying JWS/JWT tokens. Later snapshots with 256 KB header/signature limits are not affected.

Proof of concept

Local demo (do not run against third-party systems):
Download jws_segment_dos_demo.py the PoC in direcotry authlib/
Run following Command

python3 jws_segment_dos_demo.py --variant both --sizes "500MB" --fork-per-case

Environment: Python 3.13.6, Authlib 1.6.4, Linux x86_64, CPUs=8
Sample output: Refined
image

The compilation script prints separate “[ATTACKER]” (token construction) and “[SERVER]” (Authlib verification) RSS deltas so defenders can distinguish client-side preparation from server-side amplification. Regression tests authlib/tests/dos/test_jose_dos.py further capture the issue; the saved original_util.py/original_jws.py reproductions still accept the malicious payload.

Remediation

  • Apply the upstream patch that introduces decoded size limits:

  • MAX_HEADER_SEGMENT_BYTES = 256 KB

  • MAX_SIGNATURE_SEGMENT_BYTES = 256 KB

  • Enforce Limits in authlib/jose/util.extract_segment and _extract_signature.

  • Deploy the patched release immediately.

  • For additional defence in depth, reject JWS/JWT inputs above a few kilobytes at the proxy or WAF layer, and rate-limit verification endpoints.

Workarounds (temporary)

  • Enforce input size limits before handing tokens to Authlib.

  • Use application-level throttling to reduce amplification risk.

Resources

  • Demo script: jws_segment_dos_demo.py

  • Tests: authlib/tests/dos/test_jose_dos.py

  • OWASP JWT Cheat Sheet (DoS guidance)


Release Notes

authlib/authlib (authlib)

v1.6.5

Compare Source


Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot requested a review from a team as a code owner October 10, 2025 21:01
@softwarefactory-project-zuul
Copy link
Copy Markdown

Build succeeded.
https://fedora.softwarefactory-project.io/zuul/buildset/5306863cc7f84e61a8cb79ef5e9b9b54

✔️ fi-tox-mypy SUCCESS in 5m 36s
✔️ fi-tox-lint SUCCESS in 4m 45s
✔️ fi-tox-format SUCCESS in 5m 16s
✔️ fi-tox-python310 SUCCESS in 8m 24s
✔️ fi-tox-python311 SUCCESS in 7m 50s
✔️ fi-tox-python312 SUCCESS in 8m 54s
✔️ fi-tox-docs SUCCESS in 6m 05s
✔️ fi-tox-bandit SUCCESS in 4m 52s
✔️ fi-tox-diff-cover SUCCESS in 9m 37s

@mergify mergify bot merged commit a258842 into master Oct 10, 2025
6 checks passed
@renovate renovate bot deleted the renovate/pypi-authlib-vulnerability branch October 10, 2025 21:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants