CVE-2024-5535

9.1 CRITICAL

📋 TL;DR

This OpenSSL vulnerability allows up to 255 bytes of arbitrary private memory data to be sent to a peer when SSL_select_next_proto is called with an empty client protocols buffer. Only applications that directly call this function with a zero-length protocol list are affected, which typically requires a configuration or programming error. The issue primarily impacts applications using deprecated NPN rather than ALPN.

💻 Affected Systems

Products:
  • OpenSSL
Versions: All versions prior to fix (specific fixed versions not yet released)
Operating Systems: All platforms running affected OpenSSL versions
Default Config Vulnerable: ✅ No
Notes: Only affects applications that directly call SSL_select_next_proto with client_len=0. FIPS modules in 3.3, 3.2, 3.1 and 3.0 are NOT affected.

⚠️ 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

Up to 255 bytes of sensitive memory contents (potentially containing private keys, session data, or other secrets) are transmitted to a peer, leading to data breach and loss of confidentiality.

🟠

Likely Case

Application crash or unexpected behavior due to buffer overread; actual data leakage requires specific configuration errors and use of deprecated NPN.

🟢

If Mitigated

No impact if applications use ALPN correctly or avoid calling SSL_select_next_proto with empty protocol lists.

🌐 Internet-Facing: LOW - Requires specific application programming errors, deprecated NPN usage, and is not typically under attacker control.
🏢 Internal Only: LOW - Same constraints apply; exploitation unlikely without application misconfiguration.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: NO
Unauthenticated Exploit: ✅ No
Complexity: HIGH

Exploitation requires application programming/configuration errors and use of deprecated NPN. Not typically under attacker control.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Not yet released (will be included in next OpenSSL releases)

Vendor Advisory: https://github.com/openssl/openssl/commit/4ada436a1946cbb24db5ab4ca082b69c1bc10f37

Restart Required: Yes

Instructions:

1. Monitor OpenSSL releases for fix inclusion. 2. Update to fixed version when available. 3. Restart affected services after patching.

🔧 Temporary Workarounds

Disable NPN usage

all

Configure applications to use ALPN instead of deprecated NPN protocol negotiation

Application-specific configuration - consult your application documentation

Validate protocol lists

all

Ensure applications never call SSL_select_next_proto with empty protocol lists

Code review and validation of SSL_select_next_proto calls

🧯 If You Can't Patch

  • Audit applications for SSL_select_next_proto usage and ensure proper protocol list validation
  • Migrate from NPN to ALPN for all TLS protocol negotiation

🔍 How to Verify

Check if Vulnerable:

Review application source code for calls to SSL_select_next_proto and check if client_len parameter could be zero

Check Version:

openssl version

Verify Fix Applied:

Check OpenSSL version after update and verify SSL_select_next_proto implementation in source code

📡 Detection & Monitoring

Log Indicators:

  • Application crashes related to SSL/TLS handshakes
  • Unexpected protocol negotiation failures

Network Indicators:

  • Unusual data patterns in TLS handshake packets
  • NPN protocol usage instead of ALPN

SIEM Query:

Search for application errors containing 'SSL_select_next_proto' or 'buffer overread' in error logs

🔗 References

📤 Share & Export