
Claude Skill zur Prüfung Ihrer Projekte auf RLS-Fehlkonfigurationen, offengelegte Schlüssel, Authentifizierungsumgehungen und Speicherschwachstellen. 27 Anti-Patterns aus CVE-2025-48757 und 10 Sicherheitsstudien. Produktionstauglich.
Ein Claude-Skill, der deine Datenbank-Backends auf Sicherheitslücken prüft.
Füge ihn in Claude Code, Cursor oder eine beliebige Claude-Umgebung ein. Sage „audit my database“ und erhalte einen umfassenden Sicherheitsbericht mit exaktem Fix-Code – in Minuten, nicht Tagen.
Über 170 Lovable-Apps wurden kompromittiert. 20,1 Mio. Datensätze waren bei YC-Startups exponiert. ~87.000 MongoDB-Instanzen waren anfällig für MongoBleed (CVE-2025-14847, CISA KEV). 1,8 Mio. Firebase-Passwörter wurden in einem einzigen Vorfall im Jahr 2025 geleakt. 45 % der KI-generierten Codes führen OWASP Top 10-Sicherheitslücken ein. Database Sentinel testet, ob deine Sicherheitskonfiguration tatsächlich funktioniert – nicht nur, ob sie vorhanden ist.
Database Sentinel führt eine 7-stufige Sicherheitsprüfung für die Backends durch, die dein Projekt verwendet:
tx=rollback, Canary-Collections, optionalem MongoBleed-Detektor)Backend-übergreifende Analysen erkennen Probleme, die Einzel-Backend-Scanner übersehen (z. B. ein Firebase Auth UID, dem eine Postgres-API ohne JWT-Verifizierung vertraut).
Database Sentinel hieß früher Supabase Sentinel (Einzel-Backend). Die Umbenennung erfolgte während Phase 1 der Multi-Backend-Erweiterung. Ein Abwärtskompatibilitäts-Shim unter compat/supabase-sentinel/ bewahrt den alten Skill-Namen mindestens bis zum nächsten Minor-Release – bestehende Benutzer sehen keine Regression.
Klone den Skill in das Skills-Verzeichnis deines Projekts oder in ein zentrales:
git clone https://github.com/Farenhytee/database-sentinel.git ~/claude-skills/database-sentinel
Dann frage Claude:
Audit my database
Database Sentinel erkennt, welche Backends dein Projekt verwendet, führt die entsprechenden Audits durch und erstellt einen einheitlichen Bericht. Wenn mehrere Backends vorhanden sind (Firebase Auth + Postgres-Daten usw.), enthält der Bericht nach Phase 6 einen Abschnitt zu Backend-übergreifenden Interaktionen.
Wenn du nur ein bestimmtes Backend prüfen möchtest, frage explizit:
Audit my Supabase project
Audit my MongoDB instance
Der Dispatcher schränkt den Umfang ein.
Kopiere den Inhalt von SKILL.md plus das entsprechende backends/<name>/workflow.md in deinen System-Prompt. Durchlaufe die 7 Schritte mit deinen Anmeldeinformationen.
Der MongoBleed-Netzwerkprobe (backends/mongodb/mongobleed-probe.md) enthält einen Ein-Paket-Detektor, der die Ausnutzbarkeit zur Laufzeit bestätigt – verifiziert gegen mongo:7.0.20 (anfällig) und mongo:7.0.28 (gepatcht). Er ist schreibgeschützt, durch zwei Opt-in-Bestätigungen abgesichert und extrahiert niemals Inhalte.
╔════════════════════════════════════════════════════════╗
║ 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 🔴
─────────────────────────────────────────────────────────
🔴 KRITISCH — public.users: RLS Disabled [SB-001]
Risiko: Jeder im Internet kann deine gesamte Benutzertabelle lesen.
Angriff: Browser DevTools öffnen → anon key kopieren → curl auf die API → alle
E-Mails, Namen und Metadaten auslesen.
Nachweis: curl gibt [{"id":"...","email":"[email protected]",...}] zurück
Quelle: CVE-2025-48757 / Splinter 0013_rls_disabled_in_public
Fix:
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 🔴
─────────────────────────────────────────────────────────
🔴 KRITISCH — mongod 7.0.20: MongoBleed (CVE-2025-14847) [MG-SH-001]
Risiko: Ein einzelnes TCP-Paket legt Fragmente des MongoDB-Arbeitsspeichers
offen – einschließlich Anmeldeinformationen, Abfragen und Dokumentdaten – ohne
dass ein Login erforderlich ist.
Angriff: Öffentlicher PoC seit 26. Dez. 2025 verfügbar; CISA KEV. Wiederholte
Anfragen legen nach und nach mehr des Working Sets offen.
Nachweis: buildInfo.version = "7.0.20" (anfällig; gepatcht in 7.0.28)
zlib compression aktiviert (Standard): true
Aktiver Probe ergab: anfällig (opCode=2012, 163 Bytes)
Quelle: CVE-2025-14847 / CISA KEV / MongoDB Server Security Update Dez. 2025
Fix:
Upgrade auf 7.0.28+. Gleichzeitige Abhilfe, falls Upgrade blockiert ist:
net.compression.compressors = "snappy,zstd" in mongod.conf
✅ BESTANDEN — Supabase: orders, payments, invoices, subscriptions
database-sentinel/
├── SKILL.md # Dispatcher – erkennt Backends, leitet Audits weiter (~2K Tokens)
├── DECISIONS.md # Festgelegte Architekturentscheidungen (D1-D4 + Ablösungen)
├── core/
│ ├── workflow.md # Universeller 7-Schritte-Audit-Workflow
│ ├── detection.md # Backend-Erkennung + JSON-Manifest
│ ├── scoring.md # Backend-spezifische Gewichtung, Min-Aggregation
│ ├── reporting.md # Einheitliches Berichtsformat (Text + JSON)
│ └── credentials.md # Umgang mit öffentlichen vs. privilegierten Schlüsseln
├── backends/
│ ├── supabase/ # Phase 1 – implementiert
│ │ ├── workflow.md # 7-Schritte-Audit spezialisiert für Supabase
│ │ ├── audit-queries.md # 20 SQL-Abfragen zur Schema-Introspektion
│ │ ├── anti-patterns.md # 27 Muster (SB-001..SB-027)
│ │ └── fix-templates.md # SQL-Fix-Vorlagen (7 RLS-Muster + mehr)
│ └── mongodb/ # Phase 2 – implementiert
│ ├── workflow.md # 7-Schritte-Audit spezialisiert für MongoDB
│ ├── introspection.md # mongosh + Atlas Admin API + IaC-Scan
│ ├── anti-patterns.md # 20 Muster (MG-SH-001..014, MG-AT-001..006)
│ ├── mongobleed-probe.md # Sicherer CVE-2025-14847 Ein-Paket-Detektor
│ ├── fix-templates.md # Versionstabelle + mongod.conf + Validatoren + Atlas TF
│ └── test-recipe.md # Nur-dokumenten-basiertes End-to-End-Testrezept
├── compat/
│ └── supabase-sentinel/ # Abwärtskompatibilitäts-Shim (erzwingt backend=supabase)
│ └── SKILL.md
├── references/
│ ├── vibe-coding-context.md # CVE-2025-48757, Breach-Studien – backend-übergreifend
│ └── cve-feed.md # Backend-übergreifende CVE-Liste (MongoBleed gesät)
├── assets/
│ └── ci/
│ ├── github-action-supabase.yml # 1 Job – Sicherheitsaudit
│ └── github-action-mongodb.yml # 3 Jobs – statischer IaC, Live-Audit, MongoBleed-Probe
├── README.md # Diese Datei
├── LICENSE # MIT
├── DECISIONS.md
└── sentinel-implementation-plan.md # Multi-Backend-Erweiterungs-Roadmap
So funktioniert progressive Offenlegung: Claude lädt zunächst nur SKILL.md (~2K Tokens) plus core/*. Wenn die Erkennung ein Backend identifiziert, werden das passende backends/<name>/workflow.md und optionale Referenzdateien geladen. Ein reines Supabase-Audit zahlt nicht die Kosten für MongoDB-Inhalte; zukünftige Firebase-/Postgres-/MySQL-Erweiterungen folgen dem gleichen Muster.
Jedes implementierte Backend enthält eine CI-Workflow-Vorlage:
| Backend | Workflow | Job-Modi |
|---|---|---|
| Supabase | assets/ci/github-action-supabase.yml |
Workflows werden bei relevanten Dateiänderungen (Migrationen, Regeldateien, IaC, Abhängigkeitsmanifeste), wöchentlichem Cron (Montag 06:00 UTC) und manueller Auslösung gestartet. Sie posten PR-Kommentare, laden Bericht-Artefakte hoch und lassen den Build bei kritischen Ergebnissen fehlschlagen.
Frage einfach: „Richte kontinuierliches Sicherheitsmonitoring für dieses Projekt ein.“
Die Anti-Pattern-Datenbank von Database Sentinel basiert auf:
$where-InjectionSiehe references/vibe-coding-context.md und references/cve-feed.md für den vollständigen Zitiernachweis.
Database Sentinel ist für den Einsatz in der Produktion sicher konzipiert:
pg_tables, pg_policies, getCmdLineOpts usw.). Standardmäßig kein DDL oder DML.Prefer: tx=rollback (PostgREST-nativ; keine Daten modifiziert)BEGIN…ROLLBACK (transaktionales DDL)abortTransaction()/_sentinel_probe/{random}_sentinel_probe-Schema + DROP DATABASE (Opt-in, destruktiv – explizite Warnung)Beiträge sind willkommen. Die wertvollsten Beiträge:
backends/<name>/anti-patterns.md hinzu.backends/<name>/fix-templates.md.backends/mongodb/mongobleed-probe.md „Empirisch verifiziert“-Anmerkungen).backends/mongodb/ und backends/supabase/. Der Implementierungsplan (sentinel-implementation-plan.md) enthält den Vertrag für jedes.git checkout -b add-new-pattern)mysql_native_password-Ablösung für 8.4+)BACKENDS.md-Kurzreferenz, Abkündigungszeitplan für den supabase-sentinel-Shimnpx database-sentinel audit für Nicht-Claude-UmgebungenDer Skill-Name supabase-sentinel funktioniert weiterhin über den Kompatibilitäts-Shim unter compat/supabase-sentinel/. Er erzwingt das Audit nur auf Supabase und erzeugt eine Ausgabe, die von v1 nicht zu unterscheiden ist. Abschaltdatum: TBD; mindestens bis zum nächsten Minor-Release.
MIT – Verwende es wie du möchtest, kommerziell oder anderweitig.
Entwickelt für die Vibe-Coding-Ära.
Denn „es funktioniert“ und „es ist sicher“ sind zwei sehr unterschiedliche Dinge.
| Phase | Backend | Status |
|---|
| 1 | Supabase | ✅ ausgeliefert |
| 2 | MongoDB (selbstgehostet + Atlas) | ✅ ausgeliefert |
| 3 | Firebase (Firestore / RTDB / Storage / Functions / Remote Config) | 🚧 geplant |
| 4 | PostgreSQL (selbstgehostet, inkl. pgBouncer) | 🚧 geplant |
| 5 | MySQL (selbstgehostet) | 🚧 geplant |
| 6 | Backend-übergreifende Interaktionsanalyse | 🚧 geplant |
| 7 | Distribution + Feinschliff | 🚧 geplant |
| Schweregrad | Muster | Bedeutung |
|---|
| 🔴 KRITISCH | SB-001 RLS_DISABLED | Tabellen ohne Row-Level Security – vollständig im Internet exponiert |
| 🔴 KRITISCH | SB-002 SERVICE_ROLE_EXPOSED | service_role-Schlüssel im Frontend-Code – umgeht ALLE Sicherheit |
| 🔴 KRITISCH | SB-003 POLICIES_BUT_NO_RLS | Richtlinien geschrieben, aber RLS nie aktiviert – falsche Sicherheit |
| 🔴 KRITISCH | SB-005 WRITE_USING_TRUE | INSERT/UPDATE/DELETE mit USING(true) – jeder kann ändern |
| 🟠 HOCH | SB-006 USING_TRUE_SELECT | Alle Zeilen für anonyme Benutzer lesbar bei sensiblen Tabellen |
| 🟠 HOCH | SB-007 VIEW_NO_SECURITY_INVOKER | Views umgehen RLS, laufen als Superuser |
| 🟠 HOCH | SB-008 SECURITY_DEFINER_EXPOSED | Funktionen im public-Schema umgehen RLS, über API aufrufbar |
| 🟠 HOCH | SB-009 USER_METADATA_IN_POLICY | Richtlinien referenzieren benutzeränderbare Metadaten – Privilegienerweiterung |
| 🟠 HOCH | SB-010 UPDATE_NO_WITHCHECK | UPDATE-Richtlinien ohne WITH CHECK – Massenzuweisungsrisiko |
| 🟠 HOCH | SB-011 GHOST_AUTH | Anmeldungen mit unbestätigter E-Mail gewähren authentifizierte Sitzungen |
| 🟠 HOCH | SB-012 STORAGE_NO_RLS | Storage-Bucket ohne Zugriffskontrollrichtlinien |
| 🟠 HOCH | SB-013 JWT_SECRET_EXPOSED | JWT-Signing-Secret geleakt – kann Token für jeden Benutzer fälschen |
| 🟡 MITTEL | + 15 weitere Muster | Siehe backends/supabase/anti-patterns.md |
| Schweregrad | Muster | Bedeutung |
|---|
| 🔴 KRITISCH | MG-SH-001 MongoBleed (CVE-2025-14847, CISA KEV) | Pre-Auth-Heap-Offenlegung durch manipuliertes komprimiertes Paket. ~87K Instanzen zum Zeitpunkt der Offenlegung exponiert. |
| 🔴 KRITISCH | MG-SH-002 Auth deaktiviert | mongod ohne Authentifizierung – Angriffsfläche für Meow-Ransomware |
| 🔴 KRITISCH | MG-SH-003 Internet-gebundener mongod | --bind_ip_all + 27017 erreichbar – gepaart mit MG-SH-002 für vollständige Kompromittierung |
| 🔴 KRITISCH | MG-AT-001 Atlas Allowlist 0.0.0.0/0 | Atlas-Cluster von überall im Internet erreichbar |
| 🟠 HOCH | MG-SH-004 Localhost-Auth-Bypass + Container-Ausführung | enableLocalhostAuthBypass true + docker exec-Zugriff |
| 🟠 HOCH | MG-SH-005 Serverseitiges JS aktiviert | $where / $function / mapReduce erreichbar – NoSQL-RCE-Angriffsfläche |
| 🟠 HOCH | MG-SH-006 TLS nicht erforderlich | Klartextverkehr auf der Leitung |
| 🟠 HOCH | MG-SH-007 Privilegierte Rolle für App-Benutzer | App verbindet sich als root / dbAdminAnyDatabase usw. |
| 🟠 HOCH | MG-SH-008 Selbständerbares Rollendokument | findByIdAndUpdate(id, req.body) + kein Validator + Rollenfeld |
| 🟠 HOCH | MG-AT-002 Atlas Function als DB-Durchgang | NoSQL-Injection über HTTPS – nach Data-API-Abkündigung stark verbreitet |
| 🟠 HOCH | MG-AT-003 Atlas Data API noch im Code | Am 30. September 2025 eingestellt; defekt UND wahrscheinlich zu weniger geprüften Functions verschoben |
| 🟡 MITTEL | MG-SH-009 Mongoose < 8.9.5 | CVE-2024-53900 / CVE-2025-23061 – populate-match $where-Injection |
| 🟡 MITTEL | + 8 weitere Muster | Siehe backends/mongodb/anti-patterns.md |
| Ein Job – Sicherheitsaudit (Introspektion + dynamische Tests) |
| MongoDB | assets/ci/github-action-mongodb.yml | Drei Jobs – statischer IaC-Scan (läuft immer, keine Secrets), Live-Audit (gesteuert über vars.AUDIT_LIVE == 'true'), MongoBleed-Probe (gesteuert über vars.MONGOBLEED_PROBE == 'true' + Bestätigung des Eigentums) |
| Backend | Integriertes Tool | Was es übersieht | Database Sentinel deckt ab |
|---|
| Supabase | Splinter (16 Checks) | Ob Richtlinien tatsächlich unbefugten Zugriff verhindern | Live tx=rollback-Test jedes CRUD-Pfads gegen jede Tabelle |
| Supabase | Splinter | Ghost-Auth (E-Mail-Bestätigungsumgehung) | Anmelde-Test mit .invalid-TLD |
| Supabase | Splinter | Massenzuweisung via UPDATE ohne WITH CHECK + sensible Spalten | Kreuzreferenz von Spaltennamen mit Richtlinienform |
| Supabase | Splinter | Codebasis-Scan | Findet service_role-Schlüssel im Frontend-Code, hartcodierte JWTs, eingecheckte .env-Dateien |
| MongoDB | Atlas Advisor | MongoBleed-Laufzeitbestätigung | Ein-Paket-Protokoll-Detektor (verifiziert gegen 7.0.20 + 7.0.28) |
| MongoDB | Atlas Advisor | Selbständerbare Rollendokumente | Quellmuster + Sammlungsvalidator-Kreuzprüfung |
| MongoDB | Trivy / Aikido | Atlas-spezifische Konfig (Allowlists, IAM, CMK) | Direktes Atlas Admin API-Audit |
| MongoDB | mongoaudit (2018 aufgegeben) | Aktiv in 2025+ | Gepflegter Musterkatalog mit CVEs von 2025–2026 |
.invalid-TLD. Test-E-Mails verwenden RFC 6761 reservierte Domains, die keine E-Mails empfangen können.