
Supabase Audit Auth Config
- 352 installs
- 60 repo stars
- Updated January 31, 2026
- yoanbernabeu/supabase-pentest-skills
supabase-audit-auth-config is a Supabase pentest skill that audits authentication configuration for misconfigurations and writes progressive findings for developers who need resilient, interrupt-safe security reviews.
About
supabase-audit-auth-config is a security audit skill from yoanbernabeu/supabase-pentest-skills that analyzes Supabase project authentication settings for weaknesses and misconfigurations. Unlike one-shot reports, it mandates progressive file updates: each analyzed setting is written immediately to .sb-pentest-context.json and logged before and after every test in .sb-pentest-audit.log so interrupted runs still preserve prior findings. Developers reach for it during pre-production Supabase hardening, compliance checks, or pentest prep when auth flows, provider settings, or session policies need structured review. The skill is procedural—an agent follows its checklist against live project config rather than shipping code. It pairs with other supabase-pentest-skills for broader surface coverage beyond auth alone.
- Analyzes Supabase auth settings for vulnerabilities
- Saves findings progressively to prevent data loss on interruption
- Automated misconfiguration detection
- Integrates with supabase-pentest orchestration workflow
Supabase Audit Auth Config by the numbers
- 352 all-time installs (skills.sh)
- +18 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #581 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-audit-auth-configAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 352 |
|---|---|
| repo stars | ★ 60 |
| Last updated | January 31, 2026 |
| Repository | yoanbernabeu/supabase-pentest-skills ↗ |
How do you audit Supabase Auth for misconfigurations?
Audits Supabase project authentication configuration for security vulnerabilities and misconfigurations, with progressive context file logging to preserve findings if interrupted.
Who is it for?
Developers or security engineers running structured Supabase Auth reviews who need crash-safe progressive logging during pentest workflows.
Skip if: Teams seeking automated SAST of application source code rather than live Supabase Auth dashboard and API configuration review.
When should I use this skill?
The developer asks to audit, pentest, or harden Supabase authentication settings and wants findings saved as the review progresses.
What you get
.sb-pentest-context.json findings file and .sb-pentest-audit.log with per-setting security analysis and test timestamps.
- .sb-pentest-context.json
- .sb-pentest-audit.log
- Auth misconfiguration report
By the numbers
- Writes to 2 context artifacts: .sb-pentest-context.json and .sb-pentest-audit.log
- Requires progressive file updates after each auth setting analyzed
Files
Authentication Configuration Audit
🔴 CRITICAL: PROGRESSIVE FILE UPDATES REQUIRED
>
You MUST write to context files AS YOU GO, not just at the end.
- Write to .sb-pentest-context.json IMMEDIATELY after each setting analyzed- Log to .sb-pentest-audit.log BEFORE and AFTER each test- DO NOT wait until the skill completes to update files
- If the skill crashes or is interrupted, all prior findings must already be saved
>
This is not optional. Failure to write progressively is a critical error.
This skill analyzes the authentication configuration of a Supabase project.
When to Use This Skill
- To review authentication security settings
- Before production deployment
- When auditing auth-related vulnerabilities
- As part of comprehensive security review
Prerequisites
- Supabase URL and anon key available
- Detection completed
Auth Endpoints
Supabase Auth (GoTrue) exposes:
https://[project].supabase.co/auth/v1/| Endpoint | Purpose |
|---|---|
/auth/v1/settings | Public settings (limited) |
/auth/v1/signup | User registration |
/auth/v1/token | Authentication |
/auth/v1/user | Current user info |
/auth/v1/recover | Password recovery |
What Can Be Detected
From the public API, we can detect:
| Setting | Detection Method |
|---|---|
| Email auth enabled | Attempt signup |
| Phone auth enabled | Check settings |
| OAuth providers | Check settings |
| Signup disabled | Attempt signup |
| Email confirmation | Signup response |
| Password requirements | Error messages |
Usage
Basic Auth Audit
Audit authentication configurationCheck Specific Features
Check if signup is open and what providers are enabledOutput Format
═══════════════════════════════════════════════════════════
AUTHENTICATION CONFIGURATION AUDIT
═══════════════════════════════════════════════════════════
Project: abc123def.supabase.co
Auth Endpoint: https://abc123def.supabase.co/auth/v1/
─────────────────────────────────────────────────────────
Authentication Methods
─────────────────────────────────────────────────────────
Email/Password: ✅ Enabled
├── Signup: ✅ Open (anyone can register)
├── Email Confirmation: ❌ NOT REQUIRED ← P1 Issue
├── Password Min Length: 6 characters ← P2 Consider longer
└── Secure Password Check: Unknown
Phone/SMS: ✅ Enabled
└── Provider: Twilio
Magic Link: ✅ Enabled
└── OTP Expiry: 300 seconds (5 min)
OAuth Providers Detected: 3
├── Google: ✅ Enabled
├── GitHub: ✅ Enabled
└── Discord: ✅ Enabled
Anonymous Auth: ✅ Enabled ← Review if intended
─────────────────────────────────────────────────────────
Security Settings
─────────────────────────────────────────────────────────
Rate Limiting:
├── Signup: 3/hour per IP (good)
├── Token: 30/hour per IP (good)
└── Recovery: 3/hour per IP (good)
Session Configuration:
├── JWT Expiry: 3600 seconds (1 hour)
├── Refresh Token Rotation: Unknown
└── Inactivity Timeout: Unknown
Security Headers:
├── CORS: Configured
├── Allowed Origins: * (wildcard) ← P2 Consider restricting
└── Credentials: Allowed
─────────────────────────────────────────────────────────
Findings
─────────────────────────────────────────────────────────
🟠 P1: Email Confirmation Disabled
Issue: Users can signup and immediately access the app
without verifying their email address.
Risks:
├── Fake accounts with invalid emails
├── Typosquatting (user@gmial.com)
├── No verified communication channel
└── Potential for abuse
Recommendation:
Supabase Dashboard → Authentication → Email Templates
→ Enable "Confirm email"
─────────────────────────────────────────────────────────
🟡 P2: Short Minimum Password Length
Issue: Minimum password length is 6 characters.
Recommendation: Increase to 8-12 characters minimum.
Supabase Dashboard → Authentication → Settings
→ Minimum password length
─────────────────────────────────────────────────────────
🟡 P2: Wildcard CORS Origin
Issue: CORS allows requests from any origin (*).
Recommendation: Restrict to your domains only.
Supabase Dashboard → Authentication → URL Configuration
→ Site URL and Redirect URLs
─────────────────────────────────────────────────────────
ℹ️ INFO: Anonymous Auth Enabled
Note: Anonymous authentication is enabled.
This is fine if intentional (guest access).
Review if you expect all users to be authenticated.
─────────────────────────────────────────────────────────
Summary
─────────────────────────────────────────────────────────
Auth Methods: 5 enabled
OAuth Providers: 3
Findings:
├── P1 (High): 1 - Email confirmation disabled
├── P2 (Medium): 2 - Password length, CORS
└── Info: 1 - Anonymous auth enabled
Recommended Actions:
1. Enable email confirmation
2. Increase minimum password length
3. Restrict CORS to specific domains
4. Review if anonymous auth is needed
═══════════════════════════════════════════════════════════Security Checklist
Email Authentication
| Setting | Recommended | Risk if Wrong |
|---|---|---|
| Email Confirmation | ✅ Required | Fake accounts |
| Password Length | ≥8 chars | Weak passwords |
| Password Complexity | Enable | Easy to guess |
| Rate Limiting | Enable | Brute force |
OAuth Configuration
| Setting | Recommended | Risk if Wrong |
|---|---|---|
| Verified providers only | Yes | Account takeover |
| Proper redirect URLs | Specific URLs | OAuth redirect attacks |
| State parameter | Enabled | CSRF attacks |
Session Security
| Setting | Recommended | Risk if Wrong |
|---|---|---|
| Short JWT expiry | 1 hour or less | Token theft |
| Refresh token rotation | Enabled | Token reuse |
| Secure cookie flags | HttpOnly, Secure, SameSite | XSS, CSRF |
Context Output
{
"auth_config": {
"timestamp": "2025-01-31T12:30:00Z",
"methods": {
"email": {
"enabled": true,
"signup_open": true,
"email_confirmation": false,
"min_password_length": 6
},
"phone": {
"enabled": true,
"provider": "twilio"
},
"magic_link": {
"enabled": true,
"otp_expiry": 300
},
"oauth": {
"enabled": true,
"providers": ["google", "github", "discord"]
},
"anonymous": {
"enabled": true
}
},
"findings": [
{
"severity": "P1",
"issue": "Email confirmation disabled",
"recommendation": "Enable email confirmation in dashboard"
}
]
}
}Common Auth Vulnerabilities
1. No Email Confirmation
// User can signup with any email
const { data, error } = await supabase.auth.signUp({
email: 'fake@example.com', // No verification needed
password: 'password123'
})
// User is immediately authenticated2. Weak Password Policy
// Weak password accepted
await supabase.auth.signUp({
email: 'user@example.com',
password: '123456' // Accepted with min length 6
})3. Open Signup When Not Needed
If your app should only have admin-created users:
-- Disable public signup via dashboard
-- Or use invite-only flowRemediation Examples
Enable Email Confirmation
1. Supabase Dashboard → Authentication → Email Templates 2. Enable "Confirm email" 3. Customize confirmation email template 4. Handle unconfirmed users in your app
Strengthen Password Requirements
1. Dashboard → Authentication → Settings 2. Set minimum length to 8+ 3. Consider enabling password strength checks
Restrict CORS
1. Dashboard → Authentication → URL Configuration 2. Set specific Site URL 3. Add only your domains to Redirect URLs 4. Remove wildcard entries
MANDATORY: Progressive Context File Updates
⚠️ This skill MUST update tracking files PROGRESSIVELY during execution, NOT just at the end.
Critical Rule: Write As You Go
DO NOT batch all writes at the end. Instead:
1. Before checking each auth method → Log the action to .sb-pentest-audit.log 2. After each configuration analyzed → Immediately update .sb-pentest-context.json 3. After each finding discovered → Log the severity immediately
This ensures that if the skill is interrupted, crashes, or times out, all findings up to that point are preserved.
Required Actions (Progressive)
1. Update `.sb-pentest-context.json` with results:
{
"auth_config": {
"timestamp": "...",
"methods": { ... },
"findings": [ ... ]
}
}2. Log to `.sb-pentest-audit.log`:
[TIMESTAMP] [supabase-audit-auth-config] [START] Auditing auth configuration
[TIMESTAMP] [supabase-audit-auth-config] [FINDING] P1: Email confirmation disabled
[TIMESTAMP] [supabase-audit-auth-config] [CONTEXT_UPDATED] .sb-pentest-context.json updated3. If files don't exist, create them before writing.
FAILURE TO UPDATE CONTEXT FILES IS NOT ACCEPTABLE.
MANDATORY: Evidence Collection
📁 Evidence Directory: .sb-pentest-evidence/05-auth-audit/
Evidence Files to Create
| File | Content |
|---|---|
auth-settings.json | Complete auth configuration |
Evidence Format
{
"evidence_id": "AUTH-CFG-001",
"timestamp": "2025-01-31T10:50:00Z",
"category": "auth-audit",
"type": "auth_configuration",
"endpoint": "https://abc123def.supabase.co/auth/v1/",
"configuration": {
"email_auth": {
"enabled": true,
"signup_open": true,
"email_confirmation_required": false,
"min_password_length": 6
},
"phone_auth": {
"enabled": true,
"provider": "twilio"
},
"oauth_providers": ["google", "github", "discord"],
"anonymous_auth": true
},
"security_settings": {
"rate_limiting": {
"signup": "3/hour",
"token": "30/hour",
"recovery": "3/hour"
},
"jwt_expiry": 3600,
"cors_origins": "*"
},
"findings": [
{
"severity": "P1",
"issue": "Email confirmation disabled",
"impact": "Users can signup without verifying email",
"recommendation": "Enable email confirmation"
},
{
"severity": "P2",
"issue": "Weak password policy",
"impact": "Minimum 6 characters allows weak passwords",
"recommendation": "Increase to 8+ characters"
}
]
}Add to curl-commands.sh
# === AUTH CONFIGURATION TESTS ===
# Test signup availability
curl -X POST "$SUPABASE_URL/auth/v1/signup" \
-H "apikey: $ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "test@example.com", "password": "test123456"}'
# Test password policy (weak password)
curl -X POST "$SUPABASE_URL/auth/v1/signup" \
-H "apikey: $ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "weak@example.com", "password": "123456"}'Related Skills
supabase-audit-auth-signup— Test signup flowsupabase-audit-auth-users— Test user enumerationsupabase-audit-rls— Auth users need RLS protection
Related skills
How it compares
Use this for live Supabase Auth config pentests with resilient logging; use generic security-review skills for application code threat modeling.
FAQ
What files does supabase-audit-auth-config write?
supabase-audit-auth-config writes findings to .sb-pentest-context.json after each auth setting is analyzed and logs tests to .sb-pentest-audit.log before and after every check. Progressive writes ensure partial results survive interruptions.
Why does supabase-audit-auth-config require progressive updates?
supabase-audit-auth-config mandates immediate file writes so pentest findings are not lost if the agent crashes or is stopped mid-audit. Each setting analysis lands in .sb-pentest-context.json before the skill moves to the next test.