CVE-2026-22698

Source
https://cve.org/CVERecord?id=CVE-2026-22698
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-22698.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-22698
Aliases
Published
2026-01-10T05:17:19.993Z
Modified
2026-07-15T01:49:14.521879448Z
Severity
  • 8.7 (High) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N CVSS Calculator
Summary
RustCrypto SM2-PKE has 32-bit Biased Nonce Vulnerability
Details

RustCrypto: Elliptic Curves is general purpose Elliptic Curve Cryptography (ECC) support, including types and traits for representing various elliptic curve forms, scalars, points, and public/secret keys composed thereof. In versions 0.14.0-pre.0 and 0.14.0-rc.0, a critical vulnerability exists in the SM2 Public Key Encryption (PKE) implementation where the ephemeral nonce k is generated with severely reduced entropy. A unit mismatch error causes the nonce generation function to request only 32 bits of randomness instead of the expected 256 bits. This reduces the security of the encryption from a 128-bit level to a trivial 16-bit level, allowing a practical attack to recover the nonce k and decrypt any ciphertext given only the public key and ciphertext. This issue has been patched via commit e4f7778.

Database specific
{
    "cwe_ids": [
        "CWE-331"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22698.json",
    "cna_assigner": "GitHub_M"
}
References

Affected packages

Git / github.com/rustcrypto/elliptic-curves

Affected ranges

Type
GIT
Repo
https://github.com/rustcrypto/elliptic-curves
Events
Database specific
{
    "cpe": "cpe:2.3:a:rustcrypto:sm2_elliptic_curve:0.14.0:pre0:*:*:*:rust:*:*",
    "extracted_events": [
        {
            "introduced": "0.14.0-pre0"
        },
        {
            "last_affected": "0.14.0-pre0"
        }
    ],
    "source": [
        "CPE_STRING",
        "REFERENCES"
    ]
}

Affected versions

0.*
0.14.0-pre0
= 0.*
= 0.14.0-pre.0
= 0.14.0-rc.0
bignp256/v0.*
bignp256/v0.14.0-pre.0
bignp256/v0.14.0-rc.0
bignp256/v0.14.0-rc.1
bignp256/v0.14.0-rc.2
bignp256/v0.14.0-rc.3
bignp256/v0.14.0-rc.4
bp256/v0.*
bp256/v0.14.0-pre.0
bp256/v0.14.0-rc.0
bp256/v0.14.0-rc.1
bp256/v0.14.0-rc.2
bp256/v0.14.0-rc.3
bp256/v0.14.0-rc.4
bp384/v0.*
bp384/v0.14.0-pre.0
bp384/v0.14.0-rc.0
bp384/v0.14.0-rc.1
bp384/v0.14.0-rc.2
bp384/v0.14.0-rc.3
bp384/v0.14.0-rc.4
ed448-goldilocks/v0.*
ed448-goldilocks/v0.14.0-pre.0
ed448-goldilocks/v0.14.0-pre.1
ed448-goldilocks/v0.14.0-pre.2
ed448-goldilocks/v0.14.0-pre.3
ed448-goldilocks/v0.14.0-pre.4
ed448-goldilocks/v0.14.0-pre.5
ed448-goldilocks/v0.14.0-pre.6
ed448-goldilocks/v0.14.0-pre.7
hash2curve/v0.*
hash2curve/v0.14.0-rc.0
hash2curve/v0.14.0-rc.1
hash2curve/v0.14.0-rc.2
hash2curve/v0.14.0-rc.3
hash2curve/v0.14.0-rc.4
hash2curve/v0.14.0-rc.5
hash2curve/v0.14.0-rc.6
hash2curve/v0.14.0-rc.7
k256/v0.*
k256/v0.14.0-pre.1
k256/v0.14.0-pre.10
k256/v0.14.0-pre.11
k256/v0.14.0-pre.2
k256/v0.14.0-pre.3
k256/v0.14.0-pre.4
k256/v0.14.0-pre.5
k256/v0.14.0-pre.6
k256/v0.14.0-pre.7
k256/v0.14.0-pre.8
k256/v0.14.0-pre.9
k256/v0.14.0-rc.0
k256/v0.14.0-rc.1
k256/v0.14.0-rc.2
k256/v0.14.0-rc.3
k256/v0.14.0-rc.4
p192/v0.*
p192/v0.14.0-rc.0
p192/v0.14.0-rc.1
p192/v0.14.0-rc.2
p192/v0.14.0-rc.3
p192/v0.14.0-rc.4
p224/v0.*
p224/v0.14.0-rc.0
p224/v0.14.0-rc.1
p224/v0.14.0-rc.2
p224/v0.14.0-rc.3
p224/v0.14.0-rc.4
p256/v0.*
p256/v0.14.0-pre.1
p256/v0.14.0-pre.10
p256/v0.14.0-pre.11
p256/v0.14.0-pre.2
p256/v0.14.0-pre.3
p256/v0.14.0-pre.4
p256/v0.14.0-pre.5
p256/v0.14.0-pre.6
p256/v0.14.0-pre.7
p256/v0.14.0-pre.8
p256/v0.14.0-pre.9
p256/v0.14.0-rc.0
p256/v0.14.0-rc.1
p256/v0.14.0-rc.2
p256/v0.14.0-rc.3
p256/v0.14.0-rc.4
p384/v0.*
p384/v0.14.0-pre.1
p384/v0.14.0-pre.10
p384/v0.14.0-pre.11
p384/v0.14.0-pre.2
p384/v0.14.0-pre.3
p384/v0.14.0-pre.4
p384/v0.14.0-pre.5
p384/v0.14.0-pre.6
p384/v0.14.0-pre.7
p384/v0.14.0-pre.8
p384/v0.14.0-pre.9
p384/v0.14.0-rc.0
p384/v0.14.0-rc.1
p384/v0.14.0-rc.2
p384/v0.14.0-rc.3
p384/v0.14.0-rc.4
p521/v0.*
p521/v0.14.0-pre.1
p521/v0.14.0-pre.10
p521/v0.14.0-pre.11
p521/v0.14.0-pre.2
p521/v0.14.0-pre.3
p521/v0.14.0-pre.4
p521/v0.14.0-pre.5
p521/v0.14.0-pre.6
p521/v0.14.0-pre.7
p521/v0.14.0-pre.8
p521/v0.14.0-pre.9
p521/v0.14.0-rc.0
p521/v0.14.0-rc.1
p521/v0.14.0-rc.2
p521/v0.14.0-rc.3
p521/v0.14.0-rc.4
primefield/v0.*
primefield/v0.14.0-pre.0
primefield/v0.14.0-pre.1
primefield/v0.14.0-pre.2
primefield/v0.14.0-pre.3
primefield/v0.14.0-pre.4
primefield/v0.14.0-pre.5
primefield/v0.14.0-pre.6
primefield/v0.14.0-rc.0
primefield/v0.14.0-rc.1
primefield/v0.14.0-rc.2
primefield/v0.14.0-rc.3
primefield/v0.14.0-rc.4
primeorder/v0.*
primeorder/v0.14.0-pre.1
primeorder/v0.14.0-pre.2
primeorder/v0.14.0-pre.3
primeorder/v0.14.0-pre.4
primeorder/v0.14.0-pre.5
primeorder/v0.14.0-pre.6
primeorder/v0.14.0-pre.7
primeorder/v0.14.0-pre.8
primeorder/v0.14.0-pre.9
primeorder/v0.14.0-rc.0
primeorder/v0.14.0-rc.1
primeorder/v0.14.0-rc.2
primeorder/v0.14.0-rc.3
primeorder/v0.14.0-rc.4
sm2/v0.*
sm2/v0.14.0-pre.0
sm2/v0.14.0-rc.0
sm2/v0.14.0-rc.1
sm2/v0.14.0-rc.2
sm2/v0.14.0-rc.3
sm2/v0.14.0-rc.4
x448/v0.*
x448/v0.14.0-pre.0
x448/v0.14.0-pre.1
x448/v0.14.0-pre.2
x448/v0.14.0-pre.3
x448/v0.14.0-pre.4

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-22698.json"