Integer overflow in OpenSSL EVP_EncryptUpdate
CVE-2016-2106 is an integer-overflow vulnerability in OpenSSL before 1.0.1t and in the 1.0.2 branch before 1.0.2h. When EVP_EncryptUpdate() receives very large input after a previous call has buffered a partial block, a length check can overflow, causing a heap-based buffer overflow and memory corruption. Applications invoking the affected API directly may be vulnerable; EVP_DecryptUpdate() can also reach the affected function on certain code paths, and EVP_CipherUpdate() is an alias. OpenSSL's internal call sites were assessed as not susceptible because they used small input lengths or made the relevant call immediately after initialization. Exploitation can cause application crashes and potentially arbitrary code execution.
What it means and what to do now: patch path, interim mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
Heap corruption can crash an application linked against vulnerable OpenSSL, causing denial of service. Depending on the application and exploitation conditions, arbitrary code execution may be possible with the privileges of the user running the application. Merely using OpenSSL for TLS does not establish exposure: exploitation requires an application call sequence that reaches the vulnerable length check with sufficiently large attacker-controlled input.
If you can’t patch tonight, do this now.
No general vendor-provided workaround is identified. As an application-level compensating control, prevent very large untrusted inputs from reaching affected update calls, particularly after a partial block has been buffered. Restrict access to vulnerable application interfaces where feasible. These controls do not replace installation of the security update.
Patch, then assume compromise.
Upgrade OpenSSL 1.0.1 installations to 1.0.1t or later and OpenSSL 1.0.2 installations to 1.0.2h or later, or install the applicable vendor-backported security update. Fixed Red Hat packages include 1.0.1e-48.el6_8.1 for RHEL 6, 1.0.1e-51.el7_2.5 for RHEL 7, and 1.0.1e-42.el6_7.5 for RHEL 6.7 EUS. Restart all services linked to OpenSSL, or reboot the system, after installation. Assess vendor packages using their security-update status rather than upstream version numbers alone, because fixes may be backported.
No public exploits tracked yet. Mallory keeps watching.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
23 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.