OpenAPI-Bifrost

An alternative Burp Suite extension for loading OpenAPI specifications and bridging parsed endpoints into Scanner, Repeater, and Intruder — with a built-in RBAC comparison grid for testing authorization across multiple identities in a single pass.

Offers a different feature set to the existing OpenAPI Parser extension — not a replacement.

Main panel — spec loaded, four identities configured, session cookie imported, endpoints listed

The RBAC differentiator

Pick any subset of endpoints, right-click → Compare across identities…, and Bifrost runs each request under each named identity you’ve configured. The resulting live-updating matrix classifies every row by how far each identity got through the server’s processing stack — surfacing authorization anomalies that would otherwise hide under generic “403” or “404” responses.

RBAC comparison grid showing 150 endpoints × 4 identities, 600/600 cells completed in 19 seconds

Classification uses a stack-depth model rather than a plain allow/deny split:

Right-click any cell to send that exact (endpoint, identity) request to Repeater. Export the full matrix to CSV — with a human-readable explanation column — for reporting. Declare tag→tier rules (e.g. Admin -> admin*) to overlay violation assessments directly in the grid and CSV.

Destructive endpoints (/logout, DELETE, /revoke, etc.) are detected before the run starts and offered for exclusion by default — firing /api/logout mid-comparison invalidates the sessions you’re testing with, which the tool gracefully refuses to do silently.

Loading a spec

Multiple ways in:

When multiple identities exist, “Send to OpenAPI-Bifrost” prompts for which identity should receive the imported auth — preventing silent overwrites that were a source of false-negative RBAC results.

Supports OpenAPI 2.0 (Swagger) and OpenAPI 3.x in both JSON and YAML. Handles the common shell-prompt paste (strips leading anon@host:/$ cat openapi.json chatter). Path parameters get format-aware placeholders based on the spec’s schema: format: uuid → a real UUID, format: date-time → a valid ISO timestamp, enums use their first value, etc. Strict server-side validators therefore route the request to the auth layer instead of bouncing it at the URL-match stage.

Authentication and identities

Bifrost centres on named identities. Each identity holds:

Switch via the dropdown in the Authentication panel; add / rename / delete named identities with the buttons alongside. Identities persist across Burp restarts via the Java preferences store.

When a spec declares components.securitySchemes, the panel shows a one-line summary and pre-fills the API key header name if exactly one apiKey scheme is declared.

Sending to Burp tools

Select one or more endpoints → right-click → OpenAPI-Bifrost

Ctrl+I / Cmd+I sends the selection to Intruder.

Usability details

Installation

  1. Build: ./gradlew build
  2. In Burp: Extensions → Installed → Add → Extension type: Java → select build/libs/OpenAPI-Bifrost-1.0.jar.

Requires Burp Suite with Montoya support. Active Scan requires Burp Suite Professional; everything else (RBAC comparison, imports, Intruder, Repeater) works on Community.

Build

./gradlew build

Requires Java 17+. Runs the full JUnit 5 suite, Cucumber BDD scenarios, and JaCoCo coverage verification (80% line coverage gate on non-UI classes).

License

MIT. See LICENSE.