{"id":"CVE-2019-9155","aliases":["EUVD-2019-0626","GHSA-77jf-fjjf-xcww"],"status":"published","title":"Invalid Curve Attack in openpgp","description":"A cryptographic issue in OpenPGP.js \u003c=4.2.0 allows an attacker who is able provide forged messages and gain feedback about whether decryption of these messages succeeded to conduct an invalid curve attack in order to gain the victim's ECDH private key.","severity":{"version":"3.0","score":5.9,"vector":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-06","score":0.01709,"percentile":0.77432,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-327"],"published":"2019-08-22T15:48:57Z","modified":"2026-10-20T10:50:03Z","fixes":[{"ecosystem":"npm","package":"openpgp","fixed_in":["4.3.0"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"openpgp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.3.0"}]}]},{"source":"osv","ecosystem":"npm","package":"openpgp","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"4.3.0"}]}]}],"products":[{"vendor":"openpgpjs","product":"openpgpjs"}],"references":[{"url":"https://sec-consult.com/en/blog/advisories/multiple-vulnerabilities-in-openpgp-js/","tags":["x_refsource_MISC","x_transferred","Exploit","Third Party Advisory","evidence"]},{"url":"https://www.bsi.bund.de/SharedDocs/Downloads/EN/BSI/Publications/Studies/Mailvelope_Extensions/Mailvelope_Extensions_pdf.html#download=1","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/openpgpjs/openpgpjs/releases/tag/v4.3.0","tags":["x_refsource_CONFIRM","x_transferred","Release Notes","advisory","web"]},{"url":"https://github.com/openpgpjs/openpgpjs/pull/853","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://github.com/openpgpjs/openpgpjs/pull/853/commits/7ba4f8c655e7fd7706e8d7334e44b40fdf56c43e","tags":["x_refsource_CONFIRM","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"http://packetstormsecurity.com/files/154191/OpenPGP.js-4.2.0-Signature-Bypass-Invalid-Curve-Attack.html","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","VDB Entry","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2019-9155","tags":["advisory"]},{"url":"https://snyk.io/vuln/SNYK-JS-OPENPGP-460225","tags":["web"]},{"url":"https://www.npmjs.com/advisories/1159","tags":["web"]},{"url":"https://github.com/advisories/GHSA-77jf-fjjf-xcww"},{"url":"https://sec-consult.com/en/blog/advisories/multiple-vulnerabilities-in-openpgp-js","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2019-9155","description":"A cryptographic issue in OpenPGP.js \u003c=4.2.0 allows an attacker who is able provide forged messages and gain feedback about whether decryption of these messages succeeded to conduct an invalid curve attack in order to gain the victim's ECDH private key.","status":"published","published":"2019-08-22T15:48:57Z","modified":"2024-08-04T21:38:46.575Z","updated_at":"2026-11-02T14:20:20.081405Z"}],"euvd":[{"id":"EUVD-2019-0626","description":"A cryptographic issue in OpenPGP.js \u003c=4.2.0 allows an attacker who is able provide forged messages and gain feedback about whether decryption of these messages succeeded to conduct an invalid curve attack in order to gain the victim's ECDH private key.","status":"published","published":"2019-08-22T15:48:57Z","modified":"2024-08-04T21:38:46Z","updated_at":"2026-11-03T03:06:40.408517Z"}],"ghsa":[{"id":"GHSA-77jf-fjjf-xcww","title":"Invalid Curve Attack in openpgp","description":"Versions of `openpgp` prior to 4.3.0 are vulnerable to an Invalid Curve Attack. The package's implementation of ECDH fails to verify the validity of the communication partner's public key. The package calculates the resulting key secret based on an altered curve instead of the specified elliptic curve. Attackers may exfiltrate the victim's private key by choosing the altered curve. An attack requires the attacker being able to initiate message decryption and record the result. Furthermore the victim's key must offer an ECDH public key.\n\n\n## Recommendation\n\nUpgrade to version 4.3.0 or later.\nIf you are upgrading from a version \u003c4.0.0 it is highly recommended to read the `High-Level API Changes` section of the `openpgp` 4.0.0 release: https://github.com/openpgpjs/openpgpjs/releases/tag/v4.0.0","status":"published","published":"2019-08-23T21:42:22Z","modified":"2023-02-01T05:02:35Z","cvss":[{"version":"3.0","score":5.9,"vector":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-327"],"updated_at":"2026-11-02T14:36:30.61364Z"}],"nvd":[{"id":"CVE-2019-9155","description":"A cryptographic issue in OpenPGP.js \u003c=4.2.0 allows an attacker who is able provide forged messages and gain feedback about whether decryption of these messages succeeded to conduct an invalid curve attack in order to gain the victim's ECDH private key.","status":"published","published":"2019-08-22T16:15:10.54Z","modified":"2026-06-17T02:43:09.943Z","cvss":[{"version":"3.0","score":5.9,"vector":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"primary"},{"version":"2.0","score":4.3,"vector":"AV:N/AC:M/Au:N/C:P/I:N/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-327"],"updated_at":"2026-11-02T14:05:23.725587Z"}],"osv":[{"id":"CVE-2019-9155","description":"A cryptographic issue in OpenPGP.js \u003c=4.2.0 allows an attacker who is able provide forged messages and gain feedback about whether decryption of these messages succeeded to conduct an invalid curve attack in order to gain the victim's ECDH private key.","status":"published","published":"2019-08-22T16:15:10.54Z","modified":"2026-10-20T10:50:03.802727446Z","cvss":[{"version":"3.0","score":5.9,"vector":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:12.974481Z"},{"id":"GHSA-77jf-fjjf-xcww","title":"Invalid Curve Attack in openpgp","description":"Versions of `openpgp` prior to 4.3.0 are vulnerable to an Invalid Curve Attack. The package's implementation of ECDH fails to verify the validity of the communication partner's public key. The package calculates the resulting key secret based on an altered curve instead of the specified elliptic curve. Attackers may exfiltrate the victim's private key by choosing the altered curve. An attack requires the attacker being able to initiate message decryption and record the result. Furthermore the victim's key must offer an ECDH public key.\n\n\n## Recommendation\n\nUpgrade to version 4.3.0 or later.\nIf you are upgrading from a version \u003c4.0.0 it is highly recommended to read the `High-Level API Changes` section of the `openpgp` 4.0.0 release: https://github.com/openpgpjs/openpgpjs/releases/tag/v4.0.0","status":"published","published":"2019-08-23T21:42:22Z","modified":"2023-11-08T04:01:46.733717Z","cvss":[{"version":"3.0","score":5.9,"vector":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-327"],"updated_at":"2026-11-02T15:46:40.657155Z"}]}}
