GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2024-1544 (GCVE-0-2024-1544)

Vulnerability from cvelistv5 – Published: 2024-08-27 18:44 – Updated: 2026-01-27 21:58
VLAI
Title
ECDSA nonce bias caused by truncation
Summary
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.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2024-08-27 19:14 UTC
CWE
Impacted products
Vendor Product Version CPE status
wolfSSL wolfSSL Affected: 0 , ≤ 5.6.4 (Release)
guessed Create a notification for this product.
Date Public
2024-07-08 17:30
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-1544",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-08-27T19:14:00.889289Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-08-27T19:14:35.190Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unknown",
          "product": "wolfSSL",
          "programFiles": [
            "wolfcrypt/src/ecc.c"
          ],
          "vendor": "wolfSSL",
          "versions": [
            {
              "lessThanOrEqual": "5.6.4",
              "status": "affected",
              "version": "0",
              "versionType": "Release"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "user": "00000000-0000-4000-9000-000000000000",
          "value": "Florian Sieck, Luca Wilke and Thomas Eisenbarth from Universit\u00e4t zu L\u00fcbeck"
        }
      ],
      "datePublic": "2024-07-08T17:30:00.000Z",
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "Generating the ECDSA nonce k samples a random number r and then \u003cbr\u003etruncates this randomness with a modular reduction mod n where n is the \u003cbr\u003eorder of the elliptic curve. Meaning k = r mod n. The division used \u003cbr\u003eduring the reduction estimates a factor q_e by dividing the upper two \u003cbr\u003edigits (a digit having e.g. a size of 8 byte) of r by the upper digit of \u003cbr\u003en and then decrements q_e in a loop until it has the correct size. \u003cbr\u003eObserving the number of times q_e is decremented through a control-flow \u003cbr\u003erevealing side-channel reveals a bias in the most significant bits of \u003cbr\u003ek. Depending on the curve this is either a negligible bias or a \u003cbr\u003esignificant bias large enough to reconstruct k with lattice reduction \u003cbr\u003emethods. For SECP160R1, e.g., we find a bias of 15 bits."
            }
          ],
          "value": "Generating the ECDSA nonce k samples a random number r and then \ntruncates this randomness with a modular reduction mod n where n is the \norder of the elliptic curve. Meaning k = r mod n. The division used \nduring the reduction estimates a factor q_e by dividing the upper two \ndigits (a digit having e.g. a size of 8 byte) of r by the upper digit of \nn and then decrements q_e in a loop until it has the correct size. \nObserving the number of times q_e is decremented through a control-flow \nrevealing side-channel reveals a bias in the most significant bits of \nk. Depending on the curve this is either a negligible bias or a \nsignificant bias large enough to reconstruct k with lattice reduction \nmethods. For SECP160R1, e.g., we find a bias of 15 bits."
        }
      ],
      "impacts": [
        {
          "descriptions": [
            {
              "lang": "en",
              "value": "Information Disclosure"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "attackComplexity": "HIGH",
            "attackVector": "LOCAL",
            "availabilityImpact": "NONE",
            "baseScore": 4.1,
            "baseSeverity": "MEDIUM",
            "confidentialityImpact": "HIGH",
            "integrityImpact": "NONE",
            "privilegesRequired": "HIGH",
            "scope": "UNCHANGED",
            "userInteraction": "NONE",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N",
            "version": "3.1"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-203",
              "description": "CWE-203 Observable Discrepancy",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-01-27T21:58:42.146Z",
        "orgId": "50d2cd11-d01a-48ed-9441-5bfce9d63b27",
        "shortName": "wolfSSL"
      },
      "references": [
        {
          "url": "https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.2-stable"
        },
        {
          "url": "https://github.com/wolfSSL/wolfssl/pull/7020"
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "title": "ECDSA nonce bias caused by truncation",
      "x_generator": {
        "engine": "Vulnogram 0.1.0-dev"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "50d2cd11-d01a-48ed-9441-5bfce9d63b27",
    "assignerShortName": "wolfSSL",
    "cveId": "CVE-2024-1544",
    "datePublished": "2024-08-27T18:44:52.770Z",
    "dateReserved": "2024-02-15T17:38:16.603Z",
    "dateUpdated": "2026-01-27T21:58:42.146Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2024-1544",
      "date": "2026-09-16",
      "epss": "0.00349",
      "percentile": "0.28408"
    },
    "fkie_nvd": {
      "descriptions": "[{\"lang\": \"en\", \"value\": \"Generating the ECDSA nonce k samples a random number r and then \\ntruncates this randomness with a modular reduction mod n where n is the \\norder of the elliptic curve. Meaning k = r mod n. The division used \\nduring the reduction estimates a factor q_e by dividing the upper two \\ndigits (a digit having e.g. a size of 8 byte) of r by the upper digit of \\nn and then decrements q_e in a loop until it has the correct size. \\nObserving the number of times q_e is decremented through a control-flow \\nrevealing side-channel reveals a bias in the most significant bits of \\nk. Depending on the curve this is either a negligible bias or a \\nsignificant bias large enough to reconstruct k with lattice reduction \\nmethods. For SECP160R1, e.g., we find a bias of 15 bits.\"}, {\"lang\": \"es\", \"value\": \"Generar el nonce k ECDSA muestra un n\\u00famero aleatorio r y luego trunca esta aleatoriedad con una reducci\\u00f3n modular mod n donde n es el orden de la curva el\\u00edptica. Significado k = r mod n. La divisi\\u00f3n utilizada durante la reducci\\u00f3n estima un factor q_e dividiendo los dos d\\u00edgitos superiores (un d\\u00edgito que tiene, por ejemplo, un tama\\u00f1o de 8 bytes) de r por el d\\u00edgito superior de n y luego disminuye q_e en un bucle hasta que tenga el tama\\u00f1o correcto. Observar el n\\u00famero de veces que q_e disminuye a trav\\u00e9s de un canal lateral revelador de flujo de control revela un sesgo en los bits m\\u00e1s significativos de k. Dependiendo de la curva, esto es un sesgo insignificante o un sesgo significativo lo suficientemente grande como para reconstruir k con m\\u00e9todos de reducci\\u00f3n de celos\\u00eda. Para SECP160R1, por ejemplo, encontramos un sesgo de 15 bits.\"}]",
      "id": "CVE-2024-1544",
      "lastModified": "2024-08-28T12:57:39.090",
      "metrics": "{\"cvssMetricV31\": [{\"source\": \"facts@wolfssl.com\", \"type\": \"Secondary\", \"cvssData\": {\"version\": \"3.1\", \"vectorString\": \"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N\", \"baseScore\": 4.1, \"baseSeverity\": \"MEDIUM\", \"attackVector\": \"LOCAL\", \"attackComplexity\": \"HIGH\", \"privilegesRequired\": \"HIGH\", \"userInteraction\": \"NONE\", \"scope\": \"UNCHANGED\", \"confidentialityImpact\": \"HIGH\", \"integrityImpact\": \"NONE\", \"availabilityImpact\": \"NONE\"}, \"exploitabilityScore\": 0.5, \"impactScore\": 3.6}]}",
      "published": "2024-08-27T19:15:16.547",
      "references": "[{\"url\": \"https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.2-stable\", \"source\": \"facts@wolfssl.com\"}]",
      "sourceIdentifier": "facts@wolfssl.com",
      "vulnStatus": "Awaiting Analysis",
      "weaknesses": "[{\"source\": \"facts@wolfssl.com\", \"type\": \"Secondary\", \"description\": [{\"lang\": \"en\", \"value\": \"CWE-203\"}]}]"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2024-1544\",\"sourceIdentifier\":\"facts@wolfssl.com\",\"published\":\"2024-08-27T19:15:16.547\",\"lastModified\":\"2026-06-17T07:04:27.800\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"Generating the ECDSA nonce k samples a random number r and then \\ntruncates this randomness with a modular reduction mod n where n is the \\norder of the elliptic curve. Meaning k = r mod n. The division used \\nduring the reduction estimates a factor q_e by dividing the upper two \\ndigits (a digit having e.g. a size of 8 byte) of r by the upper digit of \\nn and then decrements q_e in a loop until it has the correct size. \\nObserving the number of times q_e is decremented through a control-flow \\nrevealing side-channel reveals a bias in the most significant bits of \\nk. Depending on the curve this is either a negligible bias or a \\nsignificant bias large enough to reconstruct k with lattice reduction \\nmethods. For SECP160R1, e.g., we find a bias of 15 bits.\"},{\"lang\":\"es\",\"value\":\"Generar el nonce k ECDSA muestra un n\u00famero aleatorio r y luego trunca esta aleatoriedad con una reducci\u00f3n modular mod n donde n es el orden de la curva el\u00edptica. Significado k = r mod n. La divisi\u00f3n utilizada durante la reducci\u00f3n estima un factor q_e dividiendo los dos d\u00edgitos superiores (un d\u00edgito que tiene, por ejemplo, un tama\u00f1o de 8 bytes) de r por el d\u00edgito superior de n y luego disminuye q_e en un bucle hasta que tenga el tama\u00f1o correcto. Observar el n\u00famero de veces que q_e disminuye a trav\u00e9s de un canal lateral revelador de flujo de control revela un sesgo en los bits m\u00e1s significativos de k. Dependiendo de la curva, esto es un sesgo insignificante o un sesgo significativo lo suficientemente grande como para reconstruir k con m\u00e9todos de reducci\u00f3n de celos\u00eda. Para SECP160R1, por ejemplo, encontramos un sesgo de 15 bits.\"}],\"affected\":[{\"source\":\"facts@wolfssl.com\",\"affectedData\":[{\"vendor\":\"wolfSSL\",\"product\":\"wolfSSL\",\"defaultStatus\":\"unknown\",\"programFiles\":[\"wolfcrypt/src/ecc.c\"],\"versions\":[{\"version\":\"0\",\"lessThanOrEqual\":\"5.6.4\",\"versionType\":\"Release\",\"status\":\"affected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"facts@wolfssl.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N\",\"baseScore\":4.1,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"HIGH\",\"privilegesRequired\":\"HIGH\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":0.5,\"impactScore\":3.6},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N\",\"baseScore\":4.9,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"HIGH\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":1.2,\"impactScore\":3.6}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2024-08-27T19:14:00.889289Z\",\"id\":\"CVE-2024-1544\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"facts@wolfssl.com\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-203\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:wolfssl:wolfssl:*:*:*:*:*:*:*:*\",\"versionEndExcluding\":\"5.7.2\",\"matchCriteriaId\":\"F0F4729E-754A-4CB1-A77D-1E1E97F0F69B\"}]}]}],\"references\":[{\"url\":\"https://github.com/wolfSSL/wolfssl/pull/7020\",\"source\":\"facts@wolfssl.com\"},{\"url\":\"https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.2-stable\",\"source\":\"facts@wolfssl.com\",\"tags\":[\"Release Notes\"]}]}}",
    "redhat_vex": {
      "current_release_date": "2026-01-28T03:16:48+00:00",
      "cve": "CVE-2024-1544",
      "id": "CVE-2024-1544",
      "initial_release_date": "2024-07-08T17:30:00+00:00",
      "product_status:known_not_affected": "1",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "ECDSA nonce bias caused by truncation",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-1544.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2025-12-19T01:13:11Z",
      "cve": "CVE-2024-1544",
      "id": "CVE-2024-1544",
      "initial_release_date": "2024-08-29T03:22:11Z",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-1544",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-1544.json",
      "version": "8"
    },
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-1544\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-08-27T19:14:00.889289Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-08-27T19:14:28.355Z\"}}], \"cna\": {\"title\": \"ECDSA nonce bias caused by truncation\", \"source\": {\"discovery\": \"EXTERNAL\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"user\": \"00000000-0000-4000-9000-000000000000\", \"value\": \"Florian Sieck, Luca Wilke and Thomas Eisenbarth from Universit\\u00e4t zu L\\u00fcbeck\"}], \"impacts\": [{\"descriptions\": [{\"lang\": \"en\", \"value\": \"Information Disclosure\"}]}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 4.1, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N\", \"integrityImpact\": \"NONE\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"HIGH\", \"availabilityImpact\": \"NONE\", \"privilegesRequired\": \"HIGH\", \"confidentialityImpact\": \"HIGH\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"vendor\": \"wolfSSL\", \"product\": \"wolfSSL\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"versionType\": \"Release\", \"lessThanOrEqual\": \"5.6.4\"}], \"programFiles\": [\"wolfcrypt/src/ecc.c\"], \"defaultStatus\": \"unknown\"}], \"datePublic\": \"2024-07-08T17:30:00.000Z\", \"references\": [{\"url\": \"https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.2-stable\"}, {\"url\": \"https://github.com/wolfSSL/wolfssl/pull/7020\"}], \"x_generator\": {\"engine\": \"Vulnogram 0.1.0-dev\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"Generating the ECDSA nonce k samples a random number r and then \\ntruncates this randomness with a modular reduction mod n where n is the \\norder of the elliptic curve. Meaning k = r mod n. The division used \\nduring the reduction estimates a factor q_e by dividing the upper two \\ndigits (a digit having e.g. a size of 8 byte) of r by the upper digit of \\nn and then decrements q_e in a loop until it has the correct size. \\nObserving the number of times q_e is decremented through a control-flow \\nrevealing side-channel reveals a bias in the most significant bits of \\nk. Depending on the curve this is either a negligible bias or a \\nsignificant bias large enough to reconstruct k with lattice reduction \\nmethods. For SECP160R1, e.g., we find a bias of 15 bits.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"Generating the ECDSA nonce k samples a random number r and then \u003cbr\u003etruncates this randomness with a modular reduction mod n where n is the \u003cbr\u003eorder of the elliptic curve. Meaning k = r mod n. The division used \u003cbr\u003eduring the reduction estimates a factor q_e by dividing the upper two \u003cbr\u003edigits (a digit having e.g. a size of 8 byte) of r by the upper digit of \u003cbr\u003en and then decrements q_e in a loop until it has the correct size. \u003cbr\u003eObserving the number of times q_e is decremented through a control-flow \u003cbr\u003erevealing side-channel reveals a bias in the most significant bits of \u003cbr\u003ek. Depending on the curve this is either a negligible bias or a \u003cbr\u003esignificant bias large enough to reconstruct k with lattice reduction \u003cbr\u003emethods. For SECP160R1, e.g., we find a bias of 15 bits.\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-203\", \"description\": \"CWE-203 Observable Discrepancy\"}]}], \"providerMetadata\": {\"orgId\": \"50d2cd11-d01a-48ed-9441-5bfce9d63b27\", \"shortName\": \"wolfSSL\", \"dateUpdated\": \"2026-01-27T21:58:42.146Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-1544\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-01-27T21:58:42.146Z\", \"dateReserved\": \"2024-02-15T17:38:16.603Z\", \"assignerOrgId\": \"50d2cd11-d01a-48ed-9441-5bfce9d63b27\", \"datePublished\": \"2024-08-27T18:44:52.770Z\", \"assignerShortName\": \"wolfSSL\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…