Every CVE Search/ Get API key

CVE-2016-10555

Forgeable Public/Private Tokens in jwt-simple

6.5 MediumPublic exploitFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
High
Availability
None

Exploit likelihood

4.82%Down 1.9 points since Feb 4, 2022
90%50%10%1%

What each source reports

NVD Score used 6.5

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.

Record
CVE-2016-10555
CVSS 3.0
6.5 MediumCVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
CVSS 2.0
4.0 MediumAV:N/AC:L/Au:S/C:N/I:P/A:N
Weakness
CWE-20, CWE-310
Updated
2026-11-02
CVE List No score

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.

Record
CVE-2016-10555
Weakness
CWE-20
Updated
2026-11-02
EUVDEUVD-2018-0779 No score

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.

Record
EUVD-2018-0779
Updated
2026-11-03
GitHub AdvisoriesGHSA-vgrx-w6rg-8fqf No score

Forgeable Public/Private Tokens in jwt-simple

Affected versions of the jwt-simple package allow users to select what algorithm the server will use to verify a provided JWT. A malicious actor can use this behaviour to arbitrarily modify the contents of a JWT while still passing verification. For the common use case of the JWT, the end result is a complete authentication bypass with minimal effort.

Recommendation

Update to version 0.3.1 or later.

Additionally, be sure to always specify an algorithm in calls to .decode().

Record
GHSA-vgrx-w6rg-8fqf
Weakness
CWE-20
Updated
2026-11-02
OSV 6.5

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.

Record
CVE-2016-10555
CVSS 3.0
6.5 MediumCVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
Updated
2026-11-02
OSVGHSA-vgrx-w6rg-8fqf No score

Forgeable Public/Private Tokens in jwt-simple

Affected versions of the jwt-simple package allow users to select what algorithm the server will use to verify a provided JWT. A malicious actor can use this behaviour to arbitrarily modify the contents of a JWT while still passing verification. For the common use case of the JWT, the end result is a complete authentication bypass with minimal effort.

Recommendation

Update to version 0.3.1 or later.

Additionally, be sure to always specify an algorithm in calls to .decode().

Record
GHSA-vgrx-w6rg-8fqf
Weakness
CWE-20
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
jwt-simple
npm
before 0.3.1
0.3.1

Public exploits

Links only. Every CVE stores no exploit code.

Public exploits
SourceLinkDate
PoC in GitHubCircuitSoul/poc-cve-2016-105552021-06-14
PoC in GitHubscent2d/PoC-CVE-2016-105552022-01-02
PoC in GitHubz-bool/Venom-JWT2025-01-27

History

History
RecordedChangedSources
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV, PoC in GitHub

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2016-10555 is a medium vulnerability (CVSS 6.5) in Jwt-simple Project Jwt-simple, published May 31, 2018. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 4.82%, the 92nd percentile. Fixed in jwt-simple 0.3.1.

References

MoveEnter Open