CVE-2020-14967
Description
An issue was discovered in the jsrsasign package before 8.0.18 for Node.js. Its RSA PKCS1 v1.5 decryption implementation does not detect ciphertext modification by prepending '\0' bytes to ciphertexts (it decrypts modified ciphertexts without error). An attacker might prepend these bytes with the goal of triggering memory corruption issues.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
CVE-2020-14967 is a flaw in jsrsasign < 8.0.18 where RSA PKCS1 v1.5 decryption does not detect prepended null bytes, enabling ciphertext modification and potential memory corruption.
Vulnerability
Overview
CVE-2020-14967 affects the jsrsasign cryptographic library for Node.js [1]. The RSA PKCS1 v1.5 decryption function fails to detect ciphertext modification when an attacker prepends \0 bytes to a legitimate ciphertext. The library will accept and decrypt the altered ciphertext without raising an error, which violates the strictness expected of a secure PKCS1-v1.5 implementation [2].
Exploitation
Scenario
An adversary can take a valid RSA-encrypted ciphertext, prepend one or more null bytes, and then feed that modified blob into the decryption routine. Because the library does not check for leading zero bytes, it proceeds with decryption as if the input were well-formed [2]. This kind of manipulation does not require network access to encrypted channels if the attacker can supply crafted ciphertexts to an application using the vulnerable library. The attack surface is any Node.js service that uses jsrsasign for RSA decryption and accepts external ciphertext input.
Impact
The primary impact is the bypass of ciphertext integrity checks. An attacker might use this primitive to trigger memory corruption or other undefined behavior in the decryption process [1]. While the vendor notes that the Marvin attack (a timing side-channel against PKCS#1 v1.5) is a separate concern, the acceptance of malformed ciphertexts undermines the security properties of RSA encryption as specified in RFC 8017 [2].
Mitigation
The issue is fixed in jsrsasign version 8.0.18 and later [1]. Users should upgrade immediately. The library removed RSA and RSAOAEP encryption/decryption support in version 11.0.0 precisely because of Marvin attack vulnerability [3]. The project is scheduled for end-of-life on 3 June 2026 [4]; users are encouraged to migrate to alternative cryptographic libraries that offer modern, side-channel-resistant RSA schemes.
- NVD - CVE-2020-14967
- The RSA PKCS1 v1.5 decryption implementation does not detect ciphertext modification (prepended 0's bytes to the ciphertext)
- jsrsasign JavaScript API Reference - KJUR.crypto.Cipher
- GitHub - kjur/jsrsasign: CAUTION: END OF SUPPORT ON 3 JUN 2026. The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free cryptography library supporting RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, OCSP, CMS SignedData, TimeStamp, CAdES and JSON Web Signature/Token in pure JavaScript.
AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
jsrsasignnpm | < 8.0.18 | 8.0.18 |
Affected products
2- jsrsasign/jsrsasigndescription
Patches
0No patches discovered yet.
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
14- github.com/advisories/GHSA-xxxq-chmp-67g4ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2020-14967ghsaADVISORY
- cve.mitre.org/cgi-bin/cvename.cgighsaWEB
- github.com/kjur/jsrsasign/issues/439ghsax_refsource_MISCWEB
- github.com/kjur/jsrsasign/releases/tag/8.0.17ghsax_refsource_MISCWEB
- github.com/kjur/jsrsasign/releases/tag/8.0.18ghsax_refsource_MISCWEB
- github.com/kjur/jsrsasign/security/advisories/GHSA-xxxq-chmp-67g4ghsaWEB
- kjur.github.io/jsrsasignghsaWEB
- kjur.github.io/jsrsasign/mitrex_refsource_MISC
- kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.Cipher.htmlghsaWEB
- security.netapp.com/advisory/ntap-20200724-0001ghsaWEB
- security.netapp.com/advisory/ntap-20200724-0001/mitrex_refsource_CONFIRM
- vuldb.comghsaWEB
- www.npmjs.com/package/jsrsasignghsax_refsource_MISCWEB
News mentions
0No linked articles in our index yet.