OpenSSL 3.0 CVE-2022-3786 Buffer Overflow Vulnerability
BACKGROUND: A buffer overflow can occur during X.509 certificate verification, specifically during name constraint checking. This happens after the certificate chain signature has been verified, and it requires either a CA to have signed the malicious certificate or for the application to continue verification despite not being able to construct a path to a trusted issuer. An attacker can craft a malicious email address that overflows four (4) bytes controlled by the attacker on the stack. This could result in a crash, causing a denial of service, or potentially allowing remote code execution.
What is a Buffer Overflow Vulnerability?
A buffer overflow vulnerability occurs when a program tries to write more data to a buffer than it can hold, causing data to be written to adjacent memory locations. This can potentially lead to sensitive data being leaked or overwritten and can cause the program to crash or remote code to be executed in certain situations.
Which Versions of OpenSSL are Vulnerable?
OpenSSL versions 3.0.0 to 3.0.6 are vulnerable to this issue. OpenSSL versions 1.1.1 and 1.0.2 are unaffected.
What is the Severity Rating of this Vulnerability?
This vulnerability is rated "High" due to the improbability of exploitation leading to remote code execution. In environments where ASLR has been manually disabled, this vulnerability should be treated as critical.
How Does Exploitation Occur?
In a TLS client, exploitation can be triggered by connecting to a malicious server. In a TLS server, this can be triggered if the server requests client authentication and a malicious client connects.
Impact of CVE-2022-3786 Vulnerability
The immediate impact of this vulnerability is a denial-of-service condition where successful exploitation causes a crash. However, it is possible that in limited instances, this vulnerability may lead to remote code execution. Many platforms have protections against stack overflow, which would reduce the risk of remote code execution. The risk can be further reduced depending on the stack layout for the platform/compiler.
If you are running OpenSSL version 3, update to 3.07 or later.
To mitigate against stack overflows resulting in remote code execution, ensure that address space layout randomization ASLR is enabled in the host operating system running OpenSSL. In dockerized workloads, this would occur on the host operating system. Implementation will vary widely according to the operating system. Modern operating systems enable this protective feature by default.
Identify Vulnerable Versions of OpenSSL
To determine whether you are running a vulnerable version of OpenSSL, you should validate the current version of OpenSSL by executing (OpenSSL) version from the terminal of the host environment running OpenSSL. Most vulnerability scanners, such as Nessus, will automate this version, allowing you to zero in on where you will need to perform OpenSSL upgrades.
If running a containerized application that is dependent on OpenSSL, review your Docker file and visit Docker's Image Vulnerability Database, navigate to the "Vulnerability search" tab, and search for the placeholder security advisory dubbed "DSA-2022-0001."
Docker strongly suggests leveraging the docker scan CLI command and Snyk's Docker Hub Vulnerability Scanning tool.
- The issue was reported to the OpenSSL Project on October 17, 2022.
- The vulnerability affects OpenSSL versions 3.0.0 (released in September 2021) to 3.0.6 (included).
- The vulnerability was fixed in version 3.0.7, released November 1, 2022.
- The vulnerable function patched in 3.0.7 requires a victim client or server to verify a maliciously crafted email address within an X.509 certificate.
- The vulnerability is not as open to widespread exploitation as HeartBleed due to the prerequisite that a client or server must be configured to verify a malicious email address within a certificate.
- OpenSSL 3.x was released in September 2021, while 1.1.1 is an LTS version supported until September 2023. Use of OpenSSL 3.x is consequently not as widespread, which is likely to limit exploitation of this vulnerability even further.
- Datadog has released a proof of concept (PoC) to crash a Windows deployment of vulnerable versions.
- Linux deployments are potentially vulnerable, but due to technical details discovered during our research, they may not be exploitable. There still is a possibility that an exploit crafted for Linux deployments emerges.
- OpenSSL 3.0.x users should upgrade to 3.0.7.
- Some application runtimes, such as Node.js, embed their own version of OpenSSL and need to be upgraded as well.
- OpenSSL 1.1.1 and 1.0.2 are NOT vulnerable.
CyberPoint's Security Research Team (SRT) is a public-facing research unit that works on relevant challenges within information security (infosec), we specialize in vulnerability research, malware analysis, threat intelligence, and technical evaluation. Our team's been doing this kind of work for years. We're passionate about it on both a professional and a personal level, and we're excited to do research that helps our customers and the larger community. The mission of CyberPoint's Security Research Team (SRT) is to improve the security knowledge and capabilities of our community, our customers, our products, and our programs.
For our customers, we support incident response with repository querying and analysis. We also respond to customer inquiries about a wide array of infosec topics.
If your organization needs immediate assistance with a suspected or confirmed cyber incident, contact us.