CVE-2025-65730

8.8 HIGH

📋 TL;DR

This vulnerability allows attackers to bypass authentication in GoAway by forging JWT tokens using a hardcoded secret key. Any system running GoAway versions up to 0.62.18 is affected, potentially enabling unauthorized access to protected resources. The hardcoded secret is embedded in the source code, making it easily discoverable.

💻 Affected Systems

Products:
  • GoAway
Versions: All versions up to and including 0.62.18
Operating Systems: All platforms running GoAway
Default Config Vulnerable: ⚠️ Yes
Notes: All installations using the default JWT authentication mechanism are vulnerable regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise where attackers gain administrative privileges, access sensitive data, and execute arbitrary commands on affected servers.

🟠

Likely Case

Unauthorized access to protected API endpoints and data, potentially leading to data exfiltration or privilege escalation.

🟢

If Mitigated

Limited impact with proper network segmentation and additional authentication layers, though authentication bypass remains possible.

🌐 Internet-Facing: HIGH - Internet-facing instances are directly accessible to attackers who can exploit this without authentication.
🏢 Internal Only: MEDIUM - Internal instances are still vulnerable to insider threats or compromised internal systems.

🎯 Exploit Status

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

The hardcoded secret is publicly visible in GitHub repositories, making exploitation trivial. Attackers only need to generate valid JWT tokens using the known secret.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.62.19

Vendor Advisory: https://github.com/pommee/goaway/releases/tag/v0.62.19

Restart Required: Yes

Instructions:

1. Backup current configuration and data. 2. Stop the GoAway service. 3. Update to version 0.62.19 or later using your package manager or by downloading from GitHub. 4. Restart the GoAway service. 5. Verify the update was successful.

🔧 Temporary Workarounds

Implement External Authentication Proxy

all

Place GoAway behind a reverse proxy that handles authentication independently using a different secret or mechanism.

# Configure nginx or similar proxy with separate authentication

Network Access Restrictions

linux

Restrict access to GoAway instances using firewall rules to only allow trusted IP addresses.

iptables -A INPUT -p tcp --dport <goaway_port> -s <trusted_ip> -j ACCEPT
iptables -A INPUT -p tcp --dport <goaway_port> -j DROP

🧯 If You Can't Patch

  • Isolate affected systems from untrusted networks using strict firewall rules
  • Implement additional authentication layers such as IP whitelisting or client certificate authentication

🔍 How to Verify

Check if Vulnerable:

Check the GoAway version. If it's 0.62.18 or earlier, it's vulnerable. Also check if the hardcoded secret 'goaway-secret-key' appears in the JWT signing code.

Check Version:

goaway --version or check the application's version endpoint if available

Verify Fix Applied:

Verify the GoAway version is 0.62.19 or later. Confirm that JWT tokens signed with the old hardcoded secret no longer grant access.

📡 Detection & Monitoring

Log Indicators:

  • Failed authentication attempts followed by successful access with unusual tokens
  • JWT tokens with suspicious signatures or timestamps

Network Indicators:

  • Unusual API access patterns from unexpected IP addresses
  • Authentication bypass attempts to protected endpoints

SIEM Query:

source="goaway.log" AND (event="authentication_success" AND NOT user IN ["expected_users"]) OR (event="api_access" AND resource="protected_endpoint" AND NOT source_ip IN ["trusted_ips"])

🔗 References

📤 Share & Export