
Claude Skill qui audite vos projets pour les erreurs de configuration RLS, les clés exposées, les contournements d'authentification et les vulnérabilités de stockage. 27 anti-patrons issus de CVE-2025-48757 et de 10 études de sécurité. Sûr pour la production.
Une compétence Claude qui audite vos bases de données backend pour les vulnérabilités de sécurité.
Déposez-la dans Claude Code, Cursor ou tout environnement Claude. Dites « audite ma base de données » et obtenez un rapport de sécurité complet avec le code de correction exact — en quelques minutes, pas en jours.
Plus de 170 applications Lovable ont été compromises. 20,1 millions de lignes ont été exposées parmi les startups YC. Environ 87 000 instances MongoDB ont été laissées vulnérables à MongoBleed (CVE-2025-14847, CISA KEV). 1,8 million de mots de passe Firebase ont fuité lors d'un seul incident en 2025. 45 % du code généré par IA introduit des vulnérabilités OWASP Top 10. Database Sentinel vérifie si votre configuration de sécurité fonctionne réellement — pas seulement si elle est présente.
Database Sentinel effectue un audit de sécurité en 7 étapes sur le(s) backend(s) utilisé(s) par votre projet :
tx=rollback, collections canaries, détecteur MongoBleed sur option)Le raisonnement inter-backend détecte des problèmes que les analyseurs mono-backend ratent (par exemple, un UID Firebase Auth considéré comme fiable par une API Postgres sans vérification JWT).
Database Sentinel s'appelait auparavant Supabase Sentinel (mono-backend). Le renommage a eu lieu pendant la Phase 1 de l'extension multi-backend. Un shim de rétrocompatibilité dans compat/supabase-sentinel/ préserve l'ancien nom de compétence au moins jusqu'à la prochaine version mineure — les utilisateurs existants ne voient aucune régression.
Clonez la compétence dans le répertoire des compétences de votre projet, ou dans un répertoire central :
git clone https://github.com/Farenhytee/database-sentinel.git ~/claude-skills/database-sentinel
Puis demandez à Claude :
Audite ma base de données
Database Sentinel détectera quel(s) backend(s) votre projet utilise, exécutera les audits correspondants et produira un rapport unifié. Si plusieurs backends sont présents (Firebase Auth + données Postgres, etc.), le rapport inclut une section sur les interactions inter-backend une fois la Phase 6 livrée.
Si vous voulez auditer uniquement un backend spécifique, demandez explicitement :
Audite mon projet Supabase
Audite mon instance MongoDB
Le répartiteur réduit le périmètre.
Copiez le contenu de SKILL.md plus le backends/<name>/workflow.md correspondant dans votre prompt système. Parcourez les 7 étapes avec vos identifiants.
La sonde réseau MongoBleed (backends/mongodb/mongobleed-probe.md) embarque un détecteur à paquet unique qui confirme l'exploitabilité à l'exécution — vérifié contre mongo:7.0.20 (vulnérable) et mongo:7.0.28 (patché). Il est en lecture seule, verrouillé derrière deux confirmations opt-in, et n'extrait jamais de contenu.
╔════════════════════════════════════════════════════════╗
║ AUDIT DE SÉCURITÉ SENTINELLE ║
╠════════════════════════════════════════════════════════╣
║ Backends : supabase, mongodb ║
║ Scanné : 30/04/2026 14:30 UTC ║
║ Score : 0/100 🔴 ║
║ Résumé : 2 backends, 8 constats (3C / 4H / 1M) ║
╚════════════════════════════════════════════════════════╝
─────────────────────────────────────────────────────────
Supabase 35/100 🔴
─────────────────────────────────────────────────────────
🔴 CRITIQUE — public.users : RLS désactivée [SB-001]
Risque : N'importe qui sur Internet peut lire toute votre table users.
Attaque : Ouvrir DevTools navigateur → copier clé anon → curl l'API → extraire
tous les emails, noms et métadonnées.
Preuve : curl retourne [{"id":"...","email":"[email protected]",...}]
Source : CVE-2025-48757 / Splinter 0013_rls_disabled_in_public
Correction :
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 🔴
─────────────────────────────────────────────────────────
🔴 CRITIQUE — mongod 7.0.20 : MongoBleed (CVE-2025-14847) [MG-SH-001]
Risque : Un seul paquet TCP divulgue des fragments de la mémoire de MongoDB —
y compris identifiants, requêtes et données documentaires — sans
nécessiter aucune connexion.
Attaque : PoC public disponible depuis le 26 décembre 2025 ; CISA KEV. Des requêtes
répétées extraient progressivement davantage de l'espace de travail.
Preuve : buildInfo.version = "7.0.20" (vulnérable ; patché dans 7.0.28)
compression zlib activée (par défaut) : true
Sonde active retourné : vulnérable (opCode=2012, 163 octets)
Source : CVE-2025-14847 / CISA KEV / MongoDB Server Security Update Dec 2025
Correction :
Mettez à niveau vers 7.0.28+. Atténuation le jour même si la mise à niveau est bloquée :
net.compression.compressors = "snappy,zstd" dans mongod.conf
✅ PASSÉ — Supabase : orders, payments, invoices, subscriptions
database-sentinel/
├── SKILL.md # Répartiteur — détecte les backends, achemine les audits (~2K tokens)
├── DECISIONS.md # Décisions d'architecture verrouillées (D1-D4 + remplacements)
├── core/
│ ├── workflow.md # Workflow d'audit universel en 7 étapes
│ ├── detection.md # Détection des backends + manifeste JSON
│ ├── scoring.md # Poids par backend, agrégation min
│ ├── reporting.md # Format de rapport unifié (texte + JSON)
│ └── credentials.md # Gestion des clés publiques et privilégiées
├── backends/
│ ├── supabase/ # Phase 1 — implémenté
│ │ ├── workflow.md # Audit en 7 étapes spécialisé pour Supabase
│ │ ├── audit-queries.md # 20 requêtes SQL pour l'introspection du schéma
│ │ ├── anti-patterns.md # 27 patrons (SB-001..SB-027)
│ │ └── fix-templates.md # Modèles de correction SQL (7 patrons RLS + plus)
│ └── mongodb/ # Phase 2 — implémenté
│ ├── workflow.md # Audit en 7 étapes spécialisé pour MongoDB
│ ├── introspection.md # mongosh + Atlas Admin API + scan IaC
│ ├── anti-patterns.md # 20 patrons (MG-SH-001..014, MG-AT-001..006)
│ ├── mongobleed-probe.md # Détecteur à paquet unique sûr CVE-2025-14847
│ ├── fix-templates.md # Matrice de versions + mongod.conf + validateurs + Atlas TF
│ └── test-recipe.md # Recette de test de bout en bout document uniquement
├── compat/
│ └── supabase-sentinel/ # Shim de rétrocompatibilité (force backend=supabase)
│ └── SKILL.md
├── references/
│ ├── vibe-coding-context.md # CVE-2025-48757, études de brèches — inter-backend
│ └── cve-feed.md # Liste CVE inter-backend (MongoBleed amorcé)
├── assets/
│ └── ci/
│ ├── github-action-supabase.yml # 1 job — audit de sécurité
│ └── github-action-mongodb.yml # 3 jobs — IaC statique, audit en direct, sonde MongoBleed
├── README.md # ce fichier
├── LICENSE # MIT
├── DECISIONS.md
└── sentinel-implementation-plan.md # Feuille de route d'extension multi-backend
Comment fonctionne la divulgation progressive : Claude charge uniquement SKILL.md (~2K tokens) plus core/* initialement. Lorsque la détection identifie un backend, le backends/<name>/workflow.md correspondant et les fichiers de référence à la demande sont chargés. Un audit Supabase uniquement ne paie pas le coût du contenu MongoDB ; les futures extensions Firebase / Postgres / MySQL suivent le même schéma.
Chaque backend implémenté embarque un modèle de workflow CI :
| Backend | Workflow | Modes de job |
|---|---|---|
| Supabase | assets/ci/github-action-supabase.yml |
Les workflows se déclenchent sur les modifications de fichiers pertinents (migrations, fichiers de règles, IaC, manifestes de dépendances), cron hebdomadaire (lundi 06:00 UTC) et déclenchement manuel. Ils publient des commentaires PR, téléchargent des artefacts de rapport et font échouer la build sur les constats critiques.
Demandez simplement : « Configure une surveillance de sécurité continue pour ce projet. »
La base de données d'anti-patrons de Database Sentinel est sourcée à partir de :
$where dans populate-match MongooseVoir references/vibe-coding-context.md et references/cve-feed.md pour l'ensemble complet des citations.
Database Sentinel est conçu pour être sûr en production :
pg_tables, pg_policies, getCmdLineOpts, etc.). Pas de DDL ni DML par défaut.Prefer: tx=rollback (natif PostgREST ; aucune donnée modifiée)BEGIN…ROLLBACK (DDL transactionnel)abortTransaction()/_sentinel_probe/{random}_sentinel_probe + DROP DATABASE (opt-in, destructif — avertissement explicite)Les contributions sont les bienvenues. Les contributions les plus précieuses :
backends/<name>/anti-patterns.md correspondant avec sévérité, requête de détection, code de correction et preuve réelle (CVE / brèche / Splinter / CIS).backends/<name>/fix-templates.md.backends/mongodb/mongobleed-probe.md).backends/mongodb/ et backends/supabase/. Le plan d'implémentation (sentinel-implementation-plan.md) contient le contrat pour chacun.git checkout -b ajout-nouveau-patron)mysql_native_password pour 8.4+)BACKENDS.md, calendrier de dépréciation du shim supabase-sentinelnpx database-sentinel audit pour les environnements non-ClaudeLe nom de compétence supabase-sentinel fonctionne toujours via le shim de compatibilité dans compat/supabase-sentinel/. Il force l'audit sur Supabase uniquement et produit une sortie indiscernable de la v1. Date de fin de vie : à déterminer ; au moins jusqu'à la prochaine version mineure.
MIT — utilisez-le comme vous voulez, commercialement ou non.
Conçu pour l'ère du vibe-coding.
Parce que « ça marche » et « c'est sécurisé » sont deux choses très différentes.
| Phase | Backend | Statut |
|---|
| 1 | Supabase | ✅ livré |
| 2 | MongoDB (auto-hébergé + Atlas) | ✅ livré |
| 3 | Firebase (Firestore / RTDB / Storage / Functions / Remote Config) | 🚧 planifié |
| 4 | PostgreSQL (auto-hébergé, y compris pgBouncer) | 🚧 planifié |
| 5 | MySQL (auto-hébergé) | 🚧 planifié |
| 6 | Analyse des interactions inter-backend | 🚧 planifié |
| 7 | Distribution + polissage | 🚧 planifié |
| Sévérité | Patron | Quoi |
|---|
| 🔴 CRITIQUE | SB-001 RLS_DISABLED | Tables sans sécurité au niveau des lignes — totalement exposées sur Internet |
| 🔴 CRITIQUE | SB-002 SERVICE_ROLE_EXPOSED | Clé service_role dans le code frontend — contourne TOUTE sécurité |
| 🔴 CRITIQUE | SB-003 POLICIES_BUT_NO_RLS | Politiques écrites mais RLS jamais activée — fausse sécurité |
| 🔴 CRITIQUE | SB-005 WRITE_USING_TRUE | INSERT/UPDATE/DELETE avec USING(true) — n'importe qui peut modifier |
| 🟠 ÉLEVÉ | SB-006 USING_TRUE_SELECT | Toutes les lignes lisibles par les utilisateurs anonymes sur des tables sensibles |
| 🟠 ÉLEVÉ | SB-007 VIEW_NO_SECURITY_INVOKER | Les vues contournent RLS, s'exécutent en tant que superutilisateur |
| 🟠 ÉLEVÉ | SB-008 SECURITY_DEFINER_EXPOSED | Fonctions dans le schéma public contournent RLS, appelables via l'API |
| 🟠 ÉLEVÉ | SB-009 USER_METADATA_IN_POLICY | Les politiques référencent des métadonnées modifiables par l'utilisateur — escalade de privilèges |
| 🟠 ÉLEVÉ | SB-010 UPDATE_NO_WITHCHECK | Politiques UPDATE sans WITH CHECK — risque d'assignation en masse |
| 🟠 ÉLEVÉ | SB-011 GHOST_AUTH | Inscriptions avec email non confirmé qui accordent des sessions authentifiées |
| 🟠 ÉLEVÉ | SB-012 STORAGE_NO_RLS | Bucket de stockage sans politiques de contrôle d'accès |
| 🟠 ÉLEVÉ | SB-013 JWT_SECRET_EXPOSED | Secret de signature JWT divulgué — peut forger le token de n'importe quel utilisateur |
| 🟡 MOYEN | + 15 autres patrons | Voir backends/supabase/anti-patterns.md |
| Sévérité | Patron | Quoi |
|---|
| 🔴 CRITIQUE | MG-SH-001 MongoBleed (CVE-2025-14847, CISA KEV) | Divulgation de mémoire heap pré-auth via un paquet compressé fabriqué. Environ 87K instances exposées lors de la divulgation. |
| 🔴 CRITIQUE | MG-SH-002 Auth désactivé | mongod fonctionnant sans authentification — surface d'attaque du ransomware Meow |
| 🔴 CRITIQUE | MG-SH-003 mongod lié à Internet | --bind_ip_all + 27017 joignable — associé à MG-SH-002 pour compromission totale |
| 🔴 CRITIQUE | MG-AT-001 Liste blanche Atlas 0.0.0.0/0 | Cluster Atlas joignable depuis n'importe où sur Internet |
| 🟠 ÉLEVÉ | MG-SH-004 Contournement d'auth localhost + exécution conteneur | enableLocalhostAuthBypass true + accès docker exec |
| 🟠 ÉLEVÉ | MG-SH-005 JS côté serveur activé | $where / $function / mapReduce joignables — surface NoSQL-RCE |
| 🟠 ÉLEVÉ | MG-SH-006 TLS non requis | Trafic en clair sur le réseau |
| 🟠 ÉLEVÉ | MG-SH-007 Rôle privilégié sur un utilisateur applicatif | L'application se connecte en tant que root / dbAdminAnyDatabase etc. |
| 🟠 ÉLEVÉ | MG-SH-008 Document de rôle auto-modifiable | findByIdAndUpdate(id, req.body) + pas de validateur + champ rôle |
| 🟠 ÉLEVÉ | MG-AT-002 Atlas Function comme passerelle DB | Injection NoSQL sur HTTPS — proliféré après la dépréciation de l'API Data |
| 🟠 ÉLEVÉ | MG-AT-003 Atlas Data API encore dans le code | Déprécié le 30 septembre 2025 ; cassé ET probablement remplacé par des Functions moins auditées |
| 🟡 MOYEN | MG-SH-009 Mongoose < 8.9.5 | CVE-2024-53900 / CVE-2025-23061 — injection $where dans populate-match |
| 🟡 MOYEN | + 8 autres patrons | Voir backends/mongodb/anti-patterns.md |
| Un seul job — audit de sécurité (introspection + sondes dynamiques) |
| MongoDB | assets/ci/github-action-mongodb.yml | Trois jobs — scan IaC statique (toujours exécuté, aucun secret), audit en direct (verrouillé sur vars.AUDIT_LIVE == 'true'), sonde MongoBleed (verrouillé sur vars.MONGOBLEED_PROBE == 'true' + confirmation de propriété) |
| Backend | Outil intégré | Ce qu'il rate | Database Sentinel couvre |
|---|
| Supabase | Splinter (16 lints) | Si les politiques empêchent réellement l'accès non autorisé | Tests en direct tx=rollback de chaque chemin CRUD contre chaque table |
| Supabase | Splinter | Ghost-auth (contournement de confirmation d'email) | Sonde d'inscription avec TLD .invalid |
| Supabase | Splinter | Assignation en masse via UPDATE sans WITH CHECK + colonnes sensibles | Recoupe les noms de colonnes avec la forme des politiques |
| Supabase | Splinter | Analyse du codebase | Trouve les clés service_role dans le code frontend, JWT en dur, fichiers .env commités |
| MongoDB | Atlas Advisor | Confirmation runtime MongoBleed | Détecteur au niveau protocole à paquet unique (vérifié contre 7.0.20 + 7.0.28) |
| MongoDB | Atlas Advisor | Documents de rôle auto-modifiables | Recoupement entre patron source et validateur de collection |
| MongoDB | Trivy / Aikido | Configuration spécifique à Atlas (listes blanches, IAM, CMK) | Audit direct via l'API Admin Atlas |
| MongoDB | mongoaudit (abandonné 2018) | Actif en 2025+ | Catalogue de patrons maintenu avec des CVE 2025–2026 |
.invalid. Les emails de test utilisent des domaines réservés RFC 6761 qui ne peuvent pas recevoir de courrier.