CVE-2024-28834
Medium · 5.3CVSS
5.3
EPSS
0.7%
Published
Mar 21, 2024
CISA due date
—
Cloudanix analysis
A hidden timing quirk in certain secure connection libraries could let attackers slowly steal the secret keys that protect encrypted traffic.
- Exploitation
- Remote Authenticated
- 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
The flaw exposes a timing side-channel in GnuTLS nonce generation when GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE is used, causing a detectable step from 513-bit to 512-bit nonces that leaks private key material.
Why it matters to the business
Successful exploitation can allow recovery of private keys used for authentication and encryption, leading to loss of confidentiality for secure sessions and potential compromise of downstream systems relying on the affected library.
How an attack unfolds
An attacker capable of observing multiple signature operations under controlled conditions measures timing variations in nonce length to gradually extract bits of the private key via the Minerva side-channel technique.
How to fix it
Upgrade affected apisix (Bitnami) deployments to version 2.13.0 or later, which incorporates the corrected GnuTLS behavior; disable the GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE flag where possible until patches are applied.
How to confirm the fix worked
Confirm the deployed GnuTLS version is newer than the vulnerable release, review application code for use of the reproducible flag, and re-test signature timing distributions to verify the 513-to-512 step is eliminated.
Typical attack path
- Identify services using GnuTLS with the reproducible private key flag enabled
- Trigger repeated signature operations while measuring response timing
- Analyze timing data to distinguish 513-bit versus 512-bit nonce lengths
- Aggregate observations to recover sufficient key material for forgery or decryption
How to detect it
Exploitation leaves no direct logs or artifacts; review application logs for unusually high volumes of signature operations from the same client and correlate with any anomalous key usage after the fact.
What your security team should do
- Prioritize upgrade of apisix (Bitnami) to 2.13.0 across all environments
- Audit cryptographic configurations for any use of reproducible private key flags
- Monitor vendor advisories for additional GnuTLS-dependent packages
The record
A flaw was found in GnuTLS. The Minerva attack is a cryptographic vulnerability that exploits deterministic behavior in systems like GnuTLS, leading to side-channel leaks. In specific scenarios, such as when using the GNUTLS_PRIVKEY_FLAG_REPRODUCIBLE flag, it can result in a noticeable step in nonce size from 513 to 512 bits, exposing a potential timing side-channel.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | gnutls | 0 | 3.6.16-8.el8_9.3 |
| AlmaLinux:8 | gnutls-c++ | 0 | 3.6.16-8.el8_9.3 |
| AlmaLinux:8 | gnutls-dane | 0 | 3.6.16-8.el8_9.3 |
| AlmaLinux:8 | gnutls-devel | 0 | 3.6.16-8.el8_9.3 |
| AlmaLinux:8 | gnutls-utils | 0 | 3.6.16-8.el8_9.3 |
| AlmaLinux:9 | gnutls | 0 | 3.7.6-23.el9_3.4 |
| AlmaLinux:9 | gnutls | 0 | 3.8.3-4.el9_4 |
| AlmaLinux:9 | gnutls-c++ | 0 | 3.7.6-23.el9_3.4 |
| AlmaLinux:9 | gnutls-c++ | 0 | 3.8.3-4.el9_4 |
| AlmaLinux:9 | gnutls-dane | 0 | 3.7.6-23.el9_3.4 |
| AlmaLinux:9 | gnutls-dane | 0 | 3.8.3-4.el9_4 |
| AlmaLinux:9 | gnutls-devel | 0 | 3.7.6-23.el9_3.4 |
| AlmaLinux:9 | gnutls-devel | 0 | 3.8.3-4.el9_4 |
| AlmaLinux:9 | gnutls-utils | 0 | 3.7.6-23.el9_3.4 |
| AlmaLinux:9 | gnutls-utils | 0 | 3.8.3-4.el9_4 |
| Alpine:v3.18 | gnutls | 0 | 3.8.4-r0 |
| Alpine:v3.19 | gnutls | 0 | 3.8.4-r0 |
| Alpine:v3.20 | gnutls | 0 | 3.8.5-r0 |
| Alpine:v3.21 | gnutls | 0 | 3.8.5-r0 |
| Alpine:v3.22 | gnutls | 0 | 3.8.5-r0 |
| Debian:11 | gnutls28 | 0 | 3.7.1-5+deb11u6 |
| Debian:12 | gnutls28 | 0 | 3.7.9-2+deb12u3 |
| Debian:13 | gnutls28 | 0 | 3.8.4-2 |
| Mageia:9 | gnutls | 0 | 3.8.4-1.mga9 |
| Red Hat:enterprise_linux:8::appstream | gnutls | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-c++ | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-c++-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-dane | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-dane-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-debugsource | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-devel | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-utils | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::appstream | gnutls-utils-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-c++ | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-c++-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-dane | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-dane-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-debugsource | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-devel | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-utils | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:8::baseos | gnutls-utils-debuginfo | 0 | 0:3.6.16-8.el8_9.3 |
| Red Hat:enterprise_linux:9::appstream | gnutls | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-c++ | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-c++ | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-c++-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-c++-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-dane | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-dane | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-dane-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-dane-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-debugsource | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-debugsource | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-devel | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-devel | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-utils | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-utils | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-utils-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::appstream | gnutls-utils-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-c++ | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-c++ | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-c++-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-c++-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-dane | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-dane | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-dane-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-dane-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-debugsource | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-debugsource | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-devel | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-devel | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-utils | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-utils | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-utils-debuginfo | 0 | 0:3.7.6-23.el9_3.4 |
| Red Hat:enterprise_linux:9::baseos | gnutls-utils-debuginfo | 0 | 0:3.8.3-4.el9_4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-c++ | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-c++-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-dane | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-dane-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-debugsource | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-devel | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-utils | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::appstream | gnutls-utils-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-c++ | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-c++-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-dane | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-dane-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-debugsource | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-devel | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-utils | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.6::baseos | gnutls-utils-debuginfo | 0 | 0:3.6.16-5.el8_6.4 |
| Red Hat:rhel_eus:8.8::appstream | gnutls | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-c++ | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-c++-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-dane | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-dane-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-debugsource | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-devel | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-utils | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::appstream | gnutls-utils-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-c++ | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-c++-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-dane | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-dane-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-debugsource | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-devel | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-utils | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:8.8::baseos | gnutls-utils-debuginfo | 0 | 0:3.6.16-7.el8_8.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-c++ | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-c++-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-dane | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-dane-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-debugsource | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-devel | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-utils | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::appstream | gnutls-utils-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-c++ | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-c++-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-dane | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-dane-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-debugsource | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-devel | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-utils | 0 | 0:3.7.6-21.el9_2.3 |
| Red Hat:rhel_eus:9.2::baseos | gnutls-utils-debuginfo | 0 | 0:3.7.6-21.el9_2.3 |
| Rocky Linux:8 | gnutls | 0 | 0:3.6.16-8.el8_9.3 |
| Rocky Linux:9 | gnutls | 0 | 0:3.8.3-4.el9_4 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Linux Enterprise Micro 5.3 | gnutls | 0 | 3.7.3-150400.8.1 |
| SUSE:Linux Enterprise Micro 5.4 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Linux Enterprise Micro 5.5 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Manager Proxy 4.3 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| SUSE:Manager Server 4.3 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| Ubuntu:20.04:LTS | gnutls28 | 0 | 3.6.13-2ubuntu1.11 |
| Ubuntu:22.04:LTS | gnutls28 | 0 | 3.7.3-4ubuntu1.5 |
| Ubuntu:23.10 | gnutls28 | 0 | 3.8.1-4ubuntu1.3 |
| Ubuntu:24.04:LTS | gnutls28 | 0 | 3.8.3-1.1ubuntu3.1 |
| openSUSE:Leap 15.5 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| openSUSE:Leap Micro 5.4 | gnutls | 0 | 3.7.3-150400.4.44.1 |
| openSUSE:Tumbleweed | gnutls | 0 | 3.8.4-1.1 |
Related vulnerabilities
- CVE-2024-0553 A vulnerability was found in GnuTLS. Also affects gnutls
- CVE-2023-5981 A vulnerability was found that the response times to malformed ciphertexts in RSA-PSK… Also affects gnutls
- CVE-2024-28835 A flaw has been discovered in GnuTLS where an application crash can be induced when… Also affects gnutls
- CVE-2017-7507 GnuTLS version 3.5.12 and earlier is vulnerable to a NULL pointer dereference while… Also affects gnutls
- CVE-2017-5334 Double free vulnerability in the gnutls_x509_ext_import_proxy function in GnuTLS before… Also affects gnutls28
- CVE-2016-7444 The gnutls_ocsp_resp_check_crt function in lib/x509/ocsp.c in GnuTLS before 3.4.15 and… Also affects gnutls28
- CVE-2015-7575 Mozilla Network Security Services (NSS) before 3.20.2, as used in Mozilla Firefox before… Also affects gnutls28
- CVE-2015-6251 Double free vulnerability in GnuTLS before 3.3.17 and 3.4.x before 3.4.4 allows remote… Also affects gnutls28