CVE-2025-63811

7.5 HIGH

📋 TL;DR

A vulnerability in dvsekhvalnov jose2go library versions 1.5.0 through 1.7.0 allows attackers to cause Denial-of-Service (DoS) by sending specially crafted JSON Web Encryption (JWE) tokens with extremely high compression ratios. This affects any application using these vulnerable jose2go versions for JWE token processing. The attack exploits resource exhaustion through decompression bomb techniques.

💻 Affected Systems

Products:
  • dvsekhvalnov/jose2go
Versions: 1.5.0 through 1.7.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Any application using jose2go for JWE token processing with compression enabled is vulnerable. The vulnerability is in the library itself, not dependent on specific configurations.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete service unavailability due to resource exhaustion (CPU/memory) leading to extended downtime and potential cascading failures in dependent systems.

🟠

Likely Case

Temporary service degradation or crashes affecting availability until systems restart or load balancers redirect traffic.

🟢

If Mitigated

Minimal impact with proper rate limiting, input validation, and resource monitoring in place to detect and block malicious requests.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The GitHub issue contains proof-of-concept details. Exploitation requires sending a malicious JWE token to an endpoint that processes such tokens, which is typically unauthenticated in many implementations.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.8.0

Vendor Advisory: https://github.com/dvsekhvalnov/jose2go/issues/33

Restart Required: Yes

Instructions:

1. Update jose2go dependency to version 1.8.0 or later. 2. Update go.mod to require 'github.com/dvsekhvalnov/jose2go v1.8.0'. 3. Run 'go mod tidy'. 4. Rebuild and redeploy affected applications. 5. Restart services using the updated library.

🔧 Temporary Workarounds

Disable JWE Compression

all

Configure jose2go to disable compression for JWE tokens if your use case doesn't require it.

Set compression algorithm to 'NONE' in JWE encryption configuration

Input Size Limiting

all

Implement request size limits before JWE token processing to block oversized payloads.

Configure web server/API gateway to reject requests > 1MB

🧯 If You Can't Patch

  • Implement strict rate limiting and request throttling on JWE processing endpoints
  • Deploy WAF rules to detect and block JWE tokens with suspicious compression patterns

🔍 How to Verify

Check if Vulnerable:

Check go.mod or vendor dependencies for jose2go version 1.5.0-1.7.0. Run: grep -r 'jose2go' go.mod vendor/

Check Version:

grep jose2go go.mod | grep -o 'v[0-9]\+\.[0-9]\+\.[0-9]\+'

Verify Fix Applied:

Verify jose2go version is 1.8.0+ in go.mod and test JWE processing with known safe tokens.

📡 Detection & Monitoring

Log Indicators:

  • Spikes in memory/CPU usage during JWE processing
  • Application crashes or restarts after receiving JWE tokens
  • Unusually large request sizes to JWE endpoints

Network Indicators:

  • Large base64-encoded payloads to authentication/API endpoints
  • Multiple rapid requests with JWE tokens to same endpoint

SIEM Query:

source="application_logs" AND ("out of memory" OR "panic" OR "crash") AND "jose2go"

🔗 References

📤 Share & Export