Cloudanix VulnDB

CVE-2024-9143

Medium · 4.3

CVSS

4.3

EPSS

5.8%

Published

Oct 16, 2024

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A rare flaw in how OpenSSL handles certain unusual curve math settings could let specially crafted inputs cause crashes or worse, so organizations should update the library even though everyday use is unlikely to be affected.

Exploitation
Remote Authenticated
Attacker needs
Low Privilege
Complexity
Low
Impact
Data Tampering
Component
Library
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Out-of-bounds memory reads or writes triggered by low-level GF(2^m) elliptic curve APIs when supplied untrusted explicit field polynomial values that have a zero constant term, via functions such as EC_GROUP_new_curve_GF2m, EC_GROUP_new_from_params, and BN_GF2m_* helpers.

Why it matters to the business

Applications that rely on exotic explicit binary curve parameters may experience abrupt termination or, in rare cases, remote code execution; standard named-curve or X.509 certificate usage is unaffected, so overall exposure and operational risk remain low but still require patching to eliminate the memory-safety gap.

How an attack unfolds

An attacker identifies an application that accepts or processes custom explicit GF(2^m) curve parameters through the vulnerable low-level APIs, crafts a field polynomial with a zero constant term, and supplies the malformed parameters to trigger out-of-bounds memory access; the resulting corruption may be leveraged for denial of service or, less commonly, code execution, although the attack surface is narrow because common protocols and certificate formats prevent such inputs.

How to fix it

Upgrade OpenSSL to a build that includes commit 72ae83ad214d2eef262461365a1975707f862712; rebuild and redeploy any dependent applications or libraries; avoid use of explicit GF(2^m) curve parameters with untrusted input until the update is applied.

How to confirm the fix worked

Confirm the presence of commit 72ae83ad214d2eef262461365a1975707f862712 in the OpenSSL source tree or verify the resulting library version; exercise any custom curve-handling code paths with both valid and previously problematic polynomial values to ensure no crashes occur.

Typical attack path

  1. Locate or coerce an application into using the low-level GF(2^m) curve construction APIs with attacker-controlled parameters
  2. Craft an explicit curve definition containing a field polynomial whose constant term is zero
  3. Submit the malformed parameters to EC_GROUP_new_curve_GF2m or equivalent
  4. Trigger out-of-bounds read or write to induce crash or attempt memory corruption exploitation

How to detect it

Search application and library logs for segmentation faults or memory errors during elliptic-curve initialization; review source code and configuration for any direct calls to the affected low-level GF(2^m) APIs with non-constant or externally supplied polynomials.

What your security team should do

  • Inventory all uses of EC_GROUP_new_curve_GF2m, EC_GROUP_new_from_params, and BN_GF2m_* functions
  • Apply the fixed commit or newer release in the next maintenance window
  • Disable or sandbox any code paths that accept exotic explicit binary curve parameters from external sources
  • Update dependency scanners to flag pre-fix OpenSSL versions

The record

Issue summary: Use of the low-level GF(2^m) elliptic curve APIs with untrusted explicit values for the field polynomial can lead to out-of-bounds memory reads or writes. Impact summary: Out of bound memory writes can lead to an application crash or even a possibility of a remote code execution, however, in all the protocols involving Elliptic Curve Cryptography that we're aware of, either only "named curves" are supported, or, if explicit curve parameters are supported, they specify an X9.62 encoding of binary (GF(2^m)) curves that can't represent problematic input values. Thus the likelihood of existence of a vulnerable application is low. In particular, the X9.62 encoding is used for ECC keys in X.509 certificates, so problematic inputs cannot occur in the context of processing X.509 certificates. Any problematic use-cases would have to be using an "exotic" curve encoding. The affected APIs include: EC_GROUP_new_curve_GF2m(), EC_GROUP_new_from_params(), and various supporting BN_GF2m_*() functions. Applications working with "exotic" explicit binary (GF(2^m)) curve parameters, that make it possible to represent invalid field polynomials with a zero constant term, via the above or similar APIs, may terminate abruptly as a result of reading or writing outside of array bounds. Remote code execution cannot easily be ruled out. The FIPS modules in 3.3, 3.2, 3.1 and 3.0 are not affected by this issue.

Affected packages

Ecosystem Package Introduced Fixed
Alpine:v3.17 openssl 0 3.0.15-r1
Alpine:v3.18 openssl 0 3.1.7-r1
Alpine:v3.19 openssl 0 3.1.7-r1
Alpine:v3.20 openssl 0 3.3.2-r1
Alpine:v3.20 openssl 0 3.3.2-r3
Alpine:v3.21 openssl 0 3.3.2-r3
Alpine:v3.22 openssl 0 3.3.2-r3
Chainguard libcrypto3 0 3.3.2-r2
Chainguard libssl3 0 3.3.2-r2
Chainguard openssl 0 3.3.2-r2
Chainguard openssl-config 0 3.3.2-r2
Chainguard openssl-dbg 0 3.3.2-r2
Chainguard openssl-dev 0 3.3.2-r2
Chainguard openssl-doc 0 3.3.2-r2
Chainguard openssl-engine-afalg 0 3.3.2-r2
Chainguard openssl-engine-capi 0 3.3.2-r2
Chainguard openssl-engine-loader-attic 0 3.3.2-r2
Chainguard openssl-engine-padlock 0 3.3.2-r2
Chainguard openssl-provider-fips 0 3.0.9-r1
Chainguard openssl-provider-fips-3.1.2 0 0
Chainguard openssl-provider-fips-3.1.2-dbg 0 0
Chainguard openssl-provider-legacy 0 3.3.2-r2
Debian:11 openssl 0 No fix
Debian:11 openssl 0 1.1.1w-0+deb11u2
Debian:11 openssl 0 1.1.1n-0+deb11u6
Debian:12 openssl 0 No fix
Debian:13 openssl 0 No fix
Debian:13 openssl 0 3.3.2-2
Debian:14 openssl 0 3.3.2-2
Mageia:9 openssl 0 3.0.15-1.1.mga9
Mageia:9 quictls 0 3.0.15-1.1.mga9
Mageia:9 quictls 0 3.0.17-1.mga9
Ubuntu:20.04:LTS edk2 0 No fix
Ubuntu:20.04:LTS openssl 0 No fix
Ubuntu:20.04:LTS openssl 0 1.1.1f-1ubuntu2.24
Ubuntu:22.04:LTS edk2 0 No fix
Ubuntu:22.04:LTS edk2 0 2022.02-3ubuntu0.22.04.4
Ubuntu:22.04:LTS nodejs 0 No fix
Ubuntu:22.04:LTS openssl 0 No fix
Ubuntu:22.04:LTS openssl 0 3.0.2-0ubuntu1.19
Ubuntu:24.04:LTS edk2 0 No fix
Ubuntu:24.04:LTS edk2 0 2024.02-2ubuntu0.6
Ubuntu:24.04:LTS openssl 0 No fix
Ubuntu:24.04:LTS openssl 0 3.0.13-0ubuntu3.5
Ubuntu:24.10 edk2 0 No fix
Ubuntu:24.10 openssl 0 No fix
Ubuntu:24.10 openssl 0 3.3.1-2ubuntu2.1
Ubuntu:Pro:14.04:LTS openssl 0 No fix
Ubuntu:Pro:16.04:LTS edk2 0 No fix
Ubuntu:Pro:16.04:LTS nodejs 0 No fix
Ubuntu:Pro:16.04:LTS openssl 0 No fix
Ubuntu:Pro:18.04:LTS edk2 0 No fix
Ubuntu:Pro:18.04:LTS nodejs 0 No fix
Ubuntu:Pro:18.04:LTS openssl 0 No fix
Ubuntu:Pro:18.04:LTS openssl1.0 0 No fix
Ubuntu:Pro:20.04:LTS edk2 0 No fix
Ubuntu:Pro:22.04:LTS nodejs 0 No fix
Ubuntu:Pro:FIPS-preview:22.04:LTS openssl 0 No fix
Ubuntu:Pro:FIPS-preview:22.04:LTS openssl-fips 0 No fix
Ubuntu:Pro:FIPS-updates:18.04:LTS openssl 0 No fix
Ubuntu:Pro:FIPS-updates:20.04:LTS openssl 0 No fix
Ubuntu:Pro:FIPS-updates:20.04:LTS openssl 0 1.1.1f-1ubuntu2.fips.24
Ubuntu:Pro:FIPS-updates:22.04:LTS openssl 0 No fix
Ubuntu:Pro:FIPS-updates:22.04:LTS openssl 0 3.0.2-0ubuntu1.19+Fips1
Ubuntu:Pro:FIPS-updates:22.04:LTS openssl-fips 0 No fix
Ubuntu:Pro:FIPS-updates:24.04:LTS openssl-fips 0 3.0.13-0ubuntu3.6+Fips1
Ubuntu:Pro:FIPS:16.04:LTS openssl 0 No fix
Ubuntu:Pro:FIPS:18.04:LTS openssl 0 No fix
Ubuntu:Pro:FIPS:20.04:LTS openssl 0 No fix
Wolfi libcrypto3 0 3.3.2-r2
Wolfi libssl3 0 3.3.2-r2
Wolfi openssl 0 3.3.2-r2
Wolfi openssl-config 0 3.3.2-r2
Wolfi openssl-dbg 0 3.3.2-r2
Wolfi openssl-dev 0 3.3.2-r2
Wolfi openssl-doc 0 3.3.2-r2
Wolfi openssl-engine-afalg 0 3.3.2-r2
Wolfi openssl-engine-capi 0 3.3.2-r2
Wolfi openssl-engine-loader-attic 0 3.3.2-r2
Wolfi openssl-engine-padlock 0 3.3.2-r2
Wolfi openssl-provider-legacy 0 3.3.2-r2
openSUSE:Tumbleweed openssl-3 0 3.1.4-15.1

Related vulnerabilities