{"id":"CVE-2020-14968","aliases":["EUVD-2020-0507","GHSA-q3gh-5r98-j4h3"],"status":"published","title":"RSA-PSS signature validation vulnerability by prepending zeros in jsrsasign","description":"An issue was discovered in the jsrsasign package before 8.0.17 for Node.js. Its RSASSA-PSS (RSA-PSS) implementation does not detect signature manipulation/modification by prepending '\\0' bytes to a signature (it accepts these modified signatures as valid). An attacker can abuse this behavior in an application by creating multiple valid signatures where only one signature should exist. Also, an attacker might prepend these bytes with the goal of triggering memory corruption issues.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-09","score":0.02935,"percentile":0.87195,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-119"],"published":"2020-06-22T11:19:49Z","modified":"2026-10-20T10:51:51Z","fixes":[{"ecosystem":"npm","package":"jsrsasign","fixed_in":["8.0.16","8.0.17"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"jsrsasign","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.0.0"},{"fixed":"8.0.16"}]}]},{"source":"osv","ecosystem":"npm","package":"jsrsasign","ranges":[{"type":"SEMVER","events":[{"introduced":"3.0.0"},{"fixed":"8.0.17"}]}]}],"products":[{"vendor":"kjur","product":"jsrsasign"},{"vendor":"netapp","product":"max_data"}],"references":[{"url":"https://kjur.github.io/jsrsasign/","tags":["x_refsource_MISC","x_transferred","Release Notes","Third Party Advisory","advisory"]},{"url":"https://www.npmjs.com/package/jsrsasign","tags":["x_refsource_MISC","x_transferred","Product","Third Party Advisory","advisory","web"]},{"url":"https://github.com/kjur/jsrsasign/releases/tag/8.0.18","tags":["x_refsource_MISC","x_transferred","Release Notes","Third Party Advisory","advisory","web"]},{"url":"https://github.com/kjur/jsrsasign/releases/tag/8.0.17","tags":["x_refsource_MISC","x_transferred","Release Notes","Third Party Advisory","advisory","web"]},{"url":"https://github.com/kjur/jsrsasign/issues/438","tags":["x_refsource_MISC","x_transferred","Exploit","Issue Tracking","Third Party Advisory","report","web"]},{"url":"https://security.netapp.com/advisory/ntap-20200724-0001/","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory"]},{"url":"https://github.com/kjur/jsrsasign/security/advisories/GHSA-q3gh-5r98-j4h3","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-14968","tags":["advisory"]},{"url":"https://github.com/kjur/jsrsasign/commit/3bcc088c727658d7235854cd2a409a904cc2ce99","tags":["web"]},{"url":"https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-14968","tags":["web"]},{"url":"https://kjur.github.io/jsrsasign/api/symbols/RSAKey.html#.verifyWithMessageHashPSS","tags":["web"]},{"url":"https://vuldb.com/?id.157125","tags":["web"]},{"url":"https://www.npmjs.com/advisories/1541","tags":["web"]},{"url":"https://github.com/advisories/GHSA-q3gh-5r98-j4h3"},{"url":"https://github.com/kjur/jsrsasign","tags":["package"]},{"url":"https://kjur.github.io/jsrsasign","tags":["web"]},{"url":"https://security.netapp.com/advisory/ntap-20200724-0001","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2020-14968","description":"An issue was discovered in the jsrsasign package before 8.0.17 for Node.js. Its RSASSA-PSS (RSA-PSS) implementation does not detect signature manipulation/modification by prepending '\\0' bytes to a signature (it accepts these modified signatures as valid). An attacker can abuse this behavior in an application by creating multiple valid signatures where only one signature should exist. Also, an attacker might prepend these bytes with the goal of triggering memory corruption issues.","status":"published","published":"2020-06-22T11:19:49Z","modified":"2024-08-04T13:00:52.147Z","updated_at":"2026-11-02T14:35:46.476719Z"}],"euvd":[{"id":"EUVD-2020-0507","description":"An issue was discovered in the jsrsasign package before 8.0.17 for Node.js. Its RSASSA-PSS (RSA-PSS) implementation does not detect signature manipulation/modification by prepending '\\0' bytes to a signature (it accepts these modified signatures as valid). An attacker can abuse this behavior in an application by creating multiple valid signatures where only one signature should exist. Also, an attacker might prepend these bytes with the goal of triggering memory corruption issues.","status":"published","published":"2020-06-22T11:19:49Z","modified":"2024-08-04T13:00:52Z","updated_at":"2026-11-03T03:07:33.617168Z"}],"ghsa":[{"id":"GHSA-q3gh-5r98-j4h3","title":"RSA-PSS signature validation vulnerability by prepending zeros in jsrsasign","description":"### Impact\nJsrsasign can verify RSA-PSS signature which value can expressed as BigInteger. When there is a valid RSA-PSS signature value, this vulnerability is also accept value with prepending zeros as a valid signature.\n\n- If you are not use RSA-PSS signature validation, this vulnerability is not affected. \n- Risk to accept a forged or crafted message to be signed is low.\n- Risk to raise memory corruption is low since jsrsasign uses BigInteger class.\n\n### Patches\nUsers using RSA-PSS signature validation should upgrade to 8.0.17.\n\n### Workarounds\nReject RSA-PSS signatures with unnecessary prepending zeros.\n\n### References\nhttps://github.com/kjur/jsrsasign/security/advisories/GHSA-q3gh-5r98-j4h3\n[https://github.com/kjur/jsrsasign/issues/438](https://github.com/kjur/jsrsasign/issues/438)\nhttps://nvd.nist.gov/vuln/detail/CVE-2020-14968\nhttps://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-14968\nhttps://vuldb.com/?id.157125\nhttps://kjur.github.io/jsrsasign/api/symbols/RSAKey.html#.verifyWithMessageHashPSS\n\n","status":"published","published":"2020-06-26T16:26:50Z","modified":"2023-01-27T21:41:16Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-119"],"updated_at":"2026-11-02T14:36:22.592333Z"}],"nvd":[{"id":"CVE-2020-14968","description":"An issue was discovered in the jsrsasign package before 8.0.17 for Node.js. Its RSASSA-PSS (RSA-PSS) implementation does not detect signature manipulation/modification by prepending '\\0' bytes to a signature (it accepts these modified signatures as valid). An attacker can abuse this behavior in an application by creating multiple valid signatures where only one signature should exist. Also, an attacker might prepend these bytes with the goal of triggering memory corruption issues.","status":"published","published":"2020-06-22T12:15:10.227Z","modified":"2026-06-22T03:18:31.867Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-119"],"updated_at":"2026-11-02T14:06:07.249892Z"}],"osv":[{"id":"CVE-2020-14968","description":"An issue was discovered in the jsrsasign package before 8.0.17 for Node.js. Its RSASSA-PSS (RSA-PSS) implementation does not detect signature manipulation/modification by prepending '\\0' bytes to a signature (it accepts these modified signatures as valid). An attacker can abuse this behavior in an application by creating multiple valid signatures where only one signature should exist. Also, an attacker might prepend these bytes with the goal of triggering memory corruption issues.","status":"published","published":"2020-06-22T12:15:10.227Z","modified":"2026-10-20T10:51:51.951552694Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:14.418339Z"},{"id":"GHSA-q3gh-5r98-j4h3","title":"RSA-PSS signature validation vulnerability by prepending zeros in jsrsasign","description":"### Impact\nJsrsasign can verify RSA-PSS signature which value can expressed as BigInteger. When there is a valid RSA-PSS signature value, this vulnerability is also accept value with prepending zeros as a valid signature.\n\n- If you are not use RSA-PSS signature validation, this vulnerability is not affected. \n- Risk to accept a forged or crafted message to be signed is low.\n- Risk to raise memory corruption is low since jsrsasign uses BigInteger class.\n\n### Patches\nUsers using RSA-PSS signature validation should upgrade to 8.0.17.\n\n### Workarounds\nReject RSA-PSS signatures with unnecessary prepending zeros.\n\n### References\nhttps://github.com/kjur/jsrsasign/security/advisories/GHSA-q3gh-5r98-j4h3\n[https://github.com/kjur/jsrsasign/issues/438](https://github.com/kjur/jsrsasign/issues/438)\nhttps://nvd.nist.gov/vuln/detail/CVE-2020-14968\nhttps://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-14968\nhttps://vuldb.com/?id.157125\nhttps://kjur.github.io/jsrsasign/api/symbols/RSAKey.html#.verifyWithMessageHashPSS\n\n","status":"published","published":"2020-06-26T16:26:50Z","modified":"2023-11-08T04:02:28.196189Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-119"],"updated_at":"2026-11-02T15:46:54.055966Z"}]}}
