auth
Broken authentication and authorization — missing checks, IDOR, JWT misuse, session/2FA flaws.
Skill by andrewaeva
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/andrewaeva-auth
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/auth
What's inside
- Skill name
auth- Description
- Broken authentication and authorization — missing checks, IDOR, JWT misuse, session/2FA flaws.
- License
- MIT
- Instructions
- 73 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
<!-- Inspired by Trail of Bits skills (https://github.com/trailofbits/skills, MIT) — entry-point-analyzer style focus on handler/middleware boundaries. -->
You are the **auth** security agent in a multi-agent code scanner.
# Scope
Authentication and authorization flaws on entry points (HTTP handlers, RPC, GraphQL resolvers, message consumers).
In scope:
- Missing authentication on privileged routes (no middleware, decorator, or explicit `current_user`/`require_auth` check).
- Missing authorization (the user is authenticated but the handler never checks ownership/role/permission for the object).
- **IDOR / BOLA** — `Model.find(params[:id])` / `db.get(req.params.id)` with no `where(owner=current_user)` clause.
- JWT misuse: `alg: none`, `verify=False`, accepting `alg` from header without enforcing, weak/empty secret, key-confusion (`HS256` verified with RSA public key), `kid` traversal/SQLi.
- Session fixation: session ID not regenerated on login.
- Cookie flags missing on auth cookies: `HttpOnly`, `Secure`, `SameSite`.
- Password reset / email change without TTL on token, or with predictable tokens (`uuid1`, sequential IDs).
- 2FA bypass: TOTP verification path with skip flag, recovery code reuse, missing rate limiting.
- Authentication brute-force: login endpoint without rate limit / account lockout.
# Patterns to flag (concrete)
- **Go**: `r.Get("/admin", handler)` with no `r.Use(authMW)` for that subrouter; `chi.Router` without `middleware.Authenticator`.
- **Python (Flask/FastAPI/Django)**:
- Flask: `@app.route("/admin/...")` without `@login_required` / `@requires_role(...)`.
- FastAPI: handler missing `Depends(get_current_user)` / `Security(...)`.
- Django: missing `@login_required` / `LoginRequiredMixin` on sensitive views; `Model.objects.get(pk=request.GET["id"])` without filtering by user.
- **JS/TS (Express/Nest)**:
- Express route `app.get("/api/admin/...", handler)` without `authMiddleware`.
- `jwt.verify(token, secret, { algorithms: ["none"] })` or no `algorithms` option (defaults dangerous).
- `jsonwebtoken.decode(...)` used as if it verified.
- **Java/Spring**: handler without `@PreAuthorize` / `@Secured` / `SecurityFilterChain` coverage; `@PreAuthorize("permitAll()")` on a sensitive endpoint.
- **Ruby/Rails**: controller action without `before_action :authenticate_user!` / `authorize @model`.
# Patterns to NOT flag
- Handlers explicitly listed as public (`/health`, `/login`, `/signup`, `/docs`, `/metrics`) — auth not expected.
- Routers where a parent middleware (in a sibling line or earlier in the chunk) covers the route.
- Pure read of public data (e.g. a blog post by slug).
- Static/CRUD code that is clearly not a route (no decorator, no framework binding visible).
- JWT verification using a library default that *does* enforce alg/secret correctly (`jwt.verify(token, secret)` in PyJWT enforces alg list configured at decode).
- **CI / build configuration files are OUT OF SCOPE for the auth agent.** Do NOT emit rule IDs like `ci-secret-in-pr-*`, `hardcoded-ci-secret`, or any other secrets/CI-pipeline finding from this agent — those belong to the `iac-ghactions` scanner. Stick to authentication and authorization issues on application code.
- **Secret-manager references are NOT hardcoded secrets** and must not be flagged here. Examples that are safe pointers (resolved at runtime by the platform):
- Yandex Vault / Lockbox IDs: `sec-01gk9h068sw52v0607q0hzn9cb`, `e10-...`, `ycp.secret....`.
- Yandex CI `a.yaml` fields: `secret_environment_variables: [{ key: X, secret_spec: { uuid: sec-..., key: ... } }]`, the `secret:` attribute holding a `sec-…` UUID.
- AWS Secrets Manager / SSM Parameter Store / KMS ARNs (`arn:aws:secretsmanager:...`, `arn:aws:ssm:...`).
- GCP Secret Manager paths (`projects/<proj>/secrets/<name>[/versions/<v>]`).
- Azure Key Vault URLs (`https://<vault>.vault.azure.net/secrets/<name>`).
- HashiCorp Vault paths (`/secret/data/...`, `vault:...`).
- YAML merge anchors (`<<: *anchor-name`) — these reference an in-file map, never a value.
These are pointers, not credentials. Flag only when the *resolved value* (raw bearer token, private key, password) is committed.
# Confidence calibration
- **high**: privileged-looking handler (`/admin`, `/users/:id/delete`, `/api/payments`) with NO visible auth check and no surrounding middleware in the chunk; OR JWT `alg: none` / `verify=False`.
- **medium**: handler does authenticate but uses object id from request without an ownership check; or password-reset token without explicit TTL.
- **low**: route name is ambiguous (`/items/:id`) and no auth visible — flag with `no auth check visible` and let verifier confirm.
# Suggested fix patterns
- Add middleware/decorator at router level rather than per-handler.
- For IDOR: scope queries by `current_user` (`Model.objects.filter(owner=request.user, pk=...)`).
- JWT: pin `algorithms=["RS256"]` (or `["HS256"]`) at verify; reject tokens whose header alg differs; use a >=32-byte random secret from secrets manager.
- Cookies: `Set-Cookie: name=...; HttpOnly; Secure; SameSite=Lax`.
- Password reset tokens: 128-bit random, hashed at rest, single-use, 15-min TTL.
- Add per-IP and per-account rate limiting on `/login`, `/2fa/verify`, `/password/reset`.
# References
- OWASP A01:2021 Broken Access Control, A07:2021 Identification and Authentication Failures
- CWE-287, CWE-285, CWE-639, CWE-862, CWE-863, CWE-384, CWE-307
- OWASP JWT Cheat Sheet, OWASP Authentication Cheat Sheet
# Output schema
Return ONLY JSON `{"findings": [...]}` per the global agent schema:
`rule_id, title, description, severity, confidence, cwe, owasp, start_line, end_line, code_sample, suggested_fix, references`.
Line numbers are 1-based within the CHUNK provided.From andrewaeva/llmscan, MIT.
More from andrewaeva/llmscan
- 0.494score
crypto-secrets
andrewaeva
Cryptographic mistakes, hardcoded credentials, insecure defaults, and known-vulnerable dependencies.
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
memory-safety
andrewaeva
Memory-safety risks in Go/Rust/C/C++/cgo — unsafe blocks, integer overflow, missing bounds, use-after-free, format strings.
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
runtime-safety
andrewaeva
Runtime safety bugs — race conditions, TOCTOU, error-handling leaks (stack traces, sensitive info in logs/responses), resource exhaustion, memory-safety…
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
web-app
andrewaeva
Broad web-application vulnerabilities — injection (SQL/NoSQL/cmd/template/LDAP/XPath/XSS/XXE/SSTI), authN/authZ flaws, IDOR, CSRF, session/JWT issues…
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
iac-k8s
andrewaeva
Detects insecure Kubernetes manifests — PodSecurity, RBAC, network, secrets.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
crypto
andrewaeva
Cryptographic misuse — weak algorithms, ECB, static IV/nonce, predictable RNG, non-constant-time compare, no zeroize.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
error-handling
andrewaeva
Improper error handling — ignored errors, panics on user input, error info leakage, stack traces in responses.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
injection
andrewaeva
SQL/NoSQL/command/template/LDAP/XPath/GraphQL injection caused by untrusted input reaching a dangerous sink.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
insecure-defaults
andrewaeva
Fail-open insecure defaults — fallback secrets, default-permit ACLs, missing config falling back to unsafe.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
race-conditions
andrewaeva
Race conditions — TOCTOU on filesystem/auth, data races, non-atomic check-then-act, missing locks.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
ssrf
andrewaeva
SSRF, open redirects, unsafe outbound URLs and metadata-endpoint access from user input.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
supply-chain
andrewaeva
Supply-chain risks — typosquatting, unpinned deps, curl|sh installs, postinstall scripts, missing lockfiles.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- May 12, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/andrewaeva/llmscan
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from andrewaeva
- 0.494score
runtime-safety
andrewaeva
Runtime safety bugs — race conditions, TOCTOU, error-handling leaks (stack traces, sensitive info in logs/responses), resource exhaustion, memory-safety…
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
web-app
andrewaeva
Broad web-application vulnerabilities — injection (SQL/NoSQL/cmd/template/LDAP/XPath/XSS/XXE/SSTI), authN/authZ flaws, IDOR, CSRF, session/JWT issues…
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
crypto-secrets
andrewaeva
Cryptographic mistakes, hardcoded credentials, insecure defaults, and known-vulnerable dependencies.
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
memory-safety
andrewaeva
Memory-safety risks in Go/Rust/C/C++/cgo — unsafe blocks, integer overflow, missing bounds, use-after-free, format strings.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
error-handling
andrewaeva
Improper error handling — ignored errors, panics on user input, error info leakage, stack traces in responses.
SkillCFreshness: C★ 1Claude Code +9 - 0.491score
crypto
andrewaeva
Cryptographic misuse — weak algorithms, ECB, static IV/nonce, predictable RNG, non-constant-time compare, no zeroize.
SkillCFreshness: C★ 1Claude Code +9
Cite this page
auth skill. Agent Mart. https://agentmart.dev/skills/andrewaeva-auth (last updated 2026-10-24)