supabase-evidence
Initialize and manage the evidence collection directory for professional security audits with documented proof of findings.
What this skill does
# Evidence Collection Management
> ๐ด **CRITICAL: PROGRESSIVE FILE UPDATES REQUIRED**
>
> You MUST write evidence files **AS YOU GO**, not just at the end.
> - Save each piece of evidence **IMMEDIATELY after collection**
> - **DO NOT** wait until the skill completes to save evidence
> - If the audit crashes or is interrupted, all prior evidence must already be saved
>
> **This is not optional. Failure to save evidence progressively is a critical error.**
This skill initializes and manages the evidence collection system for professional security audits.
## When to Use This Skill
- Automatically invoked at the start of `supabase-pentest`
- When you need to organize evidence for a professional report
- When conducting audits that require documented proof
- For compliance and legal purposes
## Why Evidence Collection Matters
Professional security audits require:
| Requirement | Purpose |
|-------------|---------|
| **Reproducibility** | Others can verify findings |
| **Legal proof** | Documentation for legal/compliance |
| **Remediation verification** | Prove issues existed before fix |
| **Audit trail** | Complete record of what was tested |
## Evidence Directory Structure
The skill creates `.sb-pentest-evidence/` with this structure:
```
.sb-pentest-evidence/
โโโ README.md # Evidence index and summary
โโโ curl-commands.sh # All curl commands used (reproducible)
โโโ timeline.md # Chronological evidence timeline
โ
โโโ 01-detection/
โ โโโ initial-scan.json # Raw detection results
โ โโโ supabase-endpoints.txt # Discovered endpoints
โ โโโ client-code-snippets/ # Relevant code excerpts
โ โโโ supabase-init.js
โ
โโโ 02-extraction/
โ โโโ extracted-url.json # URL extraction proof
โ โโโ extracted-anon-key.json # Anon key with decoded JWT
โ โโโ extracted-jwts.json # All JWTs found
โ โโโ service-key-exposure/ # If service key found (P0)
โ โ โโโ location.txt
โ โ โโโ decoded-payload.json
โ โโโ db-string-exposure/ # If DB string found (P0)
โ โโโ connection-details.json
โ
โโโ 03-api-audit/
โ โโโ openapi-schema.json # Raw OpenAPI/PostgREST schema
โ โโโ tables/
โ โ โโโ tables-list.json # All exposed tables
โ โ โโโ tables-metadata.json # Column details per table
โ โโโ data-samples/ # Sample data retrieved (redacted)
โ โ โโโ users-sample.json
โ โ โโโ orders-sample.json
โ โ โโโ ...
โ โโโ rls-tests/ # RLS policy test results
โ โ โโโ users-anon.json # Anon access attempt
โ โ โโโ users-auth.json # Authenticated access
โ โ โโโ cross-user-test.json # Cross-user access attempt
โ โโโ rpc-tests/ # RPC function test results
โ โโโ function-list.json
โ โโโ vulnerable-functions/
โ โโโ get-all-users.json
โ
โโโ 04-storage-audit/
โ โโโ buckets-config.json # Bucket configurations
โ โโโ buckets/
โ โ โโโ avatars/
โ โ โ โโโ file-list.json
โ โ โโโ backups/ # If sensitive (P0)
โ โ โ โโโ file-list.json
โ โ โ โโโ sample-contents/ # Redacted samples
โ โ โโโ ...
โ โโโ public-url-tests/ # Direct URL access tests
โ โโโ backup-access.json
โ
โโโ 05-auth-audit/
โ โโโ auth-settings.json # Auth configuration
โ โโโ signup-tests/
โ โ โโโ open-signup.json # Signup availability
โ โ โโโ weak-password.json # Weak password test
โ โ โโโ rate-limit.json # Rate limiting test
โ โโโ enumeration-tests/
โ โโโ login-timing.json # Timing attack data
โ โโโ recovery-timing.json
โ โโโ otp-enumeration.json
โ
โโโ 06-realtime-audit/
โ โโโ websocket-connection.json
โ โโโ postgres-changes/ # Table subscription tests
โ โ โโโ users-streaming.json
โ โโโ broadcast-channels/ # Channel access tests
โ โ โโโ admin-channel.json
โ โโโ presence-data/
โ โโโ exposed-users.json
โ
โโโ 07-functions-audit/
โ โโโ discovered-functions.json
โ โโโ function-tests/
โ โโโ hello-world.json
โ โโโ get-user-data-idor.json
โ โโโ admin-panel-escalation.json
โ
โโโ screenshots/ # Optional: browser screenshots
โโโ ...
```
## Usage
### Initialize Evidence Directory
```
Initialize evidence collection for audit
```
### Manual Evidence Save
```
Save evidence: [description] to [category]
```
## Evidence File Format
Each evidence file follows this structure:
```json
{
"evidence_id": "API-001",
"timestamp": "2025-01-31T10:30:00Z",
"category": "api-audit",
"type": "data-sample",
"finding_id": "P0-001",
"description": "Users table data accessible without authentication",
"request": {
"method": "GET",
"url": "https://abc123.supabase.co/rest/v1/users?select=*&limit=5",
"headers": {
"apikey": "[REDACTED - anon key]",
"Authorization": "Bearer [REDACTED - anon key]"
},
"curl_command": "curl -X GET 'https://abc123.supabase.co/rest/v1/users?select=*&limit=5' -H 'apikey: eyJ...' -H 'Authorization: Bearer eyJ...'"
},
"response": {
"status": 200,
"headers": {
"content-type": "application/json",
"x-total-count": "1247"
},
"body": [
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"email": "[REDACTED]@example.com",
"name": "[REDACTED]",
"created_at": "2025-01-15T10:30:00Z"
}
],
"body_redacted": true,
"total_rows_indicated": 1247
},
"analysis": {
"severity": "P0",
"impact": "All user PII accessible without authentication",
"affected_data": ["email", "name", "id"],
"row_count": 1247
}
}
```
## Curl Commands File
All curl commands are collected in `curl-commands.sh`:
```bash
#!/bin/bash
# Supabase Security Audit - Reproducible Commands
# Target: https://myapp.example.com
# Project: abc123def.supabase.co
# Date: 2025-01-31
#
# IMPORTANT: Replace [ANON_KEY] with actual key before running
# WARNING: These commands may modify data - use with caution
SUPABASE_URL="https://abc123def.supabase.co"
ANON_KEY="eyJ..."
# === DETECTION ===
# Check if Supabase is used
curl -s "$SUPABASE_URL/rest/v1/" -H "apikey: $ANON_KEY" | head -100
# === TABLE LISTING ===
# Get OpenAPI schema (list all tables)
curl -s "$SUPABASE_URL/rest/v1/" -H "apikey: $ANON_KEY"
# === DATA ACCESS TESTS ===
# Test: Users table (P0 - should be blocked)
curl -s "$SUPABASE_URL/rest/v1/users?select=*&limit=5" \
-H "apikey: $ANON_KEY" \
-H "Authorization: Bearer $ANON_KEY"
# Test: Orders table (should be blocked by RLS)
curl -s "$SUPABASE_URL/rest/v1/orders?select=*&limit=5" \
-H "apikey: $ANON_KEY" \
-H "Authorization: Bearer $ANON_KEY"
# === RLS BYPASS TESTS ===
# ... additional commands ...
```
## Timeline File
The `timeline.md` provides chronological evidence:
```markdown
# Audit Timeline
## 2025-01-31 10:00:00 - Audit Started
- Target: https://myapp.example.com
- Authorization confirmed
## 2025-01-31 10:05:00 - Detection Phase
- Supabase detected with high confidence
- Project URL: https://abc123def.supabase.co
- Evidence: `01-detection/initial-scan.json`
## 2025-01-31 10:10:00 - P0 CRITICAL: Service Key Exposed
- Service role key found in client code
- Location: /static/js/admin.chunk.js:89
- Evidence: `02-extraction/service-key-exposure/`
## 2025-01-31 10:15:00 - API Audit Started
- 8 tables discovered
- Evidence: `03-api-audit/tables/tables-list.json`
## 2025-01-31 10:20:00 - P0 CRITICAL: Users Table Exposed
- All 1,247 user records accessible
- PII exposed: email, name
- Evidence: `03-api-audit/data-samples/users-sample.json`
...
```
## Context Output
Updates `.sb-pentest-context.json`:
```json
{
"evidence": {
"directory": ".sb-pentest-evidence",
"initialized_at": "2025-01-31T10:00:00Z",
"files_count": 45,
"categories": {
"detection": 3,
"extraction": 5,
"api-audit": 15,
"storage-audit": 8,
"auth-audit": 7,
"realtime-audit": 4,
"funRelated in Security
mac-ops
IncludedComprehensive macOS workstation operations โ diagnose kernel panics, identify failing drives, audit launchd startup items, decode wake reasons, triage TCC permission denials, manage APFS snapshots, recover from no-boot. Use for: Mac is slow, slow bootup, won't boot, kernel panic, kernel_task hot, mds_stores CPU, photoanalysisd, cloudd, login loop, gray screen, sleep wake failure, drive failing, IO errors, APFS snapshots eating space, Time Machine local snapshots, Spotlight indexing, launchd, LaunchAgent, LaunchDaemon, login items, TCC permissions, Full Disk Access, Screen Recording denied, Gatekeeper, quarantine, com.apple.quarantine, app is damaged, helper tool, /Library/PrivilegedHelperTools, pmset, wake reasons, dark wake, sysdiagnose, panic.ips, DiagnosticReports, configuration profile, MDM profile, remote diagnostics over SSH.
a11y-audit
IncludedRun accessibility audits on web projects combining automated scanning (axe-core, Lighthouse) with WCAG 2.1 AA compliance mapping, manual check guidance, and structured reporting. Output is configurable: markdown report only, markdown plus machine-readable JSON, or markdown plus issue tracker integration. Use this skill whenever the user mentions "accessibility audit", "a11y audit", "WCAG audit", "accessibility check", "compliance scan", or asks to check a web project for accessibility issues. Also trigger when the user wants to verify WCAG conformance or map findings to a specific standard (CAN-ASC-6.2, EN 301 549, ADA/AODA).
erpclaw
IncludedAI-native ERP system with self-extending OS. Full accounting, invoicing, inventory, purchasing, tax, billing, HR, payroll, advanced accounting (ASC 606/842, intercompany, consolidation), and financial reporting. 413 actions across 14 domains, 43 expansion modules. Constitutional guardrails, adversarial audit, schema migration. Double-entry GL, immutable audit trail, US GAAP.
assess
IncludedAssesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with actionable improvement suggestions. Use when evaluating code, designs, architectures, or comparing alternative approaches.
spring-boot-security-jwt
IncludedProvides JWT authentication and authorization patterns for Spring Boot 3.5.x covering token generation with JJWT, Bearer/cookie authentication, database/OAuth2 integration, and RBAC/permission-based access control using Spring Security 6.x. Use when implementing authentication or authorization in Spring Boot applications.
code-hardcode-audit
IncludedDetect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.