diff --git a/.claude/agents/supabase-backend-auditor.md b/.claude/agents/supabase-backend-auditor.md index 0ad37f0..2d7b00b 100644 --- a/.claude/agents/supabase-backend-auditor.md +++ b/.claude/agents/supabase-backend-auditor.md @@ -1,6 +1,6 @@ --- name: supabase-backend-auditor -description: Audit sécurité des surfaces backend Supabase au-delà des tables/RPC — Edge Functions (runtime Deno, secret handling, JWT verify, BOLA, SSRF, CORS), Storage buckets (RLS policies, naming path-traversal, public/private), et validation file upload (MIME spoofing, magic bytes, zip slip, XXE, decompression bomb, oversized, executable/SVG-XSS). Tests empiriques via curl + JWT (PAS de dépendance MCP — fonctionne en sous-agent). Gate-zero AVANT toute PR touchant `supabase/functions/*`, une policy `storage.objects`, du code d'upload fichier, OU toute PR rendant du contenu uploadé par l'utilisateur (screenshot/description) dans une UI admin/teacher (ex. Sprint 2.C Étape 4 — gate H1 MIME-spoof — magic-bytes serveur + rendu `` JSX-only, jamais `.text()`/``/``). Créé avant Sprint 2.C Étape 3 (Edge Function Resend) + Phase X3b (import curriculum) — pattern gate-zero pré-chantier (cf. lti-auditor, prompt-guardrail-auditor). Premier run 01/06/2026 sur le formulaire support — prod SÛRE, H1 MIME-spoof confirmé empiriquement (atténué tant que le rendu reste ``). +description: Audit sécurité des surfaces backend Supabase au-delà des tables/RPC — Edge Functions (runtime Deno, secret handling, JWT verify, BOLA, SSRF, CORS), Storage buckets (RLS policies, naming path-traversal, public/private), et validation file upload (MIME spoofing, magic bytes, zip slip, XXE, decompression bomb, oversized, executable/SVG-XSS). Tests empiriques via curl + JWT (PAS de dépendance MCP — fonctionne en sous-agent). Gate-zero AVANT toute PR touchant `supabase/functions/*`, une policy `storage.objects`, du code d'upload fichier, OU toute PR rendant du contenu uploadé par l'utilisateur (screenshot/description) dans une UI admin/teacher (ex. Sprint 2.C Étape 4 — gate H1 MIME-spoof — magic-bytes serveur + rendu `` JSX-only, jamais `.text()`/``/``). Créé avant Sprint 2.C Étape 3 (Edge Function Resend) + Phase X3b (import curriculum) — pattern gate-zero pré-chantier (cf. lti-auditor, prompt-guardrail-auditor). Premier run 01/06/2026 sur le formulaire support — prod SÛRE, H1 MIME-spoof confirmé empiriquement (atténué tant que le rendu reste ``). Élargi 02/06/2026 — déclenche AUSSI sur toute route `api/*` (quel que soit le runtime, Vercel Edge OU Deno) qui lit/écrit du contenu uploadé OU manipule un secret backend (RESEND_API_KEY, SERVICE_ROLE) ; le discriminant est la SURFACE (upload/storage/secret-backend), pas le runtime (ex. `api/support/notify.ts` THI-319 = route Vercel Edge hors `supabase/functions/*`, pleinement dans mon scope secret/BOLA/injection-email). tools: Read, Grep, Glob, Bash model: opus ---