Skip to content
Heist/ feed
Back to feed
Medium

Security advisory

Type: advisorySources: OSVCVE: CVE-2016-10555

Since "algorithm" isn't enforced in jwt.decode()in jwt-simple 0.3.0 and earlier, a malicious user could choose what algorithm is sent sent to the server. If the server is expecting RSA but is sent HMAC-SHA with RSA's public key, the server will think the public key is actually an HMAC private key. This could be used to forge any data an attacker wants.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2016-10555
Confirmed fixed CVEs
Not specified
Updated in this feed
31 Oct 2026, 09:38 UTC · Revision 1

Source evidence

CVE-2016-10555

core-osv · Original source

Published 31 May 2018, 20:29 UTC

Since "algorithm" isn't enforced in jwt.decode()in jwt-simple 0.3.0 and earlier, a malicious user could choose what algorithm is sent sent to the server. If the server is expecting RSA but is sent HMAC-SHA with RSA's public key, the server will think the public key is actually an HMAC private key. This could be used to forge any data an attacker wants.

osv:CVE-2016-10555
Complete source record
{
  "id": "78f2c98744a0f927a43373a5afb1cee546b3db727a2ec652156d0fe05c412336",
  "url": "https://osv.dev/vulnerability/CVE-2016-10555",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "CVE-2016-10555",
    "summary": "Since \"algorithm\" isn't enforced in jwt.decode()in jwt-simple 0.3.0 and earlier, a malicious user could choose what algorithm is sent sent to the server. If the server is expecting RSA but is sent HMAC-SHA with RSA's public key, the server will think the public key is actually an HMAC private key. This could be used to forge any data an attacker wants.",
    "evidence": "osv:CVE-2016-10555",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2016-10555",
      "aliases": [
        "CVE-2016-10555",
        "GHSA-vgrx-w6rg-8fqf"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/hokaccha/node-jwt-simple",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "last_affected": "3977b63548f466c8f2bdf4d881e1ed957dc23589"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:jwt-simple_project:jwt-simple:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "last_affected": "0.3.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.3.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2016-10555.json"
          }
        }
      ],
      "modified": "2026-10-20T10:47:13.524361823Z",
      "provider": "osv",
      "references": [
        "https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/",
        "https://nodesecurity.io/advisories/87",
        "https://github.com/hokaccha/node-jwt-simple/pull/14",
        "https://github.com/hokaccha/node-jwt-simple/pull/16"
      ],
      "provider_metadata": {}
    },
    "related_cves": [
      {
        "value": "CVE-2016-10555",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 379354,
  "published_at": "2018-05-31T20:29:02.067+00:00"
}