{"id":"CVE-2024-1544","aliases":["DEBIAN-CVE-2024-1544","EUVD-2024-17291","GHSA-grjj-54gm-q5vf","JLSEC-2026-682","UBUNTU-CVE-2024-1544"],"status":"published","title":"ECDSA nonce bias caused by truncation","description":"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.","severity":{"version":"3.1","score":4.1,"vector":"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00349,"percentile":0.28861,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-203"],"published":"2024-08-27T18:44:52Z","modified":"2026-11-02T12:00:28Z","fixes":[{"ecosystem":"Debian:13","package":"wolfssl","fixed_in":["5.7.2-0.1"],"sources":["osv"]},{"ecosystem":"Julia","package":"wolfSSL_jll","fixed_in":["5.7.2+0"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.5.4-2","5.5.4-2+deb12u1","5.5.4-2+deb12u2","5.5.4-2+deb12u3","5.5.4-2.1","5.6.4-1","5.6.4-2","5.6.6-1","5.6.6-1.1","5.6.6-1.2","5.6.6-1.3","5.6.6-1.3~exp1","5.7.0-0.1","5.7.0-0.2","5.7.0-0.3","5.7.2-0.1","5.7.2-0.2","5.7.2-0.3","5.7.2-0.4","5.8.2-1","5.8.2-1.1","5.8.2-1.2","5.8.4-1","5.9.0-0.1","5.9.0-0.2","5.9.1-0.1","5.9.2-1","5.9.2-1.1","5.9.2-1.2"]},{"source":"osv","ecosystem":"Debian:13","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"5.7.2-0.1"}]}]},{"source":"osv","ecosystem":"Julia","package":"wolfSSL_jll","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"5.7.2+0"}]}]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.4.8+dfsg-1"]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.10.2+dfsg-2","3.12.0+dfsg-1","3.12.2+dfsg-1","3.13.0+dfsg-1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.1.0+dfsg-2","4.2.0+dfsg-1","4.2.0+dfsg-2","4.2.0+dfsg-3","4.3.0+dfsg-2"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["4.6.0-3","5.0.0-1","5.1.1-1","5.2.0-1","5.2.0-2"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.5.4-2","5.5.4-2.1","5.6.4-2","5.6.6-1.2","5.6.6-1.3","5.6.6-1.3build1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.7.2-0.1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.9.1-0.1","5.9.2-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"wolfssl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["5.7.2-0.1","5.8.2-1.2","5.8.4-1","5.9.1-0.1"]}],"products":[{"vendor":"wolfssl","product":"wolfssl"}],"references":[{"url":"https://github.com/wolfSSL/wolfssl/releases/tag/v5.7.2-stable","tags":["Release Notes","web","report"]},{"url":"https://github.com/wolfSSL/wolfssl/pull/7020","tags":["fix","web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-1544","tags":["advisory","web"]},{"url":"https://github.com/advisories/GHSA-grjj-54gm-q5vf","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/1xxx/CVE-2024-1544.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2024-1544","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2024-1544","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2024-1544","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2024-1544","title":"ECDSA nonce bias caused by truncation","description":"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.","status":"published","published":"2024-08-27T18:44:52.77Z","modified":"2026-01-27T21:58:42.146Z","cvss":[{"version":"3.1","score":4.1,"vector":"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-203"],"updated_at":"2026-11-02T14:34:18.259965Z"}],"euvd":[{"id":"EUVD-2024-17291","description":"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.","status":"published","published":"2024-08-27T18:44:52Z","modified":"2026-01-27T21:58:42Z","cvss":[{"version":"3.1","score":4.1,"vector":"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T19:48:46.818498Z"}],"ghsa":[{"id":"GHSA-grjj-54gm-q5vf","title":"Generating the ECDSA nonce k samples a random number r and then \ntruncates this randomness with a...","description":"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.","status":"published","published":"2024-08-27T21:31:13Z","modified":"2026-01-28T00:31:38Z","cvss":[{"version":"3.1","score":4.1,"vector":"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-203"],"updated_at":"2026-11-02T15:05:56.482872Z"}],"nvd":[{"id":"CVE-2024-1544","description":"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.","status":"published","published":"2024-08-27T19:15:16.547Z","modified":"2026-06-17T07:04:27.8Z","cvss":[{"version":"3.1","score":4.1,"vector":"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-203"],"updated_at":"2026-11-02T14:10:21.771404Z"}],"osv":[{"id":"CVE-2024-1544","title":"ECDSA nonce bias caused by truncation","description":"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.","status":"published","published":"2024-08-27T18:44:52.77Z","modified":"2026-10-28T02:31:10.718578571Z","cvss":[{"version":"3.1","score":4.1,"vector":"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-203"],"updated_at":"2026-11-02T15:44:37.917085Z"},{"id":"DEBIAN-CVE-2024-1544","description":"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.","status":"published","published":"2024-08-27T19:15:16.547Z","modified":"2026-11-02T12:00:28.391508256Z","cvss":[{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:41.849198Z"},{"id":"JLSEC-2026-682","title":"Generating the ECDSA nonce k samples a random number r and then truncates this randomness with a...","description":"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.","status":"published","published":"2026-07-14T21:41:35.775Z","modified":"2026-07-25T18:23:59.613307985Z","cvss":[{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:47:19.003546Z"},{"id":"UBUNTU-CVE-2024-1544","description":"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.","status":"published","published":"2024-08-27T19:15:00Z","modified":"2026-10-17T12:56:28.16975479Z","cvss":[{"version":"3.1","score":4.1,"vector":"CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium"},{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T16:54:42.68848Z"}]}}
