node-jose@0.9.1 vulnerabilities

A JavaScript implementation of the JSON Object Signing and Encryption (JOSE) for current web browsers and node.js-based servers

Direct Vulnerabilities

Known vulnerabilities in the node-jose package. This does not include vulnerabilities belonging to this package’s dependencies.

Automatically find and fix vulnerabilities affecting your projects. Snyk scans for vulnerabilities and provides fixes for free.
Fix for free
Vulnerability Vulnerable Version
  • H
Infinite loop

node-jose is a JavaScript implementation of the JSON Object Signing and Encryption (JOSE) for current web browsers and node.js-based servers.

Affected versions of this package are vulnerable to Infinite loop such that when using the non-default "fallback" crypto back-end, ECC operations in node-jose can trigger a Denial-of-Service (DoS) condition, due to a possible infinite loop in an internal calculation. For some ECC operations, this condition is triggered randomly; for others, it can be triggered by malicious input.

Impact: This issue is only present in situations where the "fallback" cryptographic implementation is being used, i.e., situations where neither WebCrypto nor the Node crypto module is available.

The following elliptic curve algorithms are impacted by this issue (all in lib/deps/ecc/index.js):

  1. Elliptic curve key generation (exports.generateKeyPair)

  2. Converting an elliptic curve private key to a public key (ECPrivateKey.prototype.toPublicKey)

  3. ECDSA signing (ECPrivateKey.prototype.sign)

  4. ECDSA verification (ECPublicKey.prototype.verify)

  5. ECDH key agreement (ECPrivateKey.prototype.computeSecret)

How to fix Infinite loop?

Upgrade node-jose to version 2.2.0 or higher.

<2.2.0
  • H
Insecure Token Validation

node-jose is a JavaScript implementation of the JSON Object Signing and Encryption (JOSE) for current web browsers and node.js-based servers.

A vulnerability in the Cisco node-jose open source library before 0.11.0 could allow an unauthenticated, remote attacker to re-sign tokens using a key that is embedded within the token. The vulnerability is due to node-jose following the JSON Web Signature (JWS) standard for JSON Web Tokens (JWTs). This standard specifies that a JSON Web Key (JWK) representing a public key can be embedded within the header of a JWS. This public key is then trusted for verification. An attacker could exploit this by forging valid JWS objects by removing the original signature, adding a new public key to the header, and then signing the object using the (attacker-owned) private key associated with the public key embedded in that JWS header.

<0.11.0
  • H
Elliptic Curve Key Disclosure

node-jose is A JavaScript implementation of the JSON Object Signing and Encryption (JOSE) for current web browsers and node.js-based servers.

Affected versions of the package are vulnerable to Elliptic Curve Key Disclosure.

A JSON Web Token (JWT) defines a container that transports data between two parties. When a JWT is signed with a private key by one of the parties, it's known as a JSON Web Signature (JWS).

The "JWK" (JSON Web Key) is a JSON based open standard used for creating access tokens. JWK's Header Parameter allows it to include the public key that corresponds to the key used to sign the JWS. If the Header Parameter includes this public key, an attacker could then use it to generate a private key / public key pair, send the public key together with the signature and the signature will be valid.

This vulnerability is related to SNYK-JAVA-ORGBITBUCKETBC-30206 and SNYK-JAVA-COMNIMBUSDS-30205

How to fix Elliptic Curve Key Disclosure?

Upgrade node-jose to version 0.9.3 or higher.

<0.9.3