~/swagasecurity›izanagi▌
SWAGA SECURITY // SECURITY SCANNER

Izanagi

An access-control vulnerability scanner. It takes an API description and two accounts, builds attack chains and shows the victim's data in the response for every finding. IDOR, BOLA, broken access control - #1 in the OWASP API Top-10 that ordinary scanners miss.

7
products and testbeds checked
2 CVE
reproduced on real products
IDOR/BOLA/BAC
access-logic classes
read-only
default mode
// feature overview
┌┐└┘
Spec discovery

Parses OpenAPI, scores its quality from 0 to 100 and fills the missing responses: sends safe probes to the live API and folds in real data shapes. Traversal goes from GET without params to POST, with writes only on explicit permission.

┌┐└┘
Attack methodology

Classes are baked into the prompt: IDOR in path, query, body and on static files; method probing on 401 and 403; calling admin endpoints with low privileges; mass assignment through privileged fields. Foreign keys aren't invented - it GETs the list first for a real value.

┌┐└┘
Chain execution

The only module that talks to the target API. It substitutes variables, keeps state between steps and supports filters in extractors, so for IDOR it picks a specific victim instead of guessing a list position.

┌┐└┘
Verdict

Every result goes to the model for a verdict: vulnerable, clean or repair. The repair branch rewrites a broken chain a few times. The conclusion is drawn from the actual data in the response, not a guess.

┌┐└┘
Finding classification

Every finding is checked against the project's history: new or already known, with a first-seen date. What was there before and is gone moves to a “no longer detected” section. Token spend is counted per scan.

// documentation · first scan
┌┐└┘
quick start
$ # bring the stack up in containers
$ cp .env.example .env   # your model's key and address
$ docker compose up -d --build

  UI              http://localhost:3000
  API             http://localhost:8081
  chain-processor http://localhost:8080

Everything builds and runs in containers, no local Go or Node needed. Any model connects: cloud over API or local - the key and address go in .env. VAmPI, a deliberately vulnerable API, comes up as the default target so you can run the whole flow out of the box.

  1. 01Create a projectTarget, base URL, description, stack. Optionally a custom prompt with roles and domain context.
  2. 02Set up sign-inA script prints key-value pairs for each account: tokenA, tokenB. Two identities - attacker and victim.
  3. 03Load OpenAPI and discoveryUpload the spec and run discovery from the SPEC tab. It enriches the description with real responses and lifts chain quality.
  4. 04Start a scanPick vulnerability classes, the number of chains, optionally deep analysis with repair. The engine takes it from there.
  5. 05Review findingsTabs for chains, vulnerabilities and the log. Each vulnerability gets a “new” or “known” badge and proof: the victim's data in the response.
// confirmed findings
┌┐└┘
[CRITICAL]Firefly III

GET /users/{id} doesn't check ownership (CVE-2023-0298): the response holds another account's email and data.

[HIGH]Grafana

DELETE /snapshots/{key} doesn't check the organization (CVE-2024-1313): the victim's control GET returns 404.

[CRITICAL]MedClinic

GET /api/records/1 returns another patient's medical record (training testbed).

[HIGH]OWASP crAPI

Admin functions and another car's location on a training marketplace.

[MEDIUM]VAmPI

Another user's book and profile on a training API.

On real products - an exact reproduction of known CVEs plus findings on our own platform. Training testbeds are stuffed with vulnerabilities on purpose, so there are naturally more findings there.

// backlog and roadmap
[IN PROGRESS] in progress[SHIPPED] in production
[IN PROGRESS]Jira integration

A finding opens a ticket on its own: with a link to the chain, severity and proof in the response. Status syncs back.

[IN PROGRESS]SARIF export

Export findings to the standard SARIF format so GitHub Code Scanning, GitLab and other systems pick them up.

[IN PROGRESS]Kubernetes packaging

A Helm chart and manifests: the whole stack deploys into the customer's cluster with one command, no manual container builds.

[IN PROGRESS]Dashboards

A per-scan summary in one place: findings by severity, trends between runs, token spend and cache share.

[SHIPPED]Scanner core

Chain generation, verdict and repair on a tool-use agent, prompt caching, any model over API. Done and in production.

Try Izanagi on your own API
A demo on examples, access to the cloud scanner, or a pilot in your environment.
Request a demo