CVE-2016-10555
MEDIUMjwt-simple < 0.3.0 - Unauthenticated Algorithm Substitution via jwt.decode()
Title source: llmExploitation Summary
EIP tracks 3 public exploits for CVE-2016-10555. PoCs published by z-bool, CircuitSoul, scent2d.
AI-analyzed exploit summary This repository contains a Go-based tool for testing and exploiting various JWT vulnerabilities, including CVE-2020-28042 (empty signature attack). It supports multiple attack modes such as modifying the algorithm to 'none', signature validation bypass, and key injection.
Description
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.
Exploits (3)
This repository contains a Go-based tool for testing and exploiting various JWT vulnerabilities, including CVE-2020-28042 (empty signature attack). It supports multiple attack modes such as modifying the algorithm to 'none', signature validation bypass, and key injection.
This PoC demonstrates CVE-2016-10555 by exploiting a JWT algorithm confusion vulnerability, where the attacker changes the algorithm from RS256 to HS256, causing the backend to use the public key as a symmetric secret for signature verification. The provided Python script generates a malicious JWT token signed with the public key, bypassing authentication.
This PoC demonstrates an authentication bypass vulnerability (CVE-2016-10555) in JWT token verification by exploiting algorithm confusion. The attacker can forge a token using HS256 with the public key, which the server incorrectly verifies as RS256.
References (4)
Scores
CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N