CVE-2015-3196 in OpenSSL
Summary
by MITRE
ssl/s3_clnt.c in OpenSSL 1.0.0 before 1.0.0t, 1.0.1 before 1.0.1p, and 1.0.2 before 1.0.2d, when used for a multi-threaded client, writes the PSK identity hint to an incorrect data structure, which allows remote servers to cause a denial of service (race condition and double free) via a crafted ServerKeyExchange message.
If you want to get best quality of vulnerability data, you may have to visit VulDB.
Analysis
by VulDB Data Team • 06/28/2022
This vulnerability affects OpenSSL implementations across multiple versions including 1.0.0 before 1.0.0t, 1.0.1 before 1.0.1p, and 1.0.2 before 1.0.2d when operating in multi-threaded client mode. The flaw resides in the ssl/s3_clnt.c file where the PSK identity hint is incorrectly written to a data structure that leads to race conditions and potential double free scenarios. The vulnerability specifically manifests when remote servers craft malicious ServerKeyExchange messages that trigger the flawed memory management behavior. This issue represents a critical security concern as it allows remote attackers to exploit the multi-threaded client implementation and cause denial of service conditions through carefully constructed network traffic.
The technical implementation flaw stems from improper handling of PSK (Pre-Shared Key) identity hints within the SSL/TLS handshake process. When OpenSSL processes a ServerKeyExchange message containing crafted PSK parameters, the client's multi-threaded execution context causes the PSK identity hint to be written to an incorrect memory location. This misplacement creates a race condition where multiple threads may attempt to access or free the same memory segment simultaneously. The double free vulnerability occurs when the flawed memory management logic attempts to release the same memory block twice, leading to heap corruption and system instability. This memory management error is classified under CWE-121 as heap-based buffer overflow and CWE-415 as double free conditions.
The operational impact of this vulnerability extends beyond simple denial of service to potentially compromise the stability of OpenSSL-based applications and services. When exploited, the vulnerability can cause applications using OpenSSL multi-threaded clients to crash or become unresponsive, effectively rendering them unavailable to legitimate users. The attack vector requires remote servers to craft specific ServerKeyExchange messages, making it particularly dangerous for applications that connect to untrusted external services. This vulnerability affects a wide range of applications including web servers, email clients, and any software that relies on OpenSSL for secure communications. The multi-threaded nature of the vulnerability means that the impact can be amplified in high-traffic environments where multiple concurrent connections are established.
Mitigation strategies for CVE-2015-3196 primarily involve upgrading to patched versions of OpenSSL where the memory management issues have been resolved. System administrators should prioritize updating OpenSSL installations to versions 1.0.0t, 1.0.1p, or 1.0.2d and higher. Additionally, organizations should consider implementing network-level protections such as firewall rules that limit connections to known trusted servers, reducing the attack surface. The vulnerability aligns with ATT&CK technique T1499.004 which covers network disruption attacks and represents a classic example of how improper memory management can lead to denial of service conditions. Organizations should also implement monitoring solutions to detect unusual connection patterns or application crashes that might indicate exploitation attempts. Regular security audits and vulnerability assessments should be conducted to ensure all OpenSSL components are properly updated and that multi-threaded client implementations are not exposed to unnecessary risks.