CVE-2016-0702
Medium · 5.1CVSS
5.1
EPSS
1.9%
Published
Mar 3, 2016
CISA due date
—
Cloudanix analysis
Older encryption software on certain computers could allow someone already on the machine to steal secret keys that protect sensitive data and connections.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- Information Disclosure
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The MOD_EXP_CTIME_COPY_FROM_PREBUF function in OpenSSL fails to account for cache-bank access timing variations during modular exponentiation on Intel Sandy Bridge CPUs, enabling local observation of RSA private key operations via cache-bank conflicts.
Why it matters to the business
Organizations using affected Node.js versions on older hardware risk exposure of cryptographic keys to local attackers, which could undermine encrypted communications, authentication, and data protection controls; the issue is dated with low current exploitation probability.
How an attack unfolds
An attacker with local system access launches a crafted process on the same CPU core as a victim application performing RSA operations with vulnerable OpenSSL, measures cache-bank timing side effects during exponentiation, and reconstructs the private key from the leaked information.
How to fix it
Upgrade OpenSSL to 1.0.1s, 1.0.2g or later. For Node.js, apply the fix present in commit 805f054cc7791c447dbb960fbf3b179ea05294ac and rebuild affected applications.
How to confirm the fix worked
Confirm OpenSSL versions meet or exceed 1.0.1s/1.0.2g; verify Node.js builds incorporate the referenced commit; test RSA operations under cache-timing conditions to ensure no leakage.
Typical attack path
- Obtain local access to a target system running vulnerable OpenSSL
- Identify processes performing RSA operations with the affected library
- Execute a malicious application pinned to the same CPU core
- Collect cache-bank access timing measurements during key operations
- Process collected data to recover RSA private key material
How to detect it
Examine system and process logs for unusual local applications running concurrently with RSA-using services on the same CPU core; review audit trails for unexpected cache or timing measurement activity, though traces are minimal for this side-channel technique.
What your security team should do
- Prioritize patching Node.js and OpenSSL on systems using RSA with affected versions
- Enforce CPU core isolation or process scheduling policies where feasible
- Audit local access controls and remove unnecessary user privileges
- Review cryptographic key rotation policies for impacted systems
The record
The MOD_EXP_CTIME_COPY_FROM_PREBUF function in crypto/bn/bn_exp.c in OpenSSL 1.0.1 before 1.0.1s and 1.0.2 before 1.0.2g does not properly consider cache-bank access times during modular exponentiation, which makes it easier for local users to discover RSA keys by running a crafted application on the same Intel Sandy Bridge CPU core as a victim and leveraging cache-bank conflicts, aka a "CacheBleed" attack.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | openssl | 0 | 1.0.2g-1 |
| Debian:12 | openssl | 0 | 1.0.2g-1 |
| Debian:13 | openssl | 0 | 1.0.2g-1 |
| Debian:7 | openssl | 0 | 1.0.1e-2+deb7u20 |
| Debian:8 | openssl | 0 | 1.0.1k-3+deb8u4 |
| Mageia:5 | openssl | 0 | 1.0.2g-1.1.mga5 |
| Red Hat:enterprise_linux:6::client | openssl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::client | openssl-debuginfo | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::client | openssl-devel | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::client | openssl-perl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::client | openssl-static | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::computenode | openssl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::computenode | openssl-debuginfo | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::computenode | openssl-devel | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::computenode | openssl-perl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::computenode | openssl-static | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::hypervisor | rhev-hypervisor7 | 0 | 0:7.2-20160302.1.el6ev |
| Red Hat:enterprise_linux:6::server | openssl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::server | openssl-debuginfo | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::server | openssl-devel | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::server | openssl-perl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::server | openssl-static | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::workstation | openssl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::workstation | openssl-debuginfo | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::workstation | openssl-devel | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::workstation | openssl-perl | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:6::workstation | openssl-static | 0 | 0:1.0.1e-42.el6_7.4 |
| Red Hat:enterprise_linux:7::client | openssl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::client | openssl-debuginfo | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::client | openssl-devel | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::client | openssl-libs | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::client | openssl-perl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::client | openssl-static | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::computenode | openssl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::computenode | openssl-debuginfo | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::computenode | openssl-devel | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::computenode | openssl-libs | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::computenode | openssl-perl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::computenode | openssl-static | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::hypervisor | rhev-hypervisor7 | 0 | 0:7.2-20160302.1.el7ev |
| Red Hat:enterprise_linux:7::server | openssl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::server | openssl-debuginfo | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::server | openssl-devel | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::server | openssl-libs | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::server | openssl-perl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::server | openssl-static | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::workstation | openssl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::workstation | openssl-debuginfo | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::workstation | openssl-devel | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::workstation | openssl-libs | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::workstation | openssl-perl | 0 | 1:1.0.1e-51.el7_2.4 |
| Red Hat:enterprise_linux:7::workstation | openssl-static | 0 | 1:1.0.1e-51.el7_2.4 |
| SUSE:Linux Enterprise Desktop 11 SP4 | compat-openssl097g | 0 | 0.9.7g-146.22.41.1 |
| SUSE:Linux Enterprise Desktop 11 SP4 | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Linux Enterprise Desktop 12 | compat-openssl098 | 0 | 0.9.8j-94.1 |
| SUSE:Linux Enterprise Desktop 12 | compat-openssl098 | 0 | 0.9.8j-97.1 |
| SUSE:Linux Enterprise Desktop 12 | openssl | 0 | 1.0.1i-27.13.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | compat-openssl098 | 0 | 0.9.8j-94.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | compat-openssl098 | 0 | 0.9.8j-97.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | openssl | 0 | 1.0.1i-44.1 |
| SUSE:Linux Enterprise Module for Legacy 12 | compat-openssl098 | 0 | 0.9.8j-94.1 |
| SUSE:Linux Enterprise Module for Legacy 12 | compat-openssl098 | 0 | 0.9.8j-97.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Linux Enterprise Server 11 SP3-TERADATA | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Linux Enterprise Server 11 SP3-TERADATA | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Linux Enterprise Server 11 SP4 | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Linux Enterprise Server 11 SP4 | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Linux Enterprise Server 11-SECURITY | openssl1 | 0 | 1.0.1g-0.40.1 |
| SUSE:Linux Enterprise Server 12 | openssl | 0 | 1.0.1i-27.13.1 |
| SUSE:Linux Enterprise Server 12 SP1 | openssl | 0 | 1.0.1i-44.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | compat-openssl097g | 0 | 0.9.7g-146.22.41.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | openssl | 0 | 1.0.1i-27.13.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | compat-openssl098 | 0 | 0.9.8j-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | compat-openssl098 | 0 | 0.9.8j-97.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | openssl | 0 | 1.0.1i-44.1 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Linux Enterprise Software Development Kit 12 | openssl | 0 | 1.0.1i-27.13.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | openssl | 0 | 1.0.1i-44.1 |
| SUSE:Manager 2.1 | openssl | 0 | 0.9.8j-0.91.1 |
| SUSE:Manager 2.1 | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Manager Proxy 2.1 | openssl | 0 | 0.9.8j-0.91.1 |
| SUSE:Manager Proxy 2.1 | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:OpenStack Cloud 5 | openssl | 0 | 0.9.8j-0.91.1 |
| SUSE:OpenStack Cloud 5 | openssl | 0 | 0.9.8j-0.97.1 |
| SUSE:Studio Onsite 1.3 | openssl | 0 | 0.9.8j-0.89.1 |
| SUSE:Studio Onsite 1.3 | openssl | 0 | 0.9.8j-0.97.1 |
| Ubuntu:14.04:LTS | openssl | 0 | 1.0.1f-1ubuntu2.18 |
| Ubuntu:16.04:LTS | openssl | 0 | 1.0.2g-1ubuntu2 |
| openSUSE:Tumbleweed | libressl | 0 | 2.5.0-1.1 |
| openSUSE:Tumbleweed | openssl-1_1 | 0 | 1.1.1l-1.2 |
Related vulnerabilities
- CVE-2024-13176 Issue summary: A timing side-channel which could potentially allow recovering the private… Also affects openssl
- CVE-2024-4741 Issue summary: Calling the OpenSSL API function SSL_free_buffers may cause memory to be… Also affects openssl
- CVE-2024-9143 Issue summary: Use of the low-level GF(2^m) elliptic curve APIs with untrusted explicit… Also affects openssl
- CVE-2024-5535 Issue summary: Calling the OpenSSL API function SSL_select_next_proto with an empty… Also affects openssl
- CVE-2024-2511 Issue summary: Some non-default TLS server configurations can cause unbounded memory… Also affects openssl
- CVE-2024-0727 Issue summary: Processing a maliciously formatted PKCS12 file may lead OpenSSL to crash… Also affects openssl
- CVE-2023-5678 Issue summary: Generating excessively long X9.42 DH keys or checking excessively long… Also affects openssl
- CVE-2022-0778 The BN_mod_sqrt() function, which computes a modular square root, contains a bug that can… Also affects openssl