CVE-2019-1547
Medium · 4.7CVSS
4.7
EPSS
1.2%
Published
Sep 10, 2019
CISA due date
—
Cloudanix analysis
A flaw in the OpenSSL library could let attackers steal secret keys by carefully timing many signature operations.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Allows full recovery of EC private keys via side-channel attack on ECDSA signatures when using explicit curve parameters without cofactor, bypassing side-channel protections in libcrypto.
Why it matters to the business
Attackers may obtain private keys used for signing or encryption, leading to potential compromise of secure communications, data integrity, and authentication across systems relying on affected OpenSSL versions.
How an attack unfolds
An attacker with local access identifies an application performing ECDSA signatures with explicit parameters lacking a cofactor, then times a large number of such operations to recover the private key through analysis of non-side-channel-resistant code paths.
How to fix it
Upgrade to OpenSSL 1.1.1d, 1.1.0l, or 1.0.2t (or later releases in each branch). Avoid constructing EC groups with explicit parameters; prefer named curves.
How to confirm the fix worked
Confirm installed OpenSSL version meets or exceeds 1.1.1d, 1.1.0l, or 1.0.2t. Audit source code and configurations for any use of explicit EC parameters with d2i_ECParameters or similar functions.
Typical attack path
- Locate applications or libraries using explicit EC parameters instead of named curves
- Trigger or observe a high volume of ECDSA signature operations
- Collect precise timing data across many signatures
- Apply mathematical recovery techniques such as lattice attacks to extract the private key
How to detect it
Post-exploitation detection is challenging because the attack relies on passive timing of normal operations; review logs for unusually high volumes of ECDSA operations using custom curves and inspect any available application-level timing or debug output.
What your security team should do
- Prioritize upgrade of all OpenSSL installations to a fixed release
- Scan codebases and configurations for explicit EC parameter usage
- Replace any custom curves with standard named curves where possible
- Review cryptographic key material that may have been exposed on affected systems
The record
Normally in OpenSSL EC groups always have a co-factor present and this is used in side channel resistant code paths. However, in some cases, it is possible to construct a group using explicit parameters (instead of using a named curve). In those cases it is possible that such a group does not have the cofactor present. This can occur even where all the parameters match a known named curve. If such a curve is used then OpenSSL falls back to non-side channel resistant code paths which may result in full key recovery during an ECDSA signature operation. In order to be vulnerable an attacker would have to have the ability to time the creation of a large number of signatures where explicit parameters with no co-factor present are in use by an application using libcrypto. For the avoidance of doubt libssl is not vulnerable because explicit parameters are never used. Fixed in OpenSSL 1.1.1d (Affected 1.1.1-1.1.1c). Fixed in OpenSSL 1.1.0l (Affected 1.1.0-1.1.0k). Fixed in OpenSSL 1.0.2t (Affected 1.0.2-1.0.2s).
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Alpine:v3.10 | openssl | 0 | 1.1.1d-r0 |
| Alpine:v3.11 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.12 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.13 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.14 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.15 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.15 | openssl3 | 0 | 1.1.1d-r1 |
| Alpine:v3.16 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.16 | openssl3 | 0 | 1.1.1d-r1 |
| Alpine:v3.17 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.18 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.19 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.20 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.21 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.22 | openssl | 0 | 1.1.1d-r1 |
| Alpine:v3.7 | openssl | 0 | 1.0.2t-r0 |
| Alpine:v3.8 | openssl | 0 | 1.0.2t-r0 |
| Alpine:v3.9 | openssl | 0 | 1.1.1d-r0 |
| Debian:10 | openssl | 0 | 1.1.1d-0+deb10u1 |
| Debian:11 | openssl | 0 | 1.1.1d-1 |
| Debian:12 | openssl | 0 | 1.1.1d-1 |
| Debian:13 | openssl | 0 | 1.1.1d-1 |
| Debian:8 | openssl | 0 | 1.0.1t-1+deb8u12 |
| Debian:9 | openssl | 0 | 1.1.0l-1~deb9u1 |
| Debian:9 | openssl1.0 | 0 | 1.0.2t-1~deb9u1 |
| Mageia:7 | compat-openssl10 | 0 | 1.0.2t-1.mga7 |
| Mageia:7 | openssl | 0 | 1.1.0l-1.mga7 |
| Red Hat:enterprise_linux:8::baseos | openssl | 0 | 1:1.1.1c-15.el8 |
| Red Hat:enterprise_linux:8::baseos | openssl-debuginfo | 0 | 1:1.1.1c-15.el8 |
| Red Hat:enterprise_linux:8::baseos | openssl-debugsource | 0 | 1:1.1.1c-15.el8 |
| Red Hat:enterprise_linux:8::baseos | openssl-devel | 0 | 1:1.1.1c-15.el8 |
| Red Hat:enterprise_linux:8::baseos | openssl-libs | 0 | 1:1.1.1c-15.el8 |
| Red Hat:enterprise_linux:8::baseos | openssl-libs-debuginfo | 0 | 1:1.1.1c-15.el8 |
| Red Hat:enterprise_linux:8::baseos | openssl-perl | 0 | 1:1.1.1c-15.el8 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-apr | 0 | 0:1.6.3-86.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-apr-debuginfo | 0 | 0:1.6.3-86.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-apr-devel | 0 | 0:1.6.3-86.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-brotli | 0 | 0:1.0.6-21.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-brotli-debuginfo | 0 | 0:1.0.6-21.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-brotli-devel | 0 | 0:1.0.6-21.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-httpd | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-httpd-debuginfo | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-httpd-devel | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-httpd-manual | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-httpd-selinux | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-httpd-tools | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_cluster-native | 0 | 0:1.3.12-41.Final_redhat_2.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_cluster-native-debuginfo | 0 | 0:1.3.12-41.Final_redhat_2.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_http2 | 0 | 0:1.11.3-22.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_http2-debuginfo | 0 | 0:1.11.3-22.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_ldap | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_proxy_html | 0 | 1:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_session | 0 | 0:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-mod_ssl | 0 | 1:2.4.37-52.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-openssl | 0 | 1:1.1.1c-16.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-openssl-debuginfo | 0 | 1:1.1.1c-16.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-openssl-devel | 0 | 1:1.1.1c-16.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-openssl-libs | 0 | 1:1.1.1c-16.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-openssl-perl | 0 | 1:1.1.1c-16.jbcs.el6 |
| Red Hat:jboss_core_services:1::el6 | jbcs-httpd24-openssl-static | 0 | 1:1.1.1c-16.jbcs.el6 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-apr | 0 | 0:1.6.3-86.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-apr-debuginfo | 0 | 0:1.6.3-86.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-apr-devel | 0 | 0:1.6.3-86.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-brotli | 0 | 0:1.0.6-21.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-brotli-debuginfo | 0 | 0:1.0.6-21.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-brotli-devel | 0 | 0:1.0.6-21.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-httpd | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-httpd-debuginfo | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-httpd-devel | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-httpd-manual | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-httpd-selinux | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-httpd-tools | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_cluster-native | 0 | 0:1.3.12-41.Final_redhat_2.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_cluster-native-debuginfo | 0 | 0:1.3.12-41.Final_redhat_2.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_http2 | 0 | 0:1.11.3-22.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_http2-debuginfo | 0 | 0:1.11.3-22.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_ldap | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_proxy_html | 0 | 1:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_session | 0 | 0:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-mod_ssl | 0 | 1:2.4.37-52.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-openssl | 0 | 1:1.1.1c-16.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-openssl-debuginfo | 0 | 1:1.1.1c-16.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-openssl-devel | 0 | 1:1.1.1c-16.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-openssl-libs | 0 | 1:1.1.1c-16.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-openssl-perl | 0 | 1:1.1.1c-16.jbcs.el7 |
| Red Hat:jboss_core_services:1::el7 | jbcs-httpd24-openssl-static | 0 | 1:1.1.1c-16.jbcs.el7 |
| SUSE:Enterprise Storage 4 | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Enterprise Storage 5 | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Enterprise Storage 6 | openssl-1_0_0 | 0 | 1.0.2p-3.22.1 |
| SUSE:HPE Helion OpenStack 8 | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Linux Enterprise Desktop 12 SP4 | compat-openssl098 | 0 | 0.9.8j-106.15.1 |
| SUSE:Linux Enterprise Desktop 12 SP4 | openssl-1_0_0 | 0 | 1.0.2p-3.11.1 |
| SUSE:Linux Enterprise Desktop 12 SP4 | openssl-1_1 | 0 | 1.1.1d-2.20.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 | openssl-1_1 | 0 | 1.1.0i-4.24.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP1 | openssl-1_1 | 0 | 1.1.0i-14.3.1 |
| SUSE:Linux Enterprise Module for Legacy 12 | compat-openssl098 | 0 | 0.9.8j-106.15.1 |
| SUSE:Linux Enterprise Module for Legacy 15 | openssl-1_0_0 | 0 | 1.0.2p-3.22.1 |
| SUSE:Linux Enterprise Module for Legacy 15 SP1 | openssl-1_0_0 | 0 | 1.0.2p-3.22.1 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | openssl | 0 | 0.9.8j-0.106.25.1 |
| SUSE:Linux Enterprise Server 11 SP4-LTSS | openssl | 0 | 0.9.8j-0.106.25.1 |
| SUSE:Linux Enterprise Server 11-SECURITY | openssl1 | 0 | 1.0.1g-0.58.21.1 |
| SUSE:Linux Enterprise Server 12 SP1-LTSS | openssl | 0 | 1.0.1i-54.29.1 |
| SUSE:Linux Enterprise Server 12 SP2-BCL | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Linux Enterprise Server 12 SP2-LTSS | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Linux Enterprise Server 12 SP3-BCL | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Linux Enterprise Server 12 SP3-LTSS | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Linux Enterprise Server 12 SP4 | openssl-1_0_0 | 0 | 1.0.2p-3.11.1 |
| SUSE:Linux Enterprise Server 12 SP4 | openssl-1_1 | 0 | 1.1.1d-2.20.1 |
| SUSE:Linux Enterprise Server 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.20.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | compat-openssl098 | 0 | 0.9.8j-106.15.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | openssl | 0 | 1.0.1i-54.29.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | compat-openssl098 | 0 | 0.9.8j-106.15.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | compat-openssl098 | 0 | 0.9.8j-106.15.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | compat-openssl098 | 0 | 0.9.8j-106.15.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | openssl-1_0_0 | 0 | 1.0.2p-3.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP4 | openssl-1_1 | 0 | 1.1.1d-2.20.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.20.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP4 | openssl-1_0_0 | 0 | 1.0.2p-3.11.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP4 | openssl-1_1 | 0 | 1.1.1d-2.20.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | openssl-1_1 | 0 | 1.1.1d-2.20.1 |
| SUSE:OpenStack Cloud 7 | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:OpenStack Cloud 8 | openssl | 0 | 1.0.2j-60.55.1 |
| SUSE:OpenStack Cloud Crowbar 8 | openssl | 0 | 1.0.2j-60.55.1 |
| Ubuntu:14.04:LTS | openssl | 0 | 1.0.1f-1ubuntu2.27+esm1 |
| Ubuntu:16.04:LTS | openssl | 0 | 1.0.2g-1ubuntu4.16 |
| Ubuntu:16.04:LTS | openssl | 0 | 1.0.2g-1ubuntu4.17 |
| Ubuntu:18.04:LTS | openssl | 0 | 1.1.1-1ubuntu2.1~18.04.6 |
| Ubuntu:18.04:LTS | openssl1.0 | 0 | 1.0.2n-1ubuntu5.4 |
| Ubuntu:Pro:14.04:LTS | openssl | 0 | 1.0.1f-1ubuntu2.27+esm1 |
| openSUSE:Leap 15.0 | openssl-1_0_0 | 0 | 1.0.2p-lp150.2.19.1 |
| openSUSE:Leap 15.0 | openssl-1_1 | 0 | 1.1.0i-lp150.3.25.1 |
| openSUSE:Leap 15.1 | openssl-1_0_0 | 0 | 1.0.2p-lp151.5.10.1 |
| openSUSE:Leap 15.1 | openssl-1_1 | 0 | 1.1.0i-lp151.8.3.1 |
| openSUSE:Tumbleweed | openssl-1_0_0 | 0 | 1.0.2u-6.2 |
| openSUSE:Tumbleweed | openssl-1_1 | 0 | 1.1.1l-1.2 |
Related vulnerabilities
- CVE-2021-3449 An OpenSSL TLS server may crash if sent a maliciously crafted renegotiation ClientHello… Also affects openssl
- CVE-2021-3450 The X509_V_FLAG_X509_STRICT flag enables additional security checks of the certificates… Also affects openssl
- CVE-2021-23840 Calls to EVP_CipherUpdate, EVP_EncryptUpdate and EVP_DecryptUpdate may overflow the… Also affects openssl
- CVE-2020-1971 The X.509 GeneralName type is a generic type for representing different types of names. Also affects openssl
- CVE-2020-1967 Server or client applications that call the SSL_check_chain() function during or after a… Also affects openssl
- CVE-2019-1551 There is an overflow bug in the x64_64 Montgomery squaring procedure used in… Also affects openssl
- CVE-2021-3712 ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING structure which… 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