Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
yoanbernabeu avatar

Supabase Report

  • 330 installs
  • 60 repo stars
  • Updated January 31, 2026
  • yoanbernabeu/supabase-pentest-skills

supabase-report is an agent skill that generates a comprehensive Markdown security audit report from Supabase pentest findings so developers who finished RLS, storage, and auth testing can deliver executive summaries and

About

supabase-report is a yoanbernabeu/supabase-pentest-skills agent skill that turns collected Supabase penetration-test evidence into shareable Markdown documentation. It reads findings from .sb-pentest-context.json, progressively logs each section to .sb-pentest-audit.log, and outputs supabase-audit-report.md with eight structured sections: Executive Summary, Security Score, Critical P0 findings, High P1 findings, Medium P2 findings, Detailed Analysis by component, Remediation Plan, and Appendix methodology notes. Developers invoke supabase-report after running detection, extraction, and audit skills in the 24-skill Supabase Pentest toolkit when stakeholders need quantified risk scores, proof-of-concept examples, and phased remediation owners. Progressive file writes are mandatory so partial reports survive interrupted runs. The skill suits security engineers and backend leads documenting exposed service_role keys, public storage buckets, RLS gaps, and Edge Function privilege issues before production launch.

  • Generates comprehensive Markdown security audit reports
  • Aggregates findings from all supabase-pentest-skills tools
  • Emphasizes progressive file writes to avoid data loss
  • Compatible with Claude Code, Cursor, GitHub Copilot
  • 242 installs — highest in the pentest suite

Supabase Report by the numbers

  • 330 all-time installs (skills.sh)
  • +17 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #603 of 2,203 Security skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yoanbernabeu/supabase-pentest-skills --skill supabase-report

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs330
repo stars60
Last updatedJanuary 31, 2026
Repositoryyoanbernabeu/supabase-pentest-skills

How do you generate a Supabase security audit report?

Generates a comprehensive Markdown security audit report from collected Supabase pentest findings, summarizing vulnerabilities and access control issues found.

Who is it for?

Security engineers finishing Supabase pentest audits who need executive summaries, P0–P2 finding tables, and remediation plans in Markdown.

Skip if: Greenfield Supabase setup without prior audit findings or teams needing live penetration testing rather than report compilation from existing context.

When should I use this skill?

Supabase pentest audit phases complete and the user needs a Markdown security report with executive summary, severity buckets, and remediation guidance.

What you get

supabase-audit-report.md, updated .sb-pentest-context.json report metadata, and progressive .sb-pentest-audit.log entries.

  • supabase-audit-report.md
  • Updated .sb-pentest-context.json
  • .sb-pentest-audit.log entries

By the numbers

  • Generates reports with 8 structured sections from executive summary through appendix
  • Belongs to the 24-skill Supabase Pentest toolkit

Files

SKILL.mdMarkdownGitHub ↗

Security Report Generator

🔴 CRITICAL: PROGRESSIVE FILE UPDATES REQUIRED

>

You MUST write to context files AS YOU GO, not just at the end.
- Write to .sb-pentest-audit.log IMMEDIATELY as you process each section
- Update .sb-pentest-context.json with report metadata progressively
- DO NOT wait until the entire report is generated to update files
- If the skill crashes or is interrupted, the partial progress must already be saved

>

This is not optional. Failure to write progressively is a critical error.

This skill generates a comprehensive Markdown security audit report from all collected findings.

When to Use This Skill

  • After completing security audit phases
  • To document findings for stakeholders
  • To create actionable remediation plans
  • For compliance and audit trail purposes

Prerequisites

  • Audit phases completed (context file populated)
  • Findings collected in .sb-pentest-context.json

Report Structure

The generated report includes:

1. Executive Summary — High-level overview for management 2. Security Score — Quantified risk assessment 3. Critical Findings (P0) — Immediate action required 4. High Findings (P1) — Address soon 5. Medium Findings (P2) — Plan to address 6. Detailed Analysis — Per-component breakdown 7. Remediation Plan — Prioritized action items 8. Appendix — Technical details, methodology

Usage

Generate Report

Generate security report from audit findings

Custom Report Name

Generate report as security-audit-2025-01.md

Specific Sections

Generate executive summary only

Output Format

The skill generates supabase-audit-report.md:

# Supabase Security Audit Report

**Target:** https://myapp.example.com
**Project:** abc123def.supabase.co
**Date:** January 31, 2025
**Auditor:** Internal Security Team

---

## Executive Summary

### Overview

This security audit identified **12 vulnerabilities** across the Supabase implementation, including **3 critical (P0)** issues requiring immediate attention.

### Key Findings

| Severity | Count | Status |
|----------|-------|--------|
| 🔴 P0 (Critical) | 3 | Immediate action required |
| 🟠 P1 (High) | 4 | Address within 7 days |
| 🟡 P2 (Medium) | 5 | Address within 30 days |

### Security Score

**Score: 35/100 (Grade: D)**

The application has significant security gaps that expose user data and allow privilege escalation. Critical issues must be addressed before the application can be considered secure.

### Most Critical Issues

1. **Service Role Key Exposed** — Full database access possible
2. **Database Backups Public** — All data downloadable
3. **Admin Function No Auth** — Any user can access admin features

### Recommended Actions

1. ⚡ **Immediate (Today):**
   - Rotate service role key
   - Make backup bucket private
   - Add admin role verification

2. 🔜 **This Week:**
   - Enable RLS on all tables
   - Enable email confirmation
   - Fix IDOR in Edge Functions

3. 📅 **This Month:**
   - Strengthen password policy
   - Restrict CORS origins
   - Add rate limiting to functions

---

## Critical Findings (P0)

### P0-001: Service Role Key Exposed in Client Code

**Severity:** 🔴 Critical
**Component:** Key Management
**CVSS:** 9.8 (Critical)

#### Description

The Supabase service_role key was found in client-side JavaScript code. This key bypasses all Row Level Security policies and provides full database access.

#### Location

File: /static/js/admin.chunk.js Line: 89 Code: const SUPABASE_KEY = 'eyJhbGciOiJIUzI1NiI...'


#### Impact

- Full read/write access to all database tables
- Bypass of all RLS policies
- Access to auth.users table (all user data)
- Ability to delete or modify any data

#### Proof of Concept

curl 'https://abc123def.supabase.co/rest/v1/users' \ -H 'apikey: [service_role_key]' \ -H 'Authorization: Bearer [service_role_key]'

Returns ALL users with full data


#### Remediation

**Immediate:**
1. Rotate the service role key in Supabase Dashboard
   - Settings → API → Regenerate service_role key
2. Remove the key from client code
3. Redeploy the application

**Long-term:**

// Move privileged operations to Edge Functions // supabase/functions/admin-action/index.ts

import { createClient } from '@supabase/supabase-js'

Deno.serve(async (req) => { // Service key only on server const supabase = createClient( Deno.env.get('SUPABASE_URL')!, Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')! )

// Verify caller is admin before proceeding // ... })


**Documentation:**
- [Supabase API Keys](https://supabase.com/docs/guides/api/api-keys)
- [Edge Functions](https://supabase.com/docs/guides/functions)

---

### P0-002: Database Backups Publicly Accessible

**Severity:** 🔴 Critical
**Component:** Storage
**CVSS:** 9.1 (Critical)

#### Description

The storage bucket named "backups" is configured as public, exposing database dumps, user exports, and environment secrets.

#### Exposed Files

| File | Size | Content |
|------|------|---------|
| db-backup-2025-01-30.sql | 125MB | Full database dump |
| users-export.csv | 2.3MB | All user data with PII |
| secrets.env | 1KB | API keys and passwords |

#### Impact

- Complete data breach (all database content)
- Exposed credentials for third-party services
- User PII exposed (emails, names, etc.)

#### Remediation

**Immediate:**

-- Make bucket private UPDATE storage.buckets SET public = false WHERE name = 'backups';

-- Delete or move files -- Consider incident response procedures


**Credential Rotation:**
- Stripe API keys
- Database password
- JWT secret
- Any other keys in secrets.env

---

### P0-003: Admin Edge Function Privilege Escalation

**Severity:** 🔴 Critical
**Component:** Edge Functions
**CVSS:** 8.8 (High)

#### Description

The `/functions/v1/admin-panel` Edge Function is accessible to any authenticated user without role verification.

[... additional P0 findings ...]

---

## High Findings (P1)

### P1-001: Email Confirmation Disabled

**Severity:** 🟠 High
**Component:** Authentication

[... P1 findings ...]

---

## Medium Findings (P2)

### P2-001: Weak Password Policy

**Severity:** 🟡 Medium
**Component:** Authentication

[... P2 findings ...]

---

## Detailed Analysis by Component

### API Security

| Table | RLS | Access Level | Status |
|-------|-----|--------------|--------|
| users | ❌ | Full read | 🔴 P0 |
| orders | ✅ | None | ✅ |
| posts | ✅ | Published only | ✅ |

### Storage Security

| Bucket | Public | Sensitive Files | Status |
|--------|--------|-----------------|--------|
| avatars | Yes | No | ✅ |
| backups | Yes | Yes (45 files) | 🔴 P0 |

### Authentication

| Setting | Current | Recommended | Status |
|---------|---------|-------------|--------|
| Email confirm | Disabled | Enabled | 🟠 P1 |
| Password min | 6 | 8+ | 🟡 P2 |

---

## Remediation Plan

### Phase 1: Critical (Immediate)

| ID | Action | Owner | Deadline |
|----|--------|-------|----------|
| P0-001 | Rotate service key | DevOps | Today |
| P0-002 | Make backups private | DevOps | Today |
| P0-003 | Add admin role check | Backend | Today |

### Phase 2: High Priority (This Week)

| ID | Action | Owner | Deadline |
|----|--------|-------|----------|
| P1-001 | Enable email confirmation | Backend | 3 days |
| P1-002 | Fix IDOR in get-user-data | Backend | 3 days |

### Phase 3: Medium Priority (This Month)

| ID | Action | Owner | Deadline |
|----|--------|-------|----------|
| P2-001 | Strengthen password policy | Backend | 14 days |
| P2-002 | Restrict CORS origins | DevOps | 14 days |

---

## Appendix

### A. Methodology

This audit was performed using the Supabase Pentest Skills toolkit, which includes:
- Passive reconnaissance of client-side code
- API endpoint testing with anon and service keys
- Storage bucket enumeration and access testing
- Authentication flow analysis
- Real-time channel subscription testing

### B. Tools Used

- supabase-pentest-skills v1.0.0
- curl for API testing
- Browser DevTools for client code analysis

### C. Audit Scope

- Target URL: https://myapp.example.com
- Supabase Project: abc123def
- Components tested: API, Storage, Auth, Realtime, Edge Functions
- Exclusions: None

### D. Audit Log

Full audit log available in `.sb-pentest-audit.log`

---

**Report generated by supabase-pentest-skills**
**Audit completed:** January 31, 2025 at 15:00 UTC

Score Calculation

The security score is calculated based on:

FactorWeightCalculation
P0 findings-25 per issueCritical vulnerabilities
P1 findings-10 per issueHigh severity issues
P2 findings-5 per issueMedium severity issues
RLS coverage+10 if 100%All tables have RLS
Auth hardening+10Email confirm, strong passwords
Base score100Starting point

Grade Scale

ScoreGradeDescription
90-100AExcellent security posture
80-89BGood, minor improvements needed
70-79CAcceptable, address issues
60-69DPoor, significant issues
0-59FCritical, immediate action needed

Context Input

The report generator reads from .sb-pentest-context.json:

{
  "target_url": "https://myapp.example.com",
  "supabase": {
    "project_url": "https://abc123def.supabase.co",
    "project_ref": "abc123def"
  },
  "findings": [
    {
      "id": "P0-001",
      "severity": "P0",
      "component": "keys",
      "title": "Service Role Key Exposed",
      "description": "...",
      "location": "...",
      "remediation": "..."
    }
  ],
  "audit_completed": "2025-01-31T15:00:00Z"
}

Report Customization

Include/Exclude Sections

Generate report without appendix
Generate report with executive summary only

Different Formats

Generate report in JSON format
Generate report summary as HTML

MANDATORY: Context File Dependency

⚠️ This skill REQUIRES properly populated tracking files.

Prerequisites

Before generating a report, ensure:

1. `.sb-pentest-context.json` exists and contains findings from audit skills 2. `.sb-pentest-audit.log` exists with timestamped actions 3. All relevant audit skills have updated these files

If Context Files Are Missing

If context files are missing or empty: 1. DO NOT generate an empty report 2. Inform the user that audit skills must be run first 3. Recommend running supabase-pentest for a complete audit

Report Generation Output

After generating the report, this skill MUST:

1. Log to `.sb-pentest-audit.log`:

   [TIMESTAMP] [supabase-report] [START] Generating security report
   [TIMESTAMP] [supabase-report] [SUCCESS] Report generated: supabase-audit-report.md
   [TIMESTAMP] [supabase-report] [CONTEXT_UPDATED] Report generation logged

2. Update `.sb-pentest-context.json` with report metadata:

   {
     "report": {
       "generated_at": "...",
       "filename": "supabase-audit-report.md",
       "findings_count": { "p0": 3, "p1": 4, "p2": 5 }
     }
   }

FAILURE TO UPDATE CONTEXT FILES IS NOT ACCEPTABLE.

Related Skills

  • supabase-report-compare — Compare with previous reports
  • supabase-pentest — Run full audit first
  • supabase-help — List all available skills

Related skills

How it compares

Use supabase-report after running Supabase audit skills when you need stakeholder Markdown—not during live scanning or key extraction phases.

FAQ

What input does supabase-report require?

supabase-report reads collected findings and metadata from .sb-pentest-context.json populated by prior Supabase Pentest audit skills, then writes progressive entries to .sb-pentest-audit.log during generation.

What sections appear in a supabase-report output?

supabase-report assembles supabase-audit-report.md with Executive Summary, Security Score, P0/P1/P2 finding sections, Detailed Analysis by component, Remediation Plan, and an Appendix covering methodology.

Why does supabase-report write files progressively?

supabase-report mandates incremental updates to .sb-pentest-audit.log and context metadata so partial audit reports survive agent interruptions instead of losing all findings at the end of generation.

Securityauditcompliance

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.