<< All versions
Skill v1.0.2
currentAutomated scan100/100transilienceai/communitytools/api-security
~2 modified
──Details
PublishedJuly 26, 2026 at 08:22 AM
Content Hashsha256:e20bd6730a7d7993...
Git SHAbb3cd68a620e
Bump Typepatch
──Files
Files (1 file, 3.6 KB)
SKILL.md3.6 KBactive
SKILL.md · 48 lines · 3.6 KB
version: "1.0.2" name: api-security description: API security testing - GraphQL, REST API, WebSocket, and Web-LLM attack techniques.
API Security
Test API endpoints for security vulnerabilities across REST, GraphQL, WebSocket, and LLM-integrated APIs.
Techniques
| Type | Key Vectors | |
|---|---|---|
| GraphQL | Introspection, batching attacks, nested query DoS, field suggestion | |
| REST API | BOLA/IDOR, mass assignment, rate limiting, auth bypass, versioning | |
| WebSocket | Cross-site hijacking, message manipulation, auth flaws | |
| Web-LLM | Prompt injection via API, excessive agency, data exfiltration |
Workflow
- Discover API endpoints and documentation (Swagger, GraphQL schema)
- Map authentication and authorization mechanisms
- Test per API type using appropriate techniques
- Validate data exposure and access control flaws
- Capture evidence with HTTP request/response logs
API at scale (offline corpus / fixture-driven)
For a large or offline API surface — a 2000+ path Swagger, a Postman corpus, a HAR capture — do NOT hand-build the coverage machinery per engagement. Drive it deterministically:
- Ingest the corpus → per-endpoint fixtures:
python3 tools/fixture_ingest.py <openapi|postman|har> -o fixtures.jsonnormalizes every operation into a request template (method, url with path params filled, sampled body,object_reffor id-like path params, security requirement) and STRIPS baked-in auth (the harness injects tokens). This is what turns a large (thousands-of-operations) OpenAPI/Postman corpus into a resumable matrix instead of an untested pile. - Acquire per-role sessions: via `authenticated-session-acquisition` (MFA/OTP/SRP → reusable tokens) into the harness's token store.
- Replay the per-role authz matrix:
python3 tools/auth_replay_harness.py --requests fixtures.json --tokens tokens.json [--proxy <vantage>]replays every endpoint under every role (and cross-tenant), flags BOLA/BFLA where a role gotauthorizedon an object/action it should not, and logs anevidence_idper (endpoint × role). Egress-route via the provisioned vantage for allowlisted APIs. - Protocol-specific authz: OData (`odata-deep-authz.md`), Cognito (`cognito-unauth-and-srp.md`), authenticated WebSocket (`authenticated-per-role-authz.md`).
The batch is resumable (checkpoint the harness results) so flapping auth never zeroes the run — the recurring at-scale gap. Run the FULL matrix so a clean result is an evidenced negative, not an untested surface.
Reference
reference/graphql*.md- GraphQL attack techniques and labsreference/scenarios/rest/*.md- REST API security testing (BOLA/BOPLA, mass assignment, SSPP, content-type confusion)- `scenarios/rest/odata-deep-authz.md` - OData
$metadataenum +$filter/$orderby/$expandcross-tenant BOLA & injection - `scenarios/rest/cognito-unauth-and-srp.md` - Cognito UNSIGNED unauthenticated posture (self-signup/enumeration) + SRP authenticated session
reference/websockets*.md- WebSocket vulnerability testing- `scenarios/websocket/authenticated-per-role-authz.md` - authenticated per-role relay: BOLA/BFLA/channel-authz over the socket
reference/web-llm*.md- Web-LLM attack techniques and labs