ssf is an enterprise-grade, asynchronous security auditing framework for Supabase projects. It goes beyond simple configuration checks to actively test for vulnerabilities like SQL Injection, IDOR, and Information Leakage.
Enable AI analysis, brute-forcing
| Provider | Argument (`--agent-provider`) | Example Models (`--agent`) |
|---|---|---|
| Google Gemini | gemini | gemini-2.5-flash, gemini-2.5-pro , gemini-3-pro-preview, gemini-2.5-flash-lite |
| OpenAI | openai | gpt-4-turbo, gpt-4o , gpt-oss-120b , gpt-4o-mini |
| Anthropic | anthropic | claude-sonnet-4-5-20250929 , claude-sonnet-4-5 , anthropic.claude-sonnet-4-5-20250929-v1:0 , claude-opus-4-5 |
| DeepSeek | deepseek | deepseek-chat |
| Ollama (Local) | ollama | llama3, mistral, phi3 |
Block regressions by comparing against a baseline:
Scan your local source code for Supabase-specific vulnerabilities:
Generate a SQL script to fix identified vulnerabilities:
Launch a browser-based interface for managing scans and viewing results:
Test for vertical privilege escalation by providing multiple role tokens:
This enables testing of access control boundaries between different user roles.
Generate a comprehensive threat model including Data Flow Diagrams and Attack Paths:
Use built-in tamper scripts or custom ones to bypass Web Application Firewalls:
randomcase - SeLECt * fRoM...charencode - URL encodedoubleencode - Double URL encodeunionall - UNION SELECT → UNION ALL
SELECTspace2plus - space → +version_comment - space → /*!50000*/
Create a knowledge.json file to ignore known safe patterns:
| Flag | Description |
|---|---|
| --verbose, -v | Enable verbose logging |
| --json | Save report to JSON file |
| --html | Generate HTML report |
| --brute [LIST] | Enable Bruteforce (optional: path to wordlist) |
| --exploit | Automatically run generated exploits |
| --gen-fixes | Generate SQL fix script from AI analysis |
| --verify-fix | Verify remediation of accepted risks |
| --analyze PATH | Run Static Code Analysis on file or directory |
| --plugins LIST | Select plugins to run (comma-separated or 'all') |
| --dump-all | Dump all rows found in RLS scan (default: limit 5) |
| --sniff [SEC] | Enable Realtime Sniffer for N seconds (default: 10) |
| --check-config | Check PostgREST configuration (max_rows) |
| --proxy URL | Route traffic through an HTTP proxy |
| --random-agent | Use a random User-Agent header |
| --level LEVEL | Level of tests to perform (1-5, default 1) |
| --wizard | Run in wizard mode for beginners |
| --compile | Compile tool to standalone executable |
| --stealth | Enable Stealth Mode (JA3 Spoofing via curl_cffi) |
| --sarif | Generate SARIF report for GitHub Security |
| --ngrok | Expose Web UI via ngrok |
| --auth | Enable authentication for Web UI (e.g., admin:secret) |
curl_cffi to spoof JA3/TLS fingerprints, mimicking a real
Chrome browser to bypass WAFs.
eq, in, ov,
sl, etc.) with heuristic analysis for SQLi/Bypass.