CVE-2024-1544
Medium · 4.1CVSS
4.1
EPSS
0.3%
Published
Aug 27, 2024
CISA due date
—
Cloudanix analysis
A flaw in certain cryptographic libraries can leak enough information about the secret numbers used to create digital signatures that a skilled attacker with local access might recover the private keys protecting data or identities.
- Exploitation
- Local Privilege
- Attacker needs
- High Privilege
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
ECDSA nonce generation truncates randomness via modular reduction whose loop iteration count leaks MSB bias in k through control-flow side channel; for curves with sufficient bias this enables lattice recovery of the private key from observed signatures.
Why it matters to the business
Attackers with local high-privileged access could recover long-term signing keys on affected Android devices or wolfSSL deployments, undermining cryptographic authentication, code signing, or TLS sessions; prevalence in mobile and embedded ecosystems amplifies exposure though exploit maturity remains none and urgency is low.
How an attack unfolds
An attacker with the ability to trigger repeated ECDSA operations and observe control-flow timing or branch behavior collects the biased most-significant bits of multiple nonces k; lattice-reduction techniques then recover the private key for curves such as SECP160R1 where the bias reaches 15 bits.
How to fix it
Upgrade Android platform/frameworks/base to the 2023-05-01 monthly patches for versions 11, 12, 12L, 13 and 13-next; update wolfSSL to commit 00e42151ca061463ba6a95adb2290f678cbca472 or later releases that eliminate the biased reduction path.
How to confirm the fix worked
Verify installed Android security patch level includes the May 2023 fixes for frameworks/base; confirm wolfSSL binary or source matches or exceeds commit 00e42151ca061463ba6a95adb2290f678cbca472; run targeted unit tests exercising ECDSA nonce generation for the affected curves.
Typical attack path
- Locate process or library performing ECDSA signing with the vulnerable reduction routine
- Trigger a large number of signature operations under attacker-controlled input
- Measure the number of loop decrements in the modular reduction step via cache, branch, or timing side channel
- Collect biased MSB information across many nonces
- Feed collected data into lattice-reduction solver to extract the private scalar
How to detect it
Exploitation leaves no direct network or file artifacts; look for anomalous volumes of ECDSA signature operations from the same process, unexpected private-key usage after signature events, or post-compromise indicators such as unauthorized certificate or key rotation in application logs.
What your security team should do
- Inventory all Android devices and applications linking wolfSSL and schedule upgrades to the listed fixed versions
- Prioritize systems handling high-value signing keys or using SECP160R1 and similar curves
- Review logging and monitoring coverage for local side-channel indicators even though public exploitation is not observed
- Re-issue any long-term ECDSA keys that may have been generated on vulnerable builds
The record
Generating the ECDSA nonce k samples a random number r and then truncates this randomness with a modular reduction mod n where n is the order of the elliptic curve. Meaning k = r mod n. The division used during the reduction estimates a factor q_e by dividing the upper two digits (a digit having e.g. a size of 8 byte) of r by the upper digit of n and then decrements q_e in a loop until it has the correct size. Observing the number of times q_e is decremented through a control-flow revealing side-channel reveals a bias in the most significant bits of k. Depending on the curve this is either a negligible bias or a significant bias large enough to reconstruct k with lattice reduction methods. For SECP160R1, e.g., we find a bias of 15 bits.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | wolfssl | 0 | No fix |
| Debian:12 | wolfssl | 0 | No fix |
| Debian:13 | wolfssl | 0 | 5.7.2-0.1 |
| Ubuntu:16.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:18.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:20.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:22.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:24.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:24.10 | wolfssl | 0 | No fix |
| Ubuntu:25.04 | wolfssl | 0 | No fix |
| Ubuntu:25.10 | wolfssl | 0 | No fix |
| Ubuntu:Pro:16.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | wolfssl | 0 | No fix |
Related vulnerabilities
- CVE-2024-2881 Fault Injection vulnerability in wc_ed25519_sign_msg function in… Also affects wolfssl
- CVE-2024-1545 Fault Injection vulnerability in RsaPrivateDecryption function in… Also affects wolfssl
- CVE-2024-1543 The side-channel protected T-Table implementation in wolfSSL up to version 5.6.5 protects… Also affects wolfssl
- CVE-2024-5814 A malicious TLS1.2 server can force a TLS1.3 client with downgrade capability to use a… Also affects wolfssl
- CVE-2024-0901 Remotely executed SEGV and out of bounds read allows malicious packet sender to crash or… Also affects wolfssl
- CVE-2023-6936 In wolfSSL prior to 5.6.6, if callback functions are enabled (via the WOLFSSL_CALLBACKS… Also affects wolfssl
- CVE-2023-6937 wolfSSL prior to 5.6.6 did not check that messages in one (D)TLS record do not span key… Also affects wolfssl
- CVE-2017-13099 wolfSSL prior to version 3.12.2 provides a weak Bleichenbacher oracle when any TLS cipher… Also affects wolfssl