
Abilità Claude che controlla i tuoi progetti per configurazioni errate di RLS, chiavi esposte, bypass di autenticazione e vulnerabilità di storage. 27 anti-pattern provenienti da CVE-2025-48757 e 10 studi di sicurezza. Sicuro per la produzione.
Una skill di Claude che esegue audit di sicurezza sui tuoi database.
Inseriscila in Claude Code, Cursor o qualsiasi ambiente basato su Claude. Dì "esegui audit del mio database" e ottieni un report di sicurezza completo con il codice di correzione esatto — in minuti, non giorni.
Oltre 170 app Lovable sono state violate. Sono stati esposti 20,1 milioni di righe tra le startup Y Combinator. Circa 87.000 istanze MongoDB sono rimaste vulnerabili a MongoBleed (CVE-2025-14847, CISA KEV). 1,8 milioni di password Firebase sono state divulgate in un singolo incidente del 2025. Il 45% del codice generato dall'IA introduce vulnerabilità OWASP Top 10. Database Sentinel verifica se la tua configurazione di sicurezza funziona davvero — non solo se è presente.
Database Sentinel esegue un audit di sicurezza in 7 passaggi sui backend utilizzati dal tuo progetto:
tx=rollback, collezioni canarino, rilevatore MongoBleed opt-in)Il ragionamento cross-backend individua problemi che gli scanner a singolo backend perdono (ad esempio, un UID di Firebase Auth considerato affidabile da un'API Postgres senza verifica JWT).
Database Sentinel era precedentemente Supabase Sentinel (singolo backend). La ridenominazione è avvenuta durante la Fase 1 dell'espansione multi-backend. Un forward-compat shim in compat/supabase-sentinel/ preserva il vecchio nome della skill almeno fino alla prossima release minore — gli utenti esistenti non vedono regressioni.
Clona la skill nella directory delle skill del tuo progetto, o in una centrale:
git clone https://github.com/Farenhytee/database-sentinel.git ~/claude-skills/database-sentinel
Poi chiedi a Claude:
Esegui audit del mio database
Database Sentinel rileverà quale backend utilizza il tuo progetto, eseguirà gli audit pertinenti e produrrà un report unificato. Se sono presenti più backend (Firebase Auth + dati Postgres, ecc.), il report includerà una sezione sulle interazioni cross-backend una volta che la Fase 6 sarà disponibile.
Se vuoi eseguire l'audit solo di un backend specifico, chiedi esplicitamente:
Esegui audit del mio progetto Supabase
Esegui audit della mia istanza MongoDB
Il dispatcher restringe l'ambito.
Copia il contenuto di SKILL.md insieme al backends/<nome>/workflow.md corrispondente nel tuo prompt di sistema. Segui i 7 passaggi con le tue credenziali.
Il probe di rete MongoBleed (backends/mongodb/mongobleed-probe.md) include un rilevatore a pacchetto singolo che conferma la sfruttabilità in fase di esecuzione — verificato contro mongo:7.0.20 (vulnerabile) e mongo:7.0.28 (corretto). È in sola lettura, protetto da due conferme opt-in, e non estrae mai contenuti.
╔════════════════════════════════════════════════════════╗
║ SENTINEL SECURITY AUDIT ║
╠════════════════════════════════════════════════════════╣
║ Backends: supabase, mongodb ║
║ Scanned: 2026-04-30 14:30 UTC ║
║ Score: 0/100 🔴 ║
║ Summary: 2 backends, 8 findings (3C / 4H / 1M) ║
╚════════════════════════════════════════════════════════╝
─────────────────────────────────────────────────────────
Supabase 35/100 🔴
─────────────────────────────────────────────────────────
🔴 CRITICA — public.users: RLS Disabled [SB-001]
Rischio: Chiunque su internet può leggere l'intera tabella utenti.
Attacco: Apri DevTools del browser → copia la chiave anon → curl l'API →
scarica tutte le email, i nomi e i metadati.
Prova: curl restituisce [{"id":"...","email":"[email protected]",...}]
Fonte: CVE-2025-48757 / Splinter 0013_rls_disabled_in_public
Correzione:
ALTER TABLE public.users ENABLE ROW LEVEL SECURITY;
CREATE POLICY "users_select_own"
ON public.users FOR SELECT TO authenticated
USING ((SELECT auth.uid()) = id);
─────────────────────────────────────────────────────────
MongoDB 0/100 🔴
─────────────────────────────────────────────────────────
🔴 CRITICA — mongod 7.0.20: MongoBleed (CVE-2025-14847) [MG-SH-001]
Rischio: Un singolo pacchetto TCP divulga frammenti della memoria di
MongoDB — incluse credenziali, query e dati di documenti —
senza richiedere alcun login.
Attacco: PoC pubblico disponibile dal 26 dicembre 2025; CISA KEV.
Richieste ripetute scaricano progressivamente più porzioni del
working set.
Prova: buildInfo.version = "7.0.20" (vulnerabile; corretto in 7.0.28)
compressione zlib abilitata (default): true
Probe attivo ha restituito: vulnerabile (opCode=2012, 163 byte)
Fonte: CVE-2025-14847 / CISA KEV / MongoDB Server Security Update Dic 2025
Correzione:
Aggiorna a 7.0.28+. Mitigazione immediata se l'aggiornamento è bloccato:
net.compression.compressors = "snappy,zstd" in mongod.conf
✅ PASSAGGIO — Supabase: orders, payments, invoices, subscriptions
database-sentinel/
├── SKILL.md # Dispatcher — rileva i backend, instrada gli audit (~2K token)
├── DECISIONS.md # Decisioni architetturali bloccate (D1-D4 + sostituzioni)
├── core/
│ ├── workflow.md # Flusso di audit universale in 7 passaggi
│ ├── detection.md # Rilevamento backend + manifest JSON
│ ├── scoring.md # Pesi per backend, aggregazione minima
│ ├── reporting.md # Formato report unificato (testo + JSON)
│ └── credentials.md # Gestione chiavi pubbliche vs privilegiate
├── backends/
│ ├── supabase/ # Fase 1 — implementato
│ │ ├── workflow.md # Audit in 7 passaggi specializzato per Supabase
│ │ ├── audit-queries.md # 20 query SQL per introspezione schema
│ │ ├── anti-patterns.md # 27 pattern (SB-001..SB-027)
│ │ └── fix-templates.md # Template di correzione SQL (7 pattern RLS + altro)
│ └── mongodb/ # Fase 2 — implementato
│ ├── workflow.md # Audit in 7 passaggi specializzato per MongoDB
│ ├── introspection.md # mongosh + Atlas Admin API + scansione IaC
│ ├── anti-patterns.md # 20 pattern (MG-SH-001..014, MG-AT-001..006)
│ ├── mongobleed-probe.md # Rilevatore sicuro CVE-2025-14847 a pacchetto singolo
│ ├── fix-templates.md # Matrice versioni + mongod.conf + validatori + Atlas TF
│ └── test-recipe.md # Ricetta di test end-to-end solo documenti
├── compat/
│ └── supabase-sentinel/ # Shim retrocompatibile (forza backend=supabase)
│ └── SKILL.md
├── references/
│ ├── vibe-coding-context.md # CVE-2025-48757, studi sulle violazioni — cross-backend
│ └── cve-feed.md # Elenco CVE cross-backend (MongoBleed seed)
├── assets/
│ └── ci/
│ ├── github-action-supabase.yml # 1 job — audit di sicurezza
│ └── github-action-mongodb.yml # 3 job — scansione IaC statica, audit live, probe MongoBleed
├── README.md # Questo file
├── LICENSE # MIT
├── DECISIONS.md
└── sentinel-implementation-plan.md # Roadmap espansione multi-backend
Come funziona la divulgazione progressiva: Claude carica inizialmente solo SKILL.md (~2K token) più core/*. Quando il rilevamento identifica un backend, vengono caricati il corrispondente backends/<nome>/workflow.md e i file di riferimento on-demand. Un audit solo Supabase non paga il costo del contenuto MongoDB; le future estensioni Firebase / Postgres / MySQL seguono lo stesso schema.
Ogni backend implementato include un template CI workflow:
| Backend | Workflow | Modalità job |
|---|---|---|
| Supabase | assets/ci/github-action-supabase.yml |
I workflow si attivano su modifiche ai file pertinenti (migrazioni, file di regole, IaC, manifest delle dipendenze), cron settimanale (lunedì 06:00 UTC) e dispatch manuale. Pubblicano commenti sulle PR, caricano artefatti dei report e falliscono la build in caso di risultati critici.
Basta chiedere: "Configura il monitoraggio di sicurezza continuo per questo progetto."
Il database di anti-pattern di Database Sentinel è alimentato da:
$where in MongooseVedi references/vibe-coding-context.md e references/cve-feed.md per la serie completa di citazioni.
Database Sentinel è progettato per essere sicuro per l'uso in produzione:
pg_tables, pg_policies, getCmdLineOpts, ecc.). Nessun DDL o DML di default.Prefer: tx=rollback (nativo PostgREST; zero dati modificati)BEGIN…ROLLBACK (DDL transazionale)abortTransaction()/_sentinel_probe/{random}_sentinel_probe + DROP DATABASE (opt-in, distruttivo — avviso esplicito)I contributi sono benvenuti. I contributi più preziosi:
backends/<nome>/anti-patterns.md pertinente con gravità, query di rilevamento, codice di correzione e prova reale (CVE / violazione / Splinter / CIS).backends/<nome>/fix-templates.md.backends/mongodb/mongobleed-probe.md).backends/mongodb/ e backends/supabase/. Il piano di implementazione (sentinel-implementation-plan.md) contiene il contratto per ciascuna.git checkout -b add-new-pattern)mysql_native_password per 8.4+)BACKENDS.md, cronologia deprecazione per lo shim supabase-sentinelnpx database-sentinel audit per ambienti non ClaudeIl nome skill supabase-sentinel funziona ancora tramite lo shim di compatibilità in compat/supabase-sentinel/. Forza l'audit al solo Supabase e produce un output indistinguibile dalla v1. Data di fine vita: da definire; almeno fino alla prossima release minore.
MIT — usalo come preferisci, commercialmente o meno.
Costruito per l'era del vibe-coding.
Perché "funziona" e "è sicuro" sono due cose molto diverse.
| Fase | Backend | Stato |
|---|
| 1 | Supabase | ✅ pubblicata |
| 2 | MongoDB (self-hosted + Atlas) | ✅ pubblicata |
| 3 | Firebase (Firestore / RTDB / Storage / Functions / Remote Config) | 🚧 pianificata |
| 4 | PostgreSQL (self-hosted, incluso pgBouncer) | 🚧 pianificata |
| 5 | MySQL (self-hosted) | 🚧 pianificata |
| 6 | Analisi interazioni cross-backend | 🚧 pianificata |
| 7 | Distribuzione + rifinitura | 🚧 pianificata |
| Gravità | Pattern | Cosa |
|---|
| 🔴 CRITICA | SB-001 RLS_DISABLED | Tabelle senza Row-Level Security — completamente esposte a internet |
| 🔴 CRITICA | SB-002 SERVICE_ROLE_EXPOSED | Chiave service_role nel codice frontend — bypassa TUTTA la sicurezza |
| 🔴 CRITICA | SB-003 POLICIES_BUT_NO_RLS | Policy scritte ma RLS mai abilitato — falsa sicurezza |
| 🔴 CRITICA | SB-005 WRITE_USING_TRUE | INSERT/UPDATE/DELETE con USING(true) — chiunque può modificare |
| 🟠 ALTA | SB-006 USING_TRUE_SELECT | Tutte le righe leggibili da utenti anonimi su tabelle sensibili |
| 🟠 ALTA | SB-007 VIEW_NO_SECURITY_INVOKER | Le viste bypassano RLS, vengono eseguite come superuser |
| 🟠 ALTA | SB-008 SECURITY_DEFINER_EXPOSED | Funzioni nello schema pubblico bypassano RLS, richiamabili tramite API |
| 🟠 ALTA | SB-009 USER_METADATA_IN_POLICY | Le policy fanno riferimento a metadati modificabili dall'utente — escalation privilegi |
| 🟠 ALTA | SB-010 UPDATE_NO_WITHCHECK | Policy UPDATE senza WITH CHECK — rischio mass assignment |
| 🟠 ALTA | SB-011 GHOST_AUTH | Registrazioni con email non confermate concedono sessioni autenticate |
| 🟠 ALTA | SB-012 STORAGE_NO_RLS | Bucket di storage privo di policy di controllo accessi |
| 🟠 ALTA | SB-013 JWT_SECRET_EXPOSED | Segreto di firma JWT divulgato — può forgiare token di qualsiasi utente |
| 🟡 MEDIA | + 15 pattern aggiuntivi | Vedi backends/supabase/anti-patterns.md |
| Gravità | Pattern | Cosa |
|---|
| 🔴 CRITICA | MG-SH-001 MongoBleed (CVE-2025-14847, CISA KEV) | Divulgazione di memoria heap pre-autenticazione tramite pacchetto compresso fraudolento. ~87K istanze esposte alla divulgazione. |
| 🔴 CRITICA | MG-SH-002 Auth disabilitato | mongod in esecuzione senza autenticazione — superficie d'attacco ransomware Meow |
| 🔴 CRITICA | MG-SH-003 mongod esposto a internet | --bind_ip_all + 27017 raggiungibile — abbinato a MG-SH-002 per compromissione totale |
| 🔴 CRITICA | MG-AT-001 Atlas allowlist 0.0.0.0/0 | Cluster Atlas raggiungibile da qualsiasi parte di internet |
| 🟠 ALTA | MG-SH-004 bypass autenticazione localhost + esecuzione container | enableLocalhostAuthBypass true + accesso docker exec |
| 🟠 ALTA | MG-SH-005 JavaScript lato server abilitato | $where / $function / mapReduce raggiungibili — superficie NoSQL-RCE |
| 🟠 ALTA | MG-SH-006 TLS non richiesto | Traffico in chiaro sulla rete |
| 🟠 ALTA | MG-SH-007 Ruolo privilegiato su utente applicazione | L'app si connette come root / dbAdminAnyDatabase ecc. |
| 🟠 ALTA | MG-SH-008 Documento ruolo auto-modificabile | findByIdAndUpdate(id, req.body) + nessun validatore + campo ruolo |
| 🟠 ALTA | MG-AT-002 Atlas Function come pass-through DB | NoSQL injection su HTTPS — proliferata dopo la deprecazione dell'API Data |
| 🟠 ALTA | MG-AT-003 Atlas Data API ancora nel codice | Deprecata il 30 settembre 2025; rotta E probabilmente ruotata verso Functions meno controllate |
| 🟡 MEDIA | MG-SH-009 Mongoose < 8.9.5 | CVE-2024-53900 / CVE-2025-23061 — injection populate-match $where |
| 🟡 MEDIA | + 8 pattern aggiuntivi | Vedi backends/mongodb/anti-patterns.md |
| Job singolo — audit di sicurezza (introspezione + probe dinamici) |
| MongoDB | assets/ci/github-action-mongodb.yml | Tre job — scansione IaC statica (esegue sempre, senza segreti), audit live (protetto da vars.AUDIT_LIVE == 'true'), probe MongoBleed (protetto da vars.MONGOBLEED_PROBE == 'true' + conferma proprietà) |
| Backend | Strumento integrato | Cosa perde | Copertura di Database Sentinel |
|---|
| Supabase | Splinter (16 lint) | Se le policy prevengono effettivamente accessi non autorizzati | Test live tx=rollback di ogni percorso CRUD per ogni tabella |
| Supabase | Splinter | Ghost-auth (bypass conferma email) | Probe di registrazione con dominio .invalid |
| Supabase | Splinter | Mass-assignment tramite UPDATE senza WITH CHECK + colonne sensibili | Incrocio nomi colonne con forma della policy |
| Supabase | Splinter | Scansione codebase | Trova chiavi service_role nel codice frontend, JWT hardcoded, file .env committati |
| MongoDB | Atlas Advisor | Conferma runtime MongoBleed | Rilevatore a livello di protocollo a pacchetto singolo (verificato su 7.0.20 + 7.0.28) |
| MongoDB | Atlas Advisor | Documenti ruoli auto-modificabili | Incrocio pattern sorgente + validatore raccolta |
| MongoDB | Trivy / Aikido | Configurazione specifica Atlas (allowlist, IAM, CMK) | Audit diretto Atlas Admin API |
| MongoDB | mongoaudit (abbandonato 2018) | Attivo nel 2025+ | Catalogo pattern mantenuto con CVE 2025–2026 |
.invalid. Le email di test usano domini riservati RFC 6761 che non possono ricevere messaggi.