Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023).

MITAuto-check: notesBackend & APIs

Install API Audit

skills CLI
$ npx skills add briiirussell/cybersecurity-skills --skill api-audit -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install briiirussell/cybersecurity-skills api-audit --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/briiirussell/cybersecurity-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/api-audit .claude/skills/api-audit && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
api-audit
GitHub stars
413
Token cost
~2.8k tokens
SKILL.md length
1,297 words
Files
1
Skills in repo
25
Repo updated
First seen
Licence
MIT

At a glance

Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023).

  • Works in 4 steps: Inventory every API surface — REST… → Identify auth model — JWT, session… → Identify the tenancy model —… → …
  • The user mentions API security
  • SKILL.md covers Scope the Audit, Audit Checklist, GraphQL-specific and REST-specific, plus 5 more sections
  • Calls tsc

What it does

API Audit is an agent skill from briiirussell/cybersecurity-skills. Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023). Use when the user mentions 'API security,' 'API audit,' 'BOLA,' 'broken object level authorization,' 'BFLA,' 'function-level authorization,' 'mass assignment,' 'API rate limiting,' 'GraphQL security,' 'REST security,' 'API authentication,' 'API authorization,' 'excessive data exposure,' or needs to review API endpoints for security weaknesses.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering GraphQL, Web application vulnerabilities and Authorization and RBAC. It works with GraphQL. The repository describes itself as: Cybersecurity skills for AI coding agents (Claude Code, Cursor, Codex). The licence is MIT.

When your agent uses it

  • The user mentions API security
  • Broken object level authorization
  • Function-level authorization
  • Mass assignment

Example prompts

  • “API security,”
  • “API audit,”
  • “broken object level authorization,”
  • “/api-audit”

Requirements

  • Pre-approved tools (allowed-tools): Read, Grep, Glob, Bash, Write

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Inventory every API surface — REST routes, GraphQL resolvers, tRPC procedures, gRPC services, Server Actions, webhook handlers, internal RPC
  2. Identify auth model — JWT, session cookies, API keys, mTLS, OAuth scopes
  3. Identify the tenancy model — single-tenant, multi-tenant, row-level isolation
  4. Map sensitive resources — user data, payments, files, admin functions

What it can do on your machine

Read from SKILL.md and the folder at commit c9ade03. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Grep
    • Glob
    • Bash
    • Write

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • tsc

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

API Audit loads about 2.8k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 1,297 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~109
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Grep, Glob, Bash, Write

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from briiirussell/cybersecurity-skills at commit c9ade03, republished under its MIT licence (© briiirussell). 1,297 words, ~2,753 tokens.

Download SKILL.mdSave it as .claude/skills/api-audit/SKILL.md (or your agent's skills folder).
name
api-audit
description
Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023). Use when the user mentions 'API security,' 'API audit,' 'BOLA,' 'broken object level authorization,' 'BFLA,' 'function-level authorization,' 'mass assignment,' 'API rate limiting,' 'GraphQL security,' 'REST security,' 'API authentication,' 'API authorization,' 'excessive data exposure,' or needs to review API endpoints for security weaknesses.
allowed-tools
Read, Grep, Glob, Bash, Write

API Audit — REST / GraphQL / RPC Security Review

Perform a systematic security audit of API endpoints against the OWASP API Security Top 10 (2023). Distinct from owasp-audit — that's category-driven over a whole codebase, this is surface-driven over the API contract.

Use owasp-audit for the codebase as a whole. Use this when you need a focused pass over every endpoint with API-specific bypass patterns. They cross-reference each other where categories overlap.

Scope the Audit

  1. Inventory every API surface — REST routes, GraphQL resolvers, tRPC procedures, gRPC services, Server Actions, webhook handlers, internal RPC
  2. Identify auth model — JWT, session cookies, API keys, mTLS, OAuth scopes
  3. Identify the tenancy model — single-tenant, multi-tenant, row-level isolation
  4. Map sensitive resources — user data, payments, files, admin functions

Audit Checklist

API1: Broken Object Level Authorization (BOLA)

The #1 API vulnerability by exploitation frequency. Every endpoint that accepts an object ID needs an explicit ownership check before reading or mutating.

  • For each route that takes an ID parameter (/users/:id, /orders/:id, /projects/:id), verify a query like findFirst({ where: { id, userId } }) runs before any data access — not findById(id) then a separate check
  • ORM relation traversal: posts.find(id).user.creditCard returns another tenant's card if the relation isn't guarded. Audit every .include, .with, includes, eager-loaded relation
  • UUIDs are not access control. Sequential IDs make enumeration trivial; UUIDs only slow it down
  • Predictable surrogate keys (slugs, public_ids) used as if they were unguessable
  • Grep for: params.id, req.params.<id>, formData.get("<id>"), ORM .findById( / .find( without a where clause, GraphQL resolvers that take an id arg and call .findUnique
API2: Broken Authentication
  • JWT with alg: none accepted by the verifier
  • JWT secret comparison without crypto.timingSafeEqual / equivalent
  • Refresh tokens that never rotate or have no revocation list
  • Password reset that returns a token in the response body instead of mailing it
  • API keys passed in URL query string (logged everywhere — access logs, CDN, proxies)
  • Bearer-token compare against process.env.X without a presence check — when X is unset, "Bearer ${undefined}" is a valid literal
  • Grep for: jwt.verify, jsonwebtoken, Bearer ${process.env, jwt.decode (without verify), verify.*alg
API3: Broken Object Property Level Authorization (BOPLA / BFLA / Excessive Data Exposure)
  • API returns the whole DB row instead of a curated DTO — res.json(user) leaks password_hash, stripe_customer_id, internal flags
  • Admin-only fields (role, is_verified, tenant_id) accepted on update endpoints from regular users — mass assignment
  • GraphQL exposes admin-mutation fields without role-based field-level auth — mutation UpdateUser($id, $role) succeeds because the resolver only checks "is the user logged in"
  • Grep for: res.json(<entity>) without explicit field projection, Object.assign(record, req.body), Mongoose findByIdAndUpdate(id, req.body), Drizzle .update().set(req.body), Sequelize update(req.body), GraphQL resolvers without role checks
API4: Unrestricted Resource Consumption
  • No rate limit on auth endpoints (login, signup, password-reset, SMS-send, email-verify)
  • No per-tenant quota on expensive operations (LLM calls, search, file processing, webhook fan-out)
  • Page size unbounded — ?limit=10000000 returns 10M rows
  • GraphQL query depth not capped — user { posts { user { posts { ... } } } } runs forever
  • GraphQL query complexity not analyzed — single query that triggers N+1 against 100M rows
  • Webhook handlers that re-trigger expensive work without idempotency
API5: Broken Function Level Authorization (BFLA)
  • Auth check on the route but not on the handler — wildcard middleware misses a manually-mounted route
  • "Admin-ish" endpoints reachable by changing POST /api/v1/users/me to POST /api/v1/users/<other_id>
  • HTTP verb tampering — DELETE /admin/users/123 blocked, but POST /admin/users/123/delete succeeds
  • Conditional auth based on req.user.role === "admin" where role is set from a header the client controls
  • Sister-route gaps — PUT /:id is guarded but POST /:id/send writes the same row without the guard. Run sister-route audit (see owasp-audit)
  • Grep for: every route handler — does it call an auth check explicitly, or rely on something upstream that may or may not match this route's path?
API6: Unrestricted Access to Sensitive Business Flows
  • Endpoint allows automation that bypasses business intent — buying limited stock 1000× per second, reserving every seat in a venue, brute-forcing referral codes
  • No CAPTCHA / proof-of-work / device fingerprint on flows that have business-rate constraints (signup, coupon redemption, vote, like)
  • Anti-automation checks only on UI, not on the API
API7: Server-Side Request Forgery (SSRF)
  • User-controlled URLs passed to server-side fetch — webhook URLs, image-fetch, SSO callback, PDF render, OG-scrape, link unfurling
  • Allow-list checks only the hostname — see owasp-audit A10 for the full bypass matrix (9+ patterns including IPv4-mapped IPv6, trailing-dot, cloud metadata, encoded IPs)
  • redirect: "follow" (default) on fetches with user-controlled URLs lets an attacker bounce through a 302 into the metadata service
  • Webhook delivery from your domain to attacker URL — your server's IP is now their proxy
API8: Security Misconfiguration
  • CORS Access-Control-Allow-Origin: * combined with Allow-Credentials: true (browsers refuse this; servers shouldn't ship it)
  • CORS reflection of the Origin header without an allow-list — any origin gets allowed
  • Verbose error responses leaking stack traces, query strings, internal IDs
  • Default OpenAPI / GraphQL introspection exposed in production with full schema
  • Missing security headers — see owasp-audit A05 for the full baseline values
  • HTTP-only flag missing on session cookies
Show full SKILL.md (509 more words)Show less
API9: Improper Inventory Management
  • Old API versions (/v1/) still live and unpatched alongside /v2/ — attackers prefer the version with fewer checks
  • "Internal" / "staging" endpoints reachable from the internet (deploy-preview URLs, *-staging.fly.dev left open)
  • Undocumented endpoints — every endpoint should appear in the OpenAPI spec / type-generated client; orphans are an audit signal
  • Auto-generated debug endpoints — /__debug, /__db, /.well-known/internal/, framework-default routes
  • Grep for: app.get, router.get, pages/api/, app/api/ directory contents; reconcile against the published API contract
API10: Unsafe Consumption of APIs
  • Your service calls a third-party API and trusts the response without validation — open redirect via provider.user.profile_url, XSS via provider.user.bio rendered un-escaped
  • Server-to-server calls without integrity check (signed JWT, mTLS, HMAC) — anyone who can reach the upstream URL can pretend to be the upstream
  • Caching upstream errors as success — a 200 with a JSON error body cached as data

GraphQL-specific

  • Introspection enabled in production (__schema, __type queries return the full schema)
  • Field-level authorization missing — resolvers check "is this query allowed" but not "is this field allowed for this user"
  • Query depth + complexity limits absent
  • Batching abuse — single HTTP request containing 1000 queries each costing 100ms
  • Error messages reveal internal field paths the user shouldn't know exist

REST-specific

  • HTTP verbs not enforced — GET accepted on state-changing endpoints (CSRF risk + cache poisoning)
  • Content-Type assumptions — handler expects application/json but accepts application/x-www-form-urlencoded and parses inconsistently
  • Path traversal in resource IDs — /files/../../etc/passwd

Webhook handler-specific

  • Signature verification missing or bypassable (see owasp-audit A02 type-coercion + A04 multi-tenant signature N-way matching)
  • Replay attack — no timestamp tolerance or nonce check
  • Endpoint exists at a predictable path (/webhooks/stripe) without IP allow-list or signature

Verify Fixes at Runtime

  • For BOLA fixes: actually authenticate as user A and request user B's resource; observe 404, not 200
  • For mass-assignment fixes: send the request with the extra field set; observe the field is ignored or rejected
  • For rate-limit fixes: hit the endpoint at 10× the configured rate; observe 429 not 200
  • For CORS fixes: send the request with Origin: https://evil.com; observe the browser blocks, not the server

tsc --noEmit + build success ≠ fix verified. See also owasp-audit's Verify Fixes at Runtime + Second-Opinion Pass — same playbook applies.

Report Format

Findings have three dispositions (Fixed / Deferred / Accepted Risk) per the owasp-audit convention. For every finding:

markdown
#### [SEVERITY] APIN: [Title]
**Endpoint:** `METHOD /path/to/endpoint`
**Handler:** `path/to/handler.ts:42`
**CWE:** CWE-XXX

**Description:** [What the vulnerability is]

**Proof of concept:**

[curl / request showing the bypass]


**Vulnerable Code:**
[snippet]

**Remediation:**
[fixed snippet]

**Verification:** [Concrete adversarial input and the observed response that proves the fix holds]

Produce an executive summary grouped by API category, plus an inventory of every endpoint with one of:

  • Audited — clean (with what was checked)
  • Audited — N findings (with severities)
  • N/A (with reason — e.g. health-check endpoint with no auth surface)

Boundaries

  • Only audit APIs the user provides or points you to
  • Provide remediation, not exploits — for proof-of-concept, generate the minimum request that demonstrates the issue, not a weaponized payload
  • Flag low-confidence findings as "Potential" rather than confirmed
  • Never run a BOLA proof-of-concept against a live production endpoint without explicit written authorization — read the code, then propose how to verify in a test environment
  • Refuse mass-scanning, credential-stuffing, or any active abuse-flow exploitation

References

  • OWASP API Security Top 10 (2023)
  • OWASP Cheat Sheet: REST Security
  • OWASP Cheat Sheet: GraphQL Security
  • CWE-639 (Authorization Bypass Through User-Controlled Key)
  • CWE-915 (Improperly Controlled Modification of Dynamically-Determined Object Attributes)

© briiirussell, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/api-audit of briiirussell/cybersecurity-skills.

Open the folder on GitHubat commit c9ade03

Compare with similar skills

API Audit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

API Audit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
API Audit this skillbriiirussell/cybersecurity-skills413—~2.8kAutomated safety check: NotesMIT
Discover APIrand/cc-polymath181—~1.5kAutomated safety check: PassMIT
Hunt APIEncod3d-Sec/TORCH329—~1.9kAutomated safety check: PassMIT
Domain Webfjrevoredo/mini-diarium3081 repos~1kAutomated safety check: PassMIT
API Designeraiskillstore/marketplace430—~3.6kAutomated safety check: PassNone
API Architectcuriositech/some_claude_skills243—~1.4kAutomated safety check: PassMIT

Similar skills

  • Discover API

    rand/cc-polymath

    Automatically discover API design skills when working with REST APIs, GraphQL schemas, API authentication, OAuth, JWT, rate limiting, API versioning, error handling, or endpoint design.

    181 GitHub stars~1.5k tokensUpdated 7 mo ago
    Backend & APIsAuto-check passed
  • Hunt API

    Encod3d-Sec/TORCH

    API attack hunting (REST / GraphQL / gRPC) - BOLA/IDOR, BFLA, mass assignment, excessive data exposure, auth/JWT, introspection + batching, rate-limit abuse.

    329 GitHub stars~1.9k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Domain Web

    fjrevoredo/mini-diarium

    A skill your agent uses when building web services. An agent skill from fjrevoredo/mini-diarium.

    308 GitHub starsUsed in 1 repo~1k tokens
    Backend & APIsAuto-check passed
  • API Designer

    aiskillstore/marketplace

    Design and document RESTful and GraphQL APIs with OpenAPI/Swagger specifications, authentication patterns, versioning strategies, and best practices.

    430 GitHub stars~3.6k tokensUpdated today
    Backend & APIsAuto-check passed
  • API Architect

    curiositech/some_claude_skills

    Expert API designer for REST, GraphQL, gRPC architectures. An agent skill from curiositech/some_claude_skills.

    243 GitHub stars~1.4k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • API Design Interviewer

    PrepLabsAI/InterviewMentor

    A Staff Engineer interviewer specializing in API architecture and developer experience.

    112 GitHub stars~2.6k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed

More from briiirussell/cybersecurity-skills

All 25 skills in this repo
  • AI Risk Management

    briiirussell/cybersecurity-skills

    Apply the NIST AI Risk Management Framework (AI RMF 1.0) and adjacent guidance to AI / ML systems — model lifecycle governance, fairness and bias evaluation, robustness, transparency…

    413 GitHub stars~3.7k tokensUpdated 4 mo ago
    Auto-check: notes
  • Breach Patterns

    briiirussell/cybersecurity-skills

    Learn from public breach disclosures — extract the audit question each one implies and check your own stack.

    413 GitHub stars~3.5k tokensUpdated 4 mo ago
    Auto-check: notes
  • Cloud Audit

    briiirussell/cybersecurity-skills

    Audit cloud infrastructure (AWS, GCP, Azure) for misconfigurations, excessive permissions, and security gaps.

    413 GitHub stars~1.3k tokensUpdated 4 mo ago
    Auto-check: notes
  • Container Audit

    briiirussell/cybersecurity-skills

    Audit container images, Dockerfiles, and Kubernetes manifests for misconfigurations, excessive privileges, exposed secrets, and runtime risks.

    413 GitHub stars~2.5k tokensUpdated 4 mo ago
    Auto-check: notes
  • Crypto Audit

    briiirussell/cybersecurity-skills

    Audit cryptography implementation — algorithm choice, key sizes, KDF parameters, IV/nonce handling, signature verification, randomness, TLS configuration, and key rotation.

    413 GitHub stars~2.8k tokensUpdated 4 mo ago
    Auto-check: notes
  • Csf Mapping

    briiirussell/cybersecurity-skills

    Map your security posture against the NIST Cybersecurity Framework 2.0 (Govern, Identify, Protect, Detect, Respond, Recover).

    413 GitHub stars~3k tokensUpdated 4 mo ago
    Auto-check: notes

Works with

Categories

Questions about API Audit

What does API Audit do?

Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023). API Audit is an agent skill from briiirussell/cybersecurity-skills. Audit REST, GraphQL, and RPC APIs against the OWASP API Security Top 10 (2023).

When should I use API Audit?

API Audit fits situations like: the user mentions API security; broken object level authorization; function-level authorization; mass assignment.

How do I install API Audit in Claude Code?

Run `npx skills add briiirussell/cybersecurity-skills --skill api-audit -a claude-code`. Or copy the skill folder (skills/api-audit in briiirussell/cybersecurity-skills) into .claude/skills/api-audit in your project. Claude Code loads it when a task matches its description.

How do I install API Audit in Codex?

Run `npx skills add briiirussell/cybersecurity-skills --skill api-audit -a codex`. Or copy the skill folder (skills/api-audit in briiirussell/cybersecurity-skills) into .agents/skills/api-audit in your project. Codex loads it when a task matches its description.

Can I use API Audit in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add briiirussell/cybersecurity-skills --skill api-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/api-audit, .gemini/skills/api-audit, .github/skills/api-audit and .opencode/skills/api-audit in your project.

What does API Audit need to run?

Going by SKILL.md and its folder, API Audit needs the command-line tools its instructions call (tsc). Its frontmatter pre-approves these tools: Read, Grep, Glob, Bash, Write.

Does API Audit access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is API Audit safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does API Audit use?

API Audit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does API Audit use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to API Audit?

Skills that share tags, products or a category with API Audit: Discover API (rand/cc-polymath, 181 stars), Hunt API (Encod3d-Sec/TORCH, 329 stars), Domain Web (fjrevoredo/mini-diarium, 308 stars) and API Designer (aiskillstore/marketplace, 430 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains API Audit?

briiirussell (a GitHub user) maintains it in briiirussell/cybersecurity-skills, which has 413 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on May 27, 2026.

Source: briiirussell/cybersecurity-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.