Insecure Token Validation

Affecting node-jose package, versions <0.11.0

Do your applications use this vulnerable package? Test your applications

Overview

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.

References

CVSS Score

7.1
high severity
  • Attack Vector
    Adjacent
  • Attack Complexity
    Low
  • Privileges Required
    None
  • User Interaction
    None
  • Scope
    Unchanged
  • Confidentiality
    Low
  • Integrity
    High
  • Availability
    None
CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N/E:H/RL:O/RC:R
Credit
Unknown
CVE
CVE-2018-0114
CWE
CWE-347
Snyk ID
npm:node-jose:20171222
Disclosed
22 Dec, 2017
Published
10 Jan, 2018