~/swagasecurityizanagi
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