Skip to content
Back to skills

Jwt Attacks

ASecurity

Detect JWT implementation vulnerabilities including algorithm confusion, none algorithm acceptance, weak secrets, and JWK injection attacks.

  • 46 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 26, 2026
securitygoshellbashsqldatabase

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add ByamB4/find-cve-agent --skill jwt-attacks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jwt Attacks?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Jwt Attacks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/byamb4-jwt-attacks/badge)](https://www.skillsdirectory.com/skills/byamb4-jwt-attacks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: jwt-attacks
description: "Detect JWT implementation vulnerabilities including algorithm confusion, none algorithm acceptance, weak secrets, and JWK injection attacks."
metadata:
  filePattern:
    - "**/*.js"
    - "**/*.ts"
    - "**/*.py"
    - "**/*.go"
  bashPattern:
    - "grep.*(jwt|jsonwebtoken|jose|JWK|JWS)"
  priority: 82
---

# JWT Attack Detection

## When to Use

Audit JWT verification/generation libraries, authentication implementations, and any code that validates or creates JSON Web Tokens.

## Attack Types

### 1. Algorithm Confusion (RS256 to HS256)

The server uses RS256 (asymmetric) but the attacker changes the token header to HS256 (symmetric) and signs with the public key as the HMAC secret.

**Conditions**: Library accepts algorithm from token header without allowlist validation.

### 2. alg:none Bypass

Token header specifies `"alg": "none"`, and the library accepts unsigned tokens.

**Conditions**: Library does not validate algorithm or allows "none".

### 3. JWK Header Injection

Attacker embeds their own public key in the token header via the `jwk` parameter, and the library uses it for verification.

### 4. Weak HMAC Secrets

HMAC secrets that are short, common words, or default values. Can be brute-forced offline.

### 5. kid (Key ID) Attacks

- **Path traversal**: `"kid": "../../dev/null"` -- sign with empty key
- **SQL injection**: `"kid": "' UNION SELECT 'secret' --"` -- inject known key
- **Command injection**: `"kid": "|id"` -- if kid is passed to shell

### 6. jku/x5u URL Manipulation

`jku` (JWK Set URL) or `x5u` (X.509 URL) in header points to attacker-controlled server hosting a JWK Set with the attacker key.

## Process

### Step 1: Find JWT Usage

```
grep -rn "jwt\.verify\|jwt\.decode\|jwt\.sign\|jwt\.encode" .
grep -rn "jsonwebtoken\|jose\|PyJWT\|go-jose\|nimbus-jose" .
grep -rn "JWTVerify\|jwtVerify\|createRemoteJWKSet" .
```

### Step 2: Check Algorithm Validation

```
grep -rn "algorithms\|algorithm.*=\|alg.*:" . | grep -i jwt
```

Is the algorithm explicitly specified or taken from the token header?

```js
// VULNERABLE: no algorithm specified
jwt.verify(token, key);

// SAFE: algorithm allowlist
jwt.verify(token, key, { algorithms: ['RS256'] });
```

### Step 3: Check for none Algorithm

```
grep -rn "none\|None\|NONE" . | grep -i "alg\|algorithm"
```

### Step 4: Check kid Parameter Handling

```
grep -rn "kid\|keyId\|key_id\|getKey\|keyStore" .
```

Is the kid value used in file paths, database queries, or command execution?

### Step 5: Check Secret Strength

```
grep -rn "secret\|SECRET\|JWT_SECRET\|TOKEN_SECRET" .
```

Is the secret hardcoded, from environment variable, or sufficiently random?

## CVSS Guidance

- Algorithm confusion to forge admin tokens: CRITICAL 9.1
- alg:none bypass: CRITICAL 9.1
- JWK injection: HIGH 8.1
- Weak HMAC secret (brute-forceable): HIGH 7.5
- kid path traversal: HIGH 7.5-8.1
- kid SQLi: CRITICAL 9.8

## References

- [Sinks](references/sinks.md) -- JWT libraries and vulnerability status
- [False Positive Indicators](references/false-positive-indicators.md)
- [PoC Skeleton](references/poc-skeleton.md)

Files in this skill

  • SKILL.md3.1 KB
  • references/false-positive-indicators.md905 B
  • references/poc-skeleton.md1.6 KB
  • references/sinks.md1.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.