Skip to main content
VulnerabilityPublished Updated

CVE-2025-61920: Weaviate cli · Authlib is vulnerable to Denial of Service via Oversized JOSE Segments

Affects weaviate-cliSource GCVE Database

0
Compare

Not known to be exploited · CVSS 7.5 High : upgrade to 3.2.4_1 soon.

Data as of 30 Oct 2026, 07:30 UTC

CVSS 3.1 base score
7.5High
How severe the flaw is on the 0–10 CVSS scale.
Patch
Available – fixed in 3.2.4_1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 13 Aug 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq 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 weaviate-cli to 3.2.4_1.

Affected software

ProductAffectedFixed in
Homebrewweaviate-clipkg:brew/weaviate-cliOther threatsAffected
  • >=3.0.2 <3.2.4_1
Fixed in
  • 3.2.4_1

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

Community reviews

Loading reviews…