External risk intelligence

jsrsasign RSA PKCS1 v1.5 Decryption Allows Ciphertext Modification

CVE advisorySeverity: CRITICAL (CVSS 9.8)

CVE-2020-14967

This is a cryptographic library for Node.js used by developers to build applications. While libraries themselves are not directly exposed, they are often integrated into public-facing web applications and APIs. The likelihood of exposure depends entirely on how the specific software implementation utilizes the library, making internet reachability possible but not inherent to the component.

Memory Corruption

Kjur Jsrsasign

before 8.0.18

Halo Surface Signal: 3 out of 5 — possibly public-facing.

External exposure likelihood

Horizon Alert

Summary of the vulnerability and why it matters

A vulnerability in a Node.js cryptographic library could allow attackers to modify data and potentially cause memory corruption. This impacts systems that rely on this library for secure operations.

  • Library can't detect data tampering.
  • Security flaws can lead to memory corruption.
  • Verify use and ensure library is updated.

Attack Path

How an attacker could exploit the issue

An attacker could target the jsrsasign package by sending specially crafted data over the network. If the package's RSA decryption function processes this data without properly validating it, the attacker may be able to cause memory corruption.

  • No special access required.
  • Vulnerable decryption function.
  • Memory corruption possible.

Live Threat

Current exploitation, exposure, and threat context

The jsrsasign package's RSA decryption could be tricked into processing modified ciphertexts by prepending null bytes. This could potentially lead to memory corruption issues when the library is used for cryptographic operations.

  • System memory could be corrupted.
  • Malicious input could alter ciphertext processing.
  • Unpredictable service behavior may occur.

Operational Fix

Recommended remediation, mitigation, and detection steps

For this critical vulnerability in the jsrsasign Node.js package, application owners or platform teams integrating this library are likely responsible for remediation. The first practical step is to inventory all applications using jsrsasign, identify which are internet-facing or business-critical, and then confirm the accountable owner for each instance. Planning for remediation should be based on this risk assessment, which may involve vendor coordination if the library is part of a third-party product.

  • Application owners should manage the issue.
  • Verify where the library is deployed.
  • Plan remediation based on risk.

Supplementary metadata

Validate whether this threat affects your internet-facing exposure.

Halo Threat Intelligence helps prioritize remediation with Halo Surface Signal and H/A/L/O context. Start exposure validation with a free external attack surface trial.

Frequently asked questions

What is the jsrsasign package?

jsrsasign is a cryptographic library built for the Node.js environment. Developers use it to handle security tasks like digital signatures, RSA encryption, and certificate management within their custom software. Because it is a foundational component, many different applications rely on it to process sensitive data, meaning its security integrity is vital for any software that incorporates its cryptographic functions.

What does CVE-2020-14967 mean for RSA decryption?

This vulnerability is classified as CWE-119, which involves improper restriction of operations within the bounds of a memory buffer. In this specific case, the library fails to verify the structure of ciphertexts during RSA PKCS1 v1.5 decryption. Because the software does not notice when extra null bytes are added to the input, it may attempt to process the malformed data in a way that leads to memory corruption, potentially disrupting the stability or security of the application.

How can an attacker trigger this vulnerability?

An attacker initiates this by sending specially prepared data to an application that uses the vulnerable library to decrypt information. The flaw is triggered specifically when the input has null bytes prepended to the ciphertext. It is important to note that sending standard, unmodified encrypted data does not trigger this memory corruption issue; the vulnerability requires that specific alteration of the input stream to bypass the library's flawed validation checks.

Is my application vulnerable according to Halo Surface Signal?

Halo Surface Signal notes that while the jsrsasign library is not inherently exposed by itself, your risk depends on how your software integrates it. If the library is used within applications that are internet-facing or process untrusted network input, the likelihood of an attacker interacting with this vulnerable decryption function increases. You should check if your public-facing APIs or web services rely on this library for handling incoming encrypted payloads.

What should I do if I use jsrsasign?

Your first step is to perform an inventory to locate all instances of the jsrsasign library within your environment. Once identified, determine which applications are critical or accessible via the network to prioritize your efforts. Because this is a library-level issue, remediation typically involves updating the package to version 8.0.18 or later, either by updating your own dependencies or coordinating with the vendors who maintain the products that include this component.

References