CVE-2025-61920: Safety · Authlib is vulnerable to Denial of Service via Oversized JOSE Segments
Affects safetySource GCVE Database
Not known to be exploited · CVSS 7.5 High : upgrade to 3.6.2_1 soon.
Data as of 30 Oct 2026, 07:30 UTC
- Patch
- Available – fixed in 3.6.2_1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HExploitation evidence
Disclosed: evidence found.
CVE published 13 Aug 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 29 Oct 2026.
What to do
Upgrade safety to 3.6.2_1.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
Homebrewsafetypkg:brew/safetyOther threats | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
Description
**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](https://github.com/user-attachments/files/22450820/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 <img width="1295" height="306" alt="image" src="https://github.com/user-attachments/assets/6dd8410f-bc36-4717-8cee-649bac9bf291" /> 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)
References
- github.com/authlib/authlib/security/advisories/GHSA-pq5p-34cr-23v9 (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2025-61920 (opens in a new tab)
- github.com/authlib/authlib/commit/867e3f87b072347a1ae9cf6983cc8bbf88447e5e (opens in a new tab)
- github.com/authlib/authlib (opens in a new tab)
- lists.debian.org/debian-lts-announce/2025/10/msg00032.html (opens in a new tab)