sast-jwt

sast-jwt is a skill for Claude Code, Codex from utkusen/sast-skills. It costs 123 tokens per session (5,862 once invoked), scanned A, original, MIT.

A code-security check for insecure JSON Web Token (JWT) implementations. A JWT is a signed web token containing claims such as a user ID, role, or expiry time; the check examines how tokens are issued, verified, and configured.

In plain words
What is it for?
Use it to map JWT issuance and verification sites and inspect problems such as missing signature checks, unsafe algorithms, weak secrets, or attacker-controlled key material.
Why use it?
It helps find cases where a server trusts token contents without properly proving that the token is authentic and unchanged. Such mistakes can let attackers forge identity or permission claims.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions subagents; installed under .agents/ (shared by several agents).

Good fit Use it to map JWT issuance and verification sites and inspect problems such as missing signature checks, unsafe algorithms, weak secrets, or attacker-controlled key material.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/utkusen/sast-skills/sast-jwt
About the project

SAST Skills is a collection of agent workflows that inspect web and mobile application code for security vulnerabilities, where SAST means static application security testing. Developers and security reviewers use it to map a codebase, verify possible flaws, and produce a severity-ranked remediation report. The catalogue entries are the project's vulnerability-detection and reporting skills.

utkusen/sast-skills · 1,307 stars · on GitHub

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add utkusen/sast-skills --skill sast-jwt
Clone the repo
git clone --depth 1 https://github.com/utkusen/sast-skills

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for sast-jwt

README.md
[![agentmods](https://agentmods.dev/badge/skills/utkusen/sast-skills/sast-jwt/github.svg)](https://agentmods.dev/skills/utkusen/sast-skills/sast-jwt)
Your own site
<a href="https://agentmods.dev/skills/utkusen/sast-skills/sast-jwt"><img src="https://agentmods.dev/badge/skills/utkusen/sast-skills/sast-jwt/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for sast-jwt

Your own site · 80×15
<a href="https://agentmods.dev/skills/utkusen/sast-skills/sast-jwt"><img src="https://agentmods.dev/badge/skills/utkusen/sast-skills/sast-jwt.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 123 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,862 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 3 findings, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high YARA Match · line 445
    YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
    Fix: Remove offensive tool references and exploit code. Legitimate agent skills should not contain penetration testing tools, exploit frameworks, or reconnaissance utilities.
  • medium Excessive Agency · line 282
    Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
    Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
  • low Privilege Escalation · line 436
    Skill requests more permissions than appear necessary for its stated functionality. Review if elevated access is justified.
    Fix: Request only the minimum permissions required. Document why each permission is needed. Remove broad permissions like '*' or 'all'.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00123 $0.05862
Opus 5 $0.00062 $0.02931
Sonnet 5 $0.00025 $0.01172
Haiku 4.5 $0.00012 $0.00586

Measured 11d ago against content hash be3c5b270331, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

sast-jwt scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

> [Proof-of-concept using jwt_tool, hashcat, or curl.
Origin

Copies of this mod

1 near-identical copy found in the catalogue:

  • sast-jwt — 100% identical, 0 lines differ
sast-files/.agents/skills/sast-jwt/SKILL.md · 488 lines

How it starts

The opening of the file, as written. The whole thing — 488 lines — stays where its author put it; the contents beside it link to each section on GitHub.

JWT Vulnerability Detection

You are performing a focused security assessment to find insecure JSON Web Token (JWT) implementations. This skill uses a two-phase approach with subagents: recon (map the full JWT lifecycle — issuance, verification, and configuration) then analysis (identify every exploitable weakness in those verification sites).

Prerequisites: sast/architecture.md must exist. Run the analysis skill first if it doesn't.


What is an Insecure JWT Implementation

JWTs consist of three Base64URL-encoded parts: header.payload.signature. The header declares the signing algorithm (alg), the payload carries claims (e.g., sub, role, exp), and the signature is a cryptographic proof of integrity. Vulnerabilities arise when the server trusts the token's own claims about how it was signed, fails to verify the signature at all, uses a guessable secret, or trusts attacker-controlled key material embedded in the token itself.

The core pattern: the server does not fully verify the JWT's authenticity and integrity before trusting its claims.

What JWT Vulnerabilities ARE

1. Algorithm confusion — alg: none The server accepts a JWT whose header declares "alg": "none", bypassing signature verification entirely. An attacker crafts an arbitrary payload, sets alg to none, and omits the signature. If the library processes it, the forged token is accepted.

2. Algorithm confusion — RS256 → HS256 A server configured for RS256 (asymmetric: sign with private key, verify with public key) can be tricked into HS256 mode if the library allows the algorithm to be specified by the token. Since the public key is often retrievable, the attacker signs a forged token with HS256 using the server's public key as the HMAC secret. The server verifies the HMAC using the same public key and accepts the token.

3. Missing or disabled signature verification The server decodes the JWT payload without actually verifying the signature. Common patterns:

  • Python (PyJWT): jwt.decode(token, options={"verify_signature": False})
  • Node.js (jsonwebtoken): jwt.decode(token) instead of jwt.verify(token, secret)
  • Manual base64 decode of the payload with no signature check
  • algorithms=["none"] accepted in the decode call

Read the full file on GitHub · 488 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 11d ago First seen · 488 lines · 123 tokens per session scan A be3c5b270331

Subscribe to this mod's changes

sast-jwt is a skill published in the GitHub repository utkusen/sast-skills (1,307 stars, last pushed 5mo ago), licensed MIT. It adds 123 tokens to every session and 5,862 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

secure-code-review

Performs a structured security code review against OWASP ASVS 4.0.3 verification requirements and CWE Top 25. Auto-invoked on pull request reviews, when code touching authentication, authorization, cryptography, or input handling is shared. Produces findings mapped to ASVS controls and CWE identifiers with severity…

UnitOneAI/SecuritySkills · 74 tokens

sast-config

Reviews and tunes SAST tool configurations against OWASP ASVS 4.0.3 and CWE Top 25. Auto-invoked when reviewing Semgrep rules, CodeQL queries, SAST CI integration, or false positive triage workflows. Produces a SAST maturity assessment covering rule authoring, severity tuning, custom rule development, and CI…

UnitOneAI/SecuritySkills · 78 tokens

eresus-manual-security-audit

Elite manual security code review skill for deep, adversarial vulnerability hunting and exploit-chain discovery. Trigger when the user asks to: "do a deep security audit", "manual code review", "find exploit chains", "hunt for logic bugs", "red-team this codebase", "do an offensive security review", "review this like…

EresusSecurity/appsec-skills · 145 tokens

eresus-sast-scanner

General-purpose Static Application Security Testing (SAST) skill for code vulnerability analysis. Trigger when the user asks to: "analyze code for vulnerabilities", "review code security", "find security bugs", "do a SAST scan", "check for [vulnerability type] in code", "audit source code", or requests a security code…

EresusSecurity/appsec-skills · 100 tokens

eresus-php-audit

Deep PHP-specific security audit skill covering injection, deserialization, file operations, auth bypass, POP chain discovery, and CMS-specific patterns. Trigger when auditing PHP code: "audit this PHP app", "find PHP security issues", "check Laravel/WordPress for vulnerabilities", "PHP SAST review", "check for PHP…

EresusSecurity/appsec-skills · 92 tokens

eresus-python-audit

Deep Python-specific security audit skill with 50+ vulnerability class coverage across 7 categories. Trigger when auditing Python code: "audit this Python app", "find Python security issues", "check Flask/Django for vulnerabilities", "Python SAST review", "check for pickle vulnerabilities", "review this FastAPI code".…

EresusSecurity/appsec-skills · 101 tokens