Issue summary: Applications using RSASVE key encapsulation to establish a secret encryption key can send contents of an uninitialized memory buffer to a malicious peer.
Impact summary: The uninitialized buffer might contain sensitive data from the previous execution of the application process which leads to sensitive data leakage to an attacker.
RSA_public_encrypt() returns the number of bytes written on success and -1 on error. The affected code tests only whether the return value is non-zero. As a result, if RSA encryption fails, encapsulation can still return success to the caller, set the output lengths, and leave the caller to use the contents of the ciphertext buffer as if a valid KEM ciphertext had been produced.
If applications use EVP_PKEY_encapsulate() with RSA/RSASVE on an attacker-supplied invalid RSA public key without first validating that key, then this may cause stale or uninitialized contents of the caller-provided ciphertext buffer to be disclosed to the attacker in place of the KEM ciphertext.
As a workaround calling EVP_PKEY_public_check() or EVP_PKEY_public_check_quick() before EVP_PKEY_encapsulate() will mitigate the issue.
The FIPS modules in 3.6, 3.5, 3.4, 3.3, 3.1 and 3.0 are affected by this issue.
{
"cna_assigner": "openssl",
"cwe_ids": [
"CWE-754"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31790.json"
}{
"cpe": "cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*",
"extracted_events": [
{
"introduced": "3.0.0"
},
{
"fixed": "3.0.20"
},
{
"introduced": "3.3.0"
},
{
"fixed": "3.3.7"
},
{
"introduced": "3.4.0"
},
{
"fixed": "3.4.5"
},
{
"introduced": "3.5.0"
},
{
"fixed": "3.5.6"
},
{
"introduced": "3.6.0"
},
{
"fixed": "3.6.2"
}
],
"source": [
"CPE_RANGE",
"REFERENCES"
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31790.json"
[
{
"deprecated": false,
"digest": {
"function_hash": "189542578001022051844638676180069418852",
"length": 815
},
"id": "CVE-2026-31790-018ce97e",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/d5f8e71cd0a54e961d0c3b174348f8308486f790",
"target": {
"file": "providers/implementations/kem/rsa_kem.c",
"function": "rsasve_generate"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"278196644910020378797877326289562716464",
"128347082521489651704136040653285145470",
"52209736684511955497537762942657051729",
"142213326511995995366934168172526029934",
"3123676691629820969540701266136695106",
"87606255750554511681517734874131183189",
"145012507772233658079047458768781416199",
"303537148589549380972349267515809788322",
"189943355530216116721748686226778704218",
"162922700271686436107402731224121909713",
"338343483140302614182963625022660953531",
"174900505482554411594506357522639767296",
"289381205478540363242016959369444210059",
"212692919502018645166428121117180913811"
],
"threshold": 0.9
},
"id": "CVE-2026-31790-59f13f0b",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/eed200f58cd8645ed77e46b7e9f764e284df379e",
"target": {
"file": "providers/implementations/kem/rsa_kem.c"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"278196644910020378797877326289562716464",
"128347082521489651704136040653285145470",
"52209736684511955497537762942657051729",
"142213326511995995366934168172526029934",
"3123676691629820969540701266136695106",
"87606255750554511681517734874131183189",
"145012507772233658079047458768781416199",
"303537148589549380972349267515809788322",
"189943355530216116721748686226778704218",
"162922700271686436107402731224121909713",
"338343483140302614182963625022660953531",
"174900505482554411594506357522639767296",
"289381205478540363242016959369444210059",
"212692919502018645166428121117180913811"
],
"threshold": 0.9
},
"id": "CVE-2026-31790-8c11327b",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/001e01db3e996e13ffc72386fe79d03a6683b5ac",
"target": {
"file": "providers/implementations/kem/rsa_kem.c"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"278196644910020378797877326289562716464",
"128347082521489651704136040653285145470",
"52209736684511955497537762942657051729",
"142213326511995995366934168172526029934",
"3123676691629820969540701266136695106",
"87606255750554511681517734874131183189",
"145012507772233658079047458768781416199",
"303537148589549380972349267515809788322",
"189943355530216116721748686226778704218",
"162922700271686436107402731224121909713",
"338343483140302614182963625022660953531",
"174900505482554411594506357522639767296",
"289381205478540363242016959369444210059",
"212692919502018645166428121117180913811"
],
"threshold": 0.9
},
"id": "CVE-2026-31790-9104c8e6",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/d5f8e71cd0a54e961d0c3b174348f8308486f790",
"target": {
"file": "providers/implementations/kem/rsa_kem.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "189542578001022051844638676180069418852",
"length": 815
},
"id": "CVE-2026-31790-b7501cc3",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/eed200f58cd8645ed77e46b7e9f764e284df379e",
"target": {
"file": "providers/implementations/kem/rsa_kem.c",
"function": "rsasve_generate"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "189542578001022051844638676180069418852",
"length": 815
},
"id": "CVE-2026-31790-ba26f35f",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/b922e24e5b23ffb9cb9e14cadff23d91e9f7e406",
"target": {
"file": "providers/implementations/kem/rsa_kem.c",
"function": "rsasve_generate"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "189542578001022051844638676180069418852",
"length": 815
},
"id": "CVE-2026-31790-bce81a11",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/001e01db3e996e13ffc72386fe79d03a6683b5ac",
"target": {
"file": "providers/implementations/kem/rsa_kem.c",
"function": "rsasve_generate"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"278196644910020378797877326289562716464",
"128347082521489651704136040653285145470",
"52209736684511955497537762942657051729",
"142213326511995995366934168172526029934",
"3123676691629820969540701266136695106",
"87606255750554511681517734874131183189",
"145012507772233658079047458768781416199",
"303537148589549380972349267515809788322",
"189943355530216116721748686226778704218",
"162922700271686436107402731224121909713",
"338343483140302614182963625022660953531",
"174900505482554411594506357522639767296",
"289381205478540363242016959369444210059",
"212692919502018645166428121117180913811"
],
"threshold": 0.9
},
"id": "CVE-2026-31790-e2fd0c60",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/openssl/openssl/commit/b922e24e5b23ffb9cb9e14cadff23d91e9f7e406",
"target": {
"file": "providers/implementations/kem/rsa_kem.c"
}
}
]
"2026-08-12T15:32:18Z"