Loading...
Loading...
Orchestrate a complete Supabase security audit with guided step-by-step execution and ownership confirmation.
npx skill4agent add yoanbernabeu/supabase-pentest-skills supabase-pentest🔵 RECOMMENDED: USE PLAN MODE FOR COMPLEX AUDITSWhen your environment supports Plan Mode, it is strongly recommended to activate it before starting the audit:
- Use the
tool at the start of the orchestrationEnterPlanMode- Plan Mode enables better organization of multi-phase audits
- It allows the user to validate the approach before execution
- If Plan Mode is not available, proceed directly with execution
Plan Mode provides better traceability and user control over the audit process.
🔴 CRITICAL: PROGRESSIVE FILE UPDATES REQUIREDYou MUST write to context files AS YOU GO, not just at the end.
- Write to
IMMEDIATELY after each discovery.sb-pentest-context.json- Log to
BEFORE and AFTER each action.sb-pentest-audit.log- DO NOT wait until a phase or skill completes to update files
- If the audit crashes or is interrupted, all prior findings must already be saved
This is not optional. Failure to write progressively is a critical error.
.sb-pentest-context.json.sb-pentest-audit.log.sb-pentest-evidence/.sb-pentest-audit.log.sb-pentest-context.json.sb-pentest-evidence/All tracking files MUST be systematically maintained throughout the entire audit.
| File | Purpose | Update Frequency |
|---|---|---|
| Centralized state and findings | After EVERY discovery |
| Chronological action log | BEFORE and AFTER every action |
| Timestamped findings narrative | After EVERY significant finding |
| Reproducible test commands | After EVERY curl/HTTP request |
.sb-pentest-context.json.sb-pentest-audit.log.sb-pentest-evidence/XX-phase-name/timeline.mdcurl-commands.sh1. [LOG] Write START entry to audit.log
2. [CONTEXT] Update context.json with "phase_in_progress"
3. [ACTION] Perform the test/scan
4. [EVIDENCE] Save evidence file IMMEDIATELY
5. [CURL] Append curl command to curl-commands.sh
6. [TIMELINE] Update timeline.md if significant finding
7. [CONTEXT] Update context.json with results
8. [LOG] Write COMPLETE entry to audit.log⚠️ AUTHORIZATION REQUIRED
Before proceeding, you must confirm:
1. I own this application, OR
2. I have explicit written authorization to perform security testing
Unauthorized security testing may violate laws and terms of service.
Type "I confirm I am authorized to test this application" to proceed.📁 REMINDER: After EVERY phase, verify that:
is updated with phase results.sb-pentest-context.json has START and COMPLETE entries.sb-pentest-audit.log- Evidence files are saved to
.sb-pentest-evidence/XX-phase/ reflects any significant findingstimeline.md contains all HTTP requests madecurl-commands.sh
EnterPlanMode.sb-pentest-context.json.sb-pentest-audit.log.sb-pentest-evidence/curl-commands.shtimeline.md.sb-pentest-audit.logsupabase-evidencesupabase-detect.sb-pentest-evidence/01-detection/supabase-extract-urlsupabase-extract-anon-keysupabase-extract-service-keysupabase-extract-jwtsupabase-extract-db-string.sb-pentest-evidence/02-extraction/supabase-audit-tables-listsupabase-audit-tables-readsupabase-audit-rlssupabase-audit-rpc.sb-pentest-evidence/03-api-audit/supabase-audit-buckets-listsupabase-audit-buckets-readsupabase-audit-buckets-public.sb-pentest-evidence/04-storage-audit/supabase-audit-auth-configsupabase-audit-auth-signupsupabase-audit-auth-userssupabase-audit-authenticated.sb-pentest-evidence/05-auth-audit/⚠️ Note:will ask for explicit consent before creating a test user. This is optional but highly recommended to detect IDOR and cross-user access vulnerabilities.supabase-audit-authenticated
supabase-audit-realtimesupabase-audit-functions.sb-pentest-evidence/06-realtime-audit/.sb-pentest-evidence/07-functions-audit/supabase-report1. User requests audit → Agent uses EnterPlanMode
2. Agent explores target superficially (detect Supabase, extract URL)
3. Agent writes plan to plan file with:
- Target URL
- Detected Supabase configuration
- Proposed phases to execute
- Estimated scope
4. Agent uses ExitPlanMode → User reviews and approves
5. Agent executes phases with systematic file updates
6. After each phase → Agent confirms files are updated
7. Final report generationRun a Supabase security audit on https://myapp.example.comEnterPlanModeRun a Supabase security audit on https://myapp.example.com --no-planContinue Supabase audit from Phase 3 (API Audit)Run Supabase audit on https://myapp.example.com, skip auth audit| File/Directory | Purpose |
|---|---|
| Stores extracted data between phases |
| Logs all actions with timestamps |
| Evidence directory for professional audits |
.sb-pentest-evidence/
├── README.md # Evidence index
├── curl-commands.sh # All reproducible curl commands
├── timeline.md # Chronological findings
├── 01-detection/ # Detection evidence
├── 02-extraction/ # Key extraction evidence
├── 03-api-audit/ # API audit evidence
│ ├── tables/
│ ├── data-samples/
│ ├── rls-tests/
│ └── rpc-tests/
├── 04-storage-audit/ # Storage audit evidence
│ ├── buckets/
│ └── public-url-tests/
├── 05-auth-audit/ # Auth audit evidence
│ ├── signup-tests/
│ └── enumeration-tests/
├── 06-realtime-audit/ # Realtime audit evidence
├── 07-functions-audit/ # Functions audit evidence
└── screenshots/ # Optional screenshots.sb-pentest-context.json.sb-pentest-audit.log.sb-pentest-audit.log[YYYY-MM-DD HH:MM:SS] [SKILL_NAME] [STATUS] Message[2025-01-31 14:00:00] [supabase-detect] [START] Starting Supabase detection
[2025-01-31 14:00:05] [supabase-detect] [SUCCESS] Supabase detected
[2025-01-31 14:00:05] [supabase-detect] [CONTEXT_UPDATED] .sb-pentest-context.json updated{
"target_url": "https://myapp.example.com",
"started_at": "2025-01-31T10:00:00Z",
"authorization_confirmed": true,
"supabase": {
"detected": true,
"project_url": "https://abc123.supabase.co",
"anon_key": "eyJ...",
"service_key_exposed": false
},
"phases_completed": ["detection", "extraction"],
"findings": []
}═══════════════════════════════════════════════════════════
PHASE 2 COMPLETE: Key Extraction
═══════════════════════════════════════════════════════════
Findings:
├── ✅ Anon key found (expected)
├── ❌ P0: Service role key EXPOSED in main.js:1247
└── ⚠️ P1: JWT secret pattern detected
Proceed to Phase 3 (API Audit)? [Y/n]
═══════════════════════════════════════════════════════════Run audit with Supabase URL https://myproject.supabase.co.sb-pentest-context.jsonsupabase-helpsupabase-evidencesupabase-reportsupabase-report-compare