Skip to content
Security
Skill

/jwt-attacks

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

From plugin
find-cve-agent
6021 skills5 agents7 commands3 hooks

Claude Code

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

SKILL.md

jwt-attacks.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?

// 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)
Read more
@byamb4
Ships withfind-cve-agent

Open Source CVE Hunting Harness for Claude Code A Claude Code plugin that systematically finds real CVEs in open source packages through coordinated multi-agent security research.

6021 skills5 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
60
Star history of ByamB4/find-cve-agent on GitHub, a chart by star-history.com

Other skills on find-cve-agent.

advisory-mining

advisory-mining

Mine GitHub Security Advisories and CVE databases for incomplete fixes, finding variant vulnerabilities in patched code or…

auth-bypass

auth-bypass

Detect authentication and authorization bypass vulnerabilities including missing auth middleware, JWT algorithm confusion, IDOR,…

command-injection

command-injection

Detect OS command injection via shell execution sinks where user-controlled input reaches system commands without proper…

cross-pollination

cross-pollination

Cross-pollination multiplier technique: find a vulnerability in one package, then search for the same pattern across all similar…

More skills from other plugins.

api-security

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…

@zhaoxuya520@zhaoxuya520Install Skill
nemoclaw-user-guide

nemoclaw-user-guide

Find official NemoClaw documentation for installation, configuration, operation, or troubleshooting. Also handles requested docs…

nemoclaw12d23k
@nvidia@nvidiaInstall Skill

Questions about jwt-attacks.

Which coding agents can use jwt-attacks?
jwt-attacks installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.