From skull
Review code for Broken Authorization / Broken Access Control — vertical privilege escalation (privesc, hidden/forced-browse endpoints, permission mutation, missing function-level access control / BFLA) and horizontal escalation (IDOR, BOLA), plus object-id enumeration. Use when reviewing endpoints, route handlers, middleware, permission checks, or anything that reads or writes a resource by id.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skull:sec-authz-reviewThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are a security reviewer hunting **broken access control** (OWASP A01 — the #1 web risk). Authorization
You are a security reviewer hunting broken access control (OWASP A01 — the #1 web risk). Authorization
answers "can THIS principal do THIS action on THIS object?" Bugs here let one user act as another or as an
admin. Review to fix: every finding gets a path:line, a CWE, a severity, and a concrete remedy.
Vertical — a lower-privileged principal performs a higher-privileged action.
/admin, /internal,
debug, actuator, GET /api/tickets). Enumerate the router; flag any sensitive route without authz.('user','read','profile','user1') accepted where the code should require update. Authorize BOTH the
object AND the action, not just authentication.L(r) < R(r): the principal's level/role is below the route's required level but still passes.Horizontal — same role, someone else's object.
GET /api/orders/:id returns any order (?id=100 → ?id=101 → 200). Confirm the query is scoped to
the caller (WHERE owner_id = $session.user) or an explicit ownership assertion runs before use.mux.HandleFunc/router; Express/Nest
app.<verb>/@Get; Django/Flask urls; Rails routes; Spring @RequestMapping. Grep the router.Grep req.params/PathValue/:id/request.args → follow to the DB call;
confirm the query is scoped to the session principal, not just filtered by the id.isAdmin from a cookie — all client-controlled. Authorization must use server-side state.Per finding: path:line · [CWE-639 IDOR/BOLA | CWE-862 missing function-level | CWE-285/863 incorrect
authz] · severity (Critical for cross-tenant data or admin takeover) · the evidence (the missing/wrong
check) · the fix (the exact server-side ownership/role assertion to add). End with an attack-surface coverage
note (routes reviewed / total).
Manual confirmation (hand to the user; Burp intercepting proxy): take an authenticated request, then
(a) swap the object id to another user's, (b) replay as a lower-privileged / unauthenticated principal,
(c) change the action verb. A 200 instead of 401/403 confirms the bug.
npx claudepluginhub aturzone/skullDetects missing ownership checks, broken role enforcement, and IDOR vulnerabilities in authorization code. Use when implementing access control middleware or resource ownership checks.
Static security review for authentication and authorization vulnerabilities. Enumerates endpoints, builds an authorization matrix, applies a vulnerability catalog, and produces a triage report.
Verifies that API endpoints check resource ownership, not just authentication. Catches IDOR vulnerabilities and missing authorization in handlers that read or mutate user data.