CVE-2024-40636

5.3 MEDIUM

📋 TL;DR

This vulnerability in Steeltoe's Eureka discovery client logs authentication credentials when multiple Eureka server URLs with basic authentication are configured and registry fetching fails. Only the first URL is properly masked, potentially exposing credentials in log files. Organizations using Steeltoe.Discovery.Eureka with multiple Eureka servers and basic authentication are affected.

💻 Affected Systems

Products:
  • Steeltoe.Discovery.Eureka
Versions: Versions before 3.2.8
Operating Systems: All platforms running .NET applications
Default Config Vulnerable: ✅ No
Notes: Only affects configurations using multiple Eureka server URLs with basic authentication where registry fetching fails.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers gain access to Eureka server credentials, potentially compromising service discovery infrastructure and enabling further attacks on microservices.

🟠

Likely Case

Credentials exposed in log files accessible to unauthorized personnel or attackers with log access, leading to potential credential misuse.

🟢

If Mitigated

Limited exposure if logs are properly secured with restricted access and monitoring.

🌐 Internet-Facing: MEDIUM - If logs containing credentials are exposed externally or accessible via web interfaces.
🏢 Internal Only: MEDIUM - Internal attackers or compromised accounts could access logs containing credentials.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW - Requires access to log files containing the error messages.

Exploitation requires access to application logs where the error is recorded.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.2.8

Vendor Advisory: https://github.com/SteeltoeOSS/security-advisories/security/advisories/GHSA-vmcp-66r5-3pcp

Restart Required: Yes

Instructions:

1. Update Steeltoe.Discovery.Eureka NuGet package to version 3.2.8 or later. 2. Rebuild and redeploy affected applications. 3. Restart application services.

🔧 Temporary Workarounds

Disable detailed error logging

all

Configure logging to exclude detailed error messages or mask sensitive information at the logging framework level.

Configure log filtering in appsettings.json or programmatically to exclude DiscoveryClient error logs

Use single Eureka server URL

all

Configure only one Eureka server URL if possible to avoid the multiple URL parsing issue.

Set Eureka:Client:ServiceUrl to single URL in configuration

🧯 If You Can't Patch

  • Implement strict access controls on log files and directories containing application logs.
  • Monitor log files for credential exposure patterns and implement alerting for suspicious access.

🔍 How to Verify

Check if Vulnerable:

Check if using Steeltoe.Discovery.Eureka version <3.2.8 with multiple Eureka server URLs configured with basic authentication.

Check Version:

dotnet list package Steeltoe.Discovery.Eureka

Verify Fix Applied:

Verify Steeltoe.Discovery.Eureka package version is 3.2.8 or higher in project dependencies.

📡 Detection & Monitoring

Log Indicators:

  • Log entries containing 'FetchRegistry Failed for Eureka service urls:' with unmasked URLs containing credentials

Network Indicators:

  • Unusual authentication attempts to Eureka servers using potentially exposed credentials

SIEM Query:

source="application_logs" AND "FetchRegistry Failed for Eureka service urls:" AND ("http://" OR "https://") AND ("@" OR "password")

🔗 References

📤 Share & Export