CVE-2016-2105: Integer Overflow

Published Apr 28, 2016
·
Updated

An integer overflow flaw, leading to a buffer overflow, was found in the way the EVPEncodeUpdate() function of OpenSSL parsed very large amounts of input data. A remote attacker could use this flaw to crash an application using OpenSSL or, possibly, execute arbitrary code with the permissions of the user running that application.

Other sources

Integer overflow in the EVPEncodeUpdate function in crypto/evp/encode.c in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h allows remote attackers to cause a denial of service (heap memory corruption) via a large amount of binary data.

Quoting form the draft of OpenSSL upstream advisory:

EVPEncodeUpdate overflow (CVE-2016-2105) =========================================

Severity: Low

An overflow can occur in the EVPEncodeUpdate() function which is used for Base64 encoding of binary data. If an attacker is able to supply very large amounts of input data then a length check can overflow resulting in a heap corruption.

Internally to OpenSSL the EVPEncodeUpdate() function is primarly used by the PEMwritebio family of functions. These are mainly used within the OpenSSL command line applications. These internal uses are not considered vulnerable because all calls are bounded with length checks so no overflow is possible. User applications that call these APIs directly with large amounts of untrusted data may be vulnerable. (Note: Initial analysis suggested that the PEMwritebio were vulnerable, and this is reflected in the patch commit message. This is no longer believed to be the case).

OpenSSL 1.0.2 users should upgrade to 1.0.2h OpenSSL 1.0.1 users should upgrade to 1.0.1t

This issue was reported to OpenSSL on 3rd March 2016 by Guido Vranken. The fix was developed by Matt Caswell of the OpenSSL development team.

Affected Software

74 affected componentsFixes available
redhat/openssl<1.0.1
1.0.1
redhat/openssl<1.0.2
1.0.2
redhat/openssl<0:1.0.1e-48.el6_8.1
0:1.0.1e-48.el6_8.1
redhat/openssl<0:1.0.1e-42.el6_7.5
0:1.0.1e-42.el6_7.5
redhat/openssl<1:1.0.1e-51.el7_2.5
1:1.0.1e-51.el7_2.5
redhat/httpd<0:2.2.26-54.ep6.el6
0:2.2.26-54.ep6.el6
redhat/jbcs-httpd24<0:1-3.jbcs.el6
0:1-3.jbcs.el6
redhat/jbcs-httpd24-openssl<1:1.0.2h-4.jbcs.el6
1:1.0.2h-4.jbcs.el6
redhat/tomcat-native<0:1.1.34-5.redhat_1.ep6.el6
0:1.1.34-5.redhat_1.ep6.el6
redhat/httpd22<0:2.2.26-56.ep6.el7
0:2.2.26-56.ep6.el7
redhat/jbcs-httpd24<0:1-3.jbcs.el7
0:1-3.jbcs.el7
redhat/jbcs-httpd24-openssl<1:1.0.2h-4.jbcs.el7
1:1.0.2h-4.jbcs.el7
redhat/tomcat-native<0:1.1.34-5.redhat_1.ep6.el7
0:1.1.34-5.redhat_1.ep6.el7
redhat Enterprise Linux Desktop=6.0
redhat Enterprise Linux Hpc Node=6
redhat Enterprise Linux Server=6.0
redhat Enterprise Linux Workstation=6.0
openSUSE Leap=42.1
openSUSE openSUSE=13.2
Oracle MySQL>=5.6.0<=5.6.30
Oracle MySQL>=5.7.0<=5.7.12
redhat Enterprise Linux Desktop=7.0
redhat Enterprise Linux Hpc Node=7.0
redhat Enterprise Linux Hpc Node Eus=7.2
redhat Enterprise Linux Server=7.0
redhat Enterprise Linux Server Aus=7.2
redhat Enterprise Linux Server Eus=7.2
redhat Enterprise Linux Workstation=7.0
Apple iOS and macOS=10.11.5
OpenSSL OpenSSL=1.0.1
OpenSSL OpenSSL=1.0.1-beta1
OpenSSL OpenSSL=1.0.1-beta2
OpenSSL OpenSSL=1.0.1-beta3
OpenSSL OpenSSL=1.0.1a
OpenSSL OpenSSL=1.0.1b
OpenSSL OpenSSL=1.0.1c
OpenSSL OpenSSL=1.0.1d
OpenSSL OpenSSL=1.0.1e
OpenSSL OpenSSL=1.0.1f
OpenSSL OpenSSL=1.0.1g
OpenSSL OpenSSL=1.0.1h
OpenSSL OpenSSL=1.0.1i
OpenSSL OpenSSL=1.0.1j
OpenSSL OpenSSL=1.0.1k
OpenSSL OpenSSL=1.0.1l
OpenSSL OpenSSL=1.0.1m
OpenSSL OpenSSL=1.0.1n
OpenSSL OpenSSL=1.0.1o
OpenSSL OpenSSL=1.0.1p
OpenSSL OpenSSL=1.0.1q
OpenSSL OpenSSL=1.0.1r
OpenSSL OpenSSL=1.0.1s
OpenSSL OpenSSL=1.0.2
OpenSSL OpenSSL=1.0.2-beta1
OpenSSL OpenSSL=1.0.2-beta2
OpenSSL OpenSSL=1.0.2-beta3
OpenSSL OpenSSL=1.0.2a
OpenSSL OpenSSL=1.0.2b
OpenSSL OpenSSL=1.0.2c
OpenSSL OpenSSL=1.0.2d
OpenSSL OpenSSL=1.0.2e
OpenSSL OpenSSL=1.0.2f
OpenSSL OpenSSL=1.0.2g
Debian Debian Linux=8.0
Canonical Ubuntu Linux=12.04
Canonical Ubuntu Linux=14.04
Canonical Ubuntu Linux=15.10
Canonical Ubuntu Linux=16.04
Nodejs Node.js>=0.10.0<0.10.45
Nodejs Node.js>=0.12.0<0.12.14
Nodejs Node.js>=4.0.0<=4.1.2
Nodejs Node.js>=4.2.0<4.4.4
Nodejs Node.js>=5.0.0<5.11.1
Nodejs Node.js=6.0.0

Event History

May 3, 2016
CVE Published
12:00 AM
May 5, 2016
CVE Published
via MITRE·12:00 AM
Data Sourced
via MITRE·12:00 AM
Description

Frequently Asked Questions

1

What is the severity of CVE-2016-2105?

CVE-2016-2105 has a critical severity rating due to its potential to allow remote code execution via a buffer overflow.

2

How do I fix CVE-2016-2105?

To fix CVE-2016-2105, upgrade your OpenSSL to version 1.0.1e-48.el6_8.1 or higher or 1.0.2h-4.jbcs.el6 or higher based on your system.

3

What systems are affected by CVE-2016-2105?

CVE-2016-2105 affects various versions of OpenSSL including 1.0.1 and 1.0.2 across multiple distributions like Red Hat and Ubuntu.

4

Can CVE-2016-2105 be exploited remotely?

Yes, CVE-2016-2105 can be exploited remotely, allowing attackers to crash applications or potentially execute arbitrary code.

5

Is there a workaround for CVE-2016-2105 while I update?

While updating is the best option, limiting access to services using affected OpenSSL versions may serve as a temporary workaround.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203