CVE-2024-4603
📋 TL;DR
This vulnerability allows denial-of-service attacks against applications that use OpenSSL's EVP_PKEY_param_check() or EVP_PKEY_public_check() functions with untrusted DSA keys or parameters. Attackers can supply excessively large DSA moduli to cause long processing delays. Only applications that directly call these functions with untrusted input are affected.
💻 Affected Systems
- OpenSSL
- Applications using OpenSSL's EVP_PKEY_param_check() or EVP_PKEY_public_check() with DSA keys
⚠️ 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.
- Review the CVE details at NVD
- Check vendor security advisories for your specific version
- Test if the vulnerability is exploitable in your environment
- Consider updating to the latest version as a precaution
⚠️ Risk & Real-World Impact
Worst Case
Complete service unavailability due to CPU exhaustion from processing maliciously large DSA parameters, potentially affecting multiple services simultaneously.
Likely Case
Degraded performance or temporary service disruption for applications that validate DSA keys from external sources.
If Mitigated
Minimal impact if applications validate key sizes before calling vulnerable functions or use patched OpenSSL versions.
🎯 Exploit Status
Exploitation requires applications to accept and validate untrusted DSA keys using the vulnerable functions.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: OpenSSL 3.0.14 and 3.1.6
Vendor Advisory: https://www.openssl.org/news/secadv/20240516.txt
Restart Required: Yes
Instructions:
1. Update OpenSSL to version 3.0.14 or 3.1.6. 2. Recompile applications against updated OpenSSL. 3. Restart affected services.
🔧 Temporary Workarounds
Validate DSA key size before checking
allAdd size validation for DSA modulus (p parameter) before calling vulnerable functions
// Example C code: check DSA modulus size
if (BN_num_bits(dsa->p) > 10000) {
// Reject or handle as invalid
}
Limit key processing time
linuxImplement timeout mechanisms for cryptographic operations
// Use alarm() or setitimer() to interrupt long operations
signal(SIGALRM, timeout_handler);
alarm(5); // 5 second timeout
🧯 If You Can't Patch
- Avoid using EVP_PKEY_param_check() and EVP_PKEY_public_check() with untrusted DSA keys
- Implement input validation to reject DSA keys with modulus larger than 10,000 bits
🔍 How to Verify
Check if Vulnerable:
Check if application code calls EVP_PKEY_param_check() or EVP_PKEY_public_check() with DSA keys from untrusted sources
Check Version:
openssl version
Verify Fix Applied:
Verify OpenSSL version is 3.0.14+ or 3.1.6+ and applications have been recompiled
📡 Detection & Monitoring
Log Indicators:
- Unusually long processing times for DSA key validation
- CPU spikes during cryptographic operations
Network Indicators:
- Repeated DSA key submission attempts to vulnerable endpoints
SIEM Query:
Process monitoring for openssl pkey/pkeyparam commands with -check flag
🔗 References
- https://github.com/openssl/openssl/commit/3559e868e58005d15c6013a0c1fd832e51c73397
- https://github.com/openssl/openssl/commit/53ea06486d296b890d565fb971b2764fcd826e7e
- https://github.com/openssl/openssl/commit/9c39b3858091c152f52513c066ff2c5a47969f0d
- https://github.com/openssl/openssl/commit/da343d0605c826ef197aceedc67e8e04f065f740
- https://www.openssl.org/news/secadv/20240516.txt
- http://www.openwall.com/lists/oss-security/2024/05/16/2
- https://github.com/openssl/openssl/commit/3559e868e58005d15c6013a0c1fd832e51c73397
- https://github.com/openssl/openssl/commit/53ea06486d296b890d565fb971b2764fcd826e7e
- https://github.com/openssl/openssl/commit/9c39b3858091c152f52513c066ff2c5a47969f0d
- https://github.com/openssl/openssl/commit/da343d0605c826ef197aceedc67e8e04f065f740
- https://security.netapp.com/advisory/ntap-20240621-0001/
- https://www.openssl.org/news/secadv/20240516.txt