CVE-2025-53960

5.9 MEDIUM

📋 TL;DR

Apache StreamPark versions 2.0.0 through 2.1.6 use user passwords as JWT signing keys, allowing attackers who capture tokens to brute-force passwords offline or forge tokens if passwords are known. This vulnerability enables complete account takeover for affected users. All deployments using vulnerable versions are at risk.

💻 Affected Systems

Products:
  • Apache StreamPark
Versions: 2.0.0 through 2.1.6
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: All installations using JWT authentication with default or custom configurations are vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete account takeover for all users, allowing attackers to impersonate any user, access sensitive data, and perform unauthorized actions within the application.

🟠

Likely Case

Targeted account compromise where attackers capture JWTs from network traffic or logs, then brute-force weak passwords to gain unauthorized access.

🟢

If Mitigated

Limited impact if strong password policies are enforced and JWTs are transmitted securely, though the fundamental design flaw remains exploitable.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires capturing a JWT token first, which typically requires some level of access or network interception.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.1.7

Vendor Advisory: https://lists.apache.org/thread/xlpvfzf5l5m5mfyjwrz5h4dssm3c32vy

Restart Required: Yes

Instructions:

1. Download Apache StreamPark 2.1.7 from official sources. 2. Stop the current StreamPark service. 3. Replace with patched version. 4. Restart the service. 5. Verify JWT signing now uses a secure, independent key.

🔧 Temporary Workarounds

Disable JWT Authentication

all

Temporarily disable JWT-based authentication and use alternative authentication methods.

Modify application configuration to remove or comment out JWT authentication settings

Implement External JWT Validation

all

Use an external API gateway or reverse proxy to validate JWTs with proper key management.

Configure nginx/apache/traefik to validate JWTs before forwarding to StreamPark

🧯 If You Can't Patch

  • Enforce strong password policies (minimum 16 characters, complexity requirements) to make brute-force attacks impractical.
  • Implement network segmentation and monitoring to detect JWT capture attempts and unauthorized access.

🔍 How to Verify

Check if Vulnerable:

Check if JWT tokens are signed using user passwords by examining token signatures or reviewing application source code for HMAC key generation logic.

Check Version:

Check the StreamPark version in the web interface or configuration files, or run: java -jar streampark-web.jar --version

Verify Fix Applied:

After upgrading, verify that JWT signatures are generated using a secure, independent key rather than user passwords.

📡 Detection & Monitoring

Log Indicators:

  • Multiple failed login attempts followed by successful logins from unusual locations
  • JWT tokens being transmitted in URLs or logs

Network Indicators:

  • Unusual patterns of JWT token requests or captures in network traffic

SIEM Query:

source="streampark" AND (event_type="authentication" AND result="success") | stats count by user, src_ip | where count > threshold

🔗 References

📤 Share & Export