agentleFS
JeremyMorganJeremyMorgan/code-review-skills/skills/authorization-implementation/SKILL.md

authorization-implementation

Skill15 starsChanged 5 months agoCC0-1.0View on GitHub

Analyzes authorization and access-control logic across routes and resources for privilege and enforcement flaws. Use when auditing authorization, RBAC, or access control.

We split this skill into the rules it gives an agent

17 rules. About 0 are common, 12 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If no target path is given above, review the entire codebase.

    line 14
  2. Very specific:

    Verify ownership/tenant checks on all object-level routes (GET/PUT/DELETE /:id).

    line 26
  3. Distinctive:

    Ensure identifiers in URL, body, or query cannot be manipulated to access others’ data.

    line 27
  4. Distinctive:

    Ensure enforcement is server-side, not just in the UI.

    line 32
  5. Distinctive:

    Ensure roles cannot be set/changed by the client.

    line 42
  6. Very specific:

    Check for update endpoints allowing fields like role, tenantId, or isAdmin.

    line 46
  7. Very specific:

    Ensure no route uses jwt.decode or trusts unverified claims.

    line 52
  8. Distinctive:

    Verify least-privilege scopes are enforced.

    line 57
  9. Distinctive:

    Ensure field-level projection or serializer logic exists.

    line 76
  10. Distinctive:

    Check nested routers for missing parent auth guards.

    line 86
  11. Distinctive:

    No wildcard origins with credentials.

    line 90
  12. Distinctive:

    If cookies are used for auth, CSRF defenses are in place (SameSite, CSRF token).

    line 91
  13. Very specific:

    Verify post-login redirect/next parameters are validated against allowlists.

    line 95
  14. Very specific:

    Ensure no /seed, /reset, /debug endpoints are left exposed without strict admin checks.

    line 99
  15. Distinctive:

    Prefer minimal, drop-in fix snippets over prose.

    line 129
  16. Distinctive:

    Do not invent files or functions that aren’t present.

    line 131
  17. Distinctive:

    Write this into a markdown file and place it in the audits/ folder.

    line 133

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Target: $ARGUMENTS

If no target path is given above, review the entire codebase.


Authorization Implementation

Analyze authorization implementation across all routes:

Check for:

  1. Broken Object Level Authorization (BOLA / IDOR)

    • Verify ownership/tenant checks on all object-level routes (GET/PUT/DELETE /:id).
    • Ensure identifiers in URL, body, or query cannot be manipulated to access others’ data.
  2. Broken Function Level Authorization

    • Confirm role/permission checks exist on every privileged route.
    • Ensure enforcement is server-side, not just in the UI.
  3. Missing authorization checks on sensitive endpoints

    • Validate middleware ordering (authN → authZ → handler).
    • Confirm no endpoints are left exposed (admin tools, bulk exports, feature-flagged routes).
  4. Role-based access control (RBAC) implementation

    • Map roles → permissions explicitly; enforce deny-by-default.
    • Ensure roles cannot be set/changed by the client.
  5. Privilege escalation possibilities

    • Check for update endpoints allowing fields like role, tenantId, or isAdmin.
    • Validate multi-step workflows cannot escalate privileges indirectly.
  6. JWT token validation on every protected route

    • Require jwt.verify with strict algorithms, iss, aud, exp.
    • Ensure no route uses jwt.decode or trusts unverified claims.
    • Validate jti or tokenVersion against revocation strategy.
  7. Proper scope checking for API tokens

    • Verify least-privilege scopes are enforced.
    • Differentiate user tokens vs service tokens; enforce audience and intended route access.

Additional items to check for:

  1. Multi-tenant isolation

    • Tenant constraints injected server-side, not client-provided.
    • List/search endpoints filtered by tenant at query time.
  2. Bulk endpoint protections

    • Batch/bulk operations enforce ownership per item, not just once at entry point.
  3. Field-level authorization

    • Sensitive fields (e.g., ssn, apiKey, secrets) excluded for non-privileged users.
    • Ensure field-level projection or serializer logic exists.
  4. Error handling & resource enumeration

    • Uniform errors (403 vs 404) to prevent leaking resource existence.
    • Consistent status codes across owned vs non-owned resources.
  5. Middleware ordering

    • Confirm routes cannot bypass authorization due to wrong order (e.g., handler before auth middleware).
    • Check nested routers for missing parent auth guards.
  6. CORS & CSRF considerations

    • No wildcard origins with credentials.
    • If cookies are used for auth, CSRF defenses are in place (SameSite, CSRF token).
  7. Open redirect protections

    • Verify post-login redirect/next parameters are validated against allowlists.
  8. Fallback/debug routes

    • Ensure no /seed, /reset, /debug endpoints are left exposed without strict admin checks.

For each endpoint, verify:

  • Who can access it (roles, scopes, tenant).
  • What data they can see/modify (including hidden fields).
  • Whether ownership/tenancy is properly checked (query-level filter + post-fetch check).
  • That middleware enforces authN/authZ consistently (no bypass possible).

Provide:

A structured finding report with the following for each issue:

Title, Severity (Critical/High/Medium/Low), CWE (if applicable), Evidence (file, function, line ranges), and a short Why it matters.

Exploitability notes and, where safe, a minimal PoC or reproduction steps (no real secrets).

Remediation: precise code-level fix or config change (snippets welcome), plus defense-in-depth guidance.

A summary risk score (0–10) and top 3–5 prioritized fixes that reduce risk fastest.

A checklist diff: which items from the “Check for” list are Pass/Fail/Not Applicable.

Constraints & style:

Be concrete and cite exact code locations and identifiers.

Prefer minimal, drop-in fix snippets over prose.

Do not invent files or functions that aren’t present; if context is missing, mark as Unable to verify and say what code would prove it.

Write this into a markdown file and place it in the audits/ folder.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.