
Claude Skill जो आपके प्रोजेक्ट्स में RLS मिसकॉन्फ़िगरेशन, एक्सपोज़्ड कुंजियाँ, auth बायपास और स्टोरेज कमज़ोरियों का ऑडिट करता है। CVE-2025-48757 और 10 सुरक्षा अध्ययनों से प्राप्त 27 एंटी-पैटर्न। प्रोडक्शन के लिए सुरक्षित।
एक Claude स्किल जो आपके डेटाबेस बैकएंड की सुरक्षा कमज़ोरियों के लिए ऑडिट करती है।
इसे Claude Code, Cursor, या किसी भी Claude-संचालित वातावरण में डालें। "audit my database" कहें और सटीक फिक्स कोड के साथ एक व्यापक सुरक्षा रिपोर्ट पाएँ — दिनों में नहीं, मिनटों में।
170+ Lovable ऐप्स का उल्लंघन हुआ। YC स्टार्टअप्स में 20.1M पंक्तियाँ उजागर हुईं। ~87,000 MongoDB इंस्टेंस MongoBleed (CVE-2025-14847, CISA KEV) के प्रति संवेदनशील रह गए। 2025 की एक ही घटना में 1.8M Firebase पासवर्ड लीक हुए। 45% AI-जनित कोड OWASP Top 10 कमज़ोरियाँ पेश करता है। Database Sentinel जाँचता है कि आपका सुरक्षा कॉन्फ़िगरेशन वास्तव में काम करता है — न केवल यह कि वह मौजूद है।
Database Sentinel आपके प्रोजेक्ट द्वारा उपयोग किए जाने वाले किसी भी बैकएंड पर 7-चरणीय सुरक्षा ऑडिट करता है:
tx=rollback, कैनरी कलेक्शन, ऑप्ट-इन MongoBleed डिटेक्टर)क्रॉस-बैकएंड तर्क उन समस्याओं को पकड़ता है जो सिंगल-बैकएंड स्कैनर चूक जाते हैं (जैसे, एक Firebase Auth UID जिस पर Postgres API बिना JWT सत्यापन के भरोसा करती है)।
Database Sentinel पहले Supabase Sentinel (सिंगल-बैकएंड) था। यह पुनर्नामकरण मल्टी-बैकएंड विस्तार के Phase 1 के दौरान हुआ। compat/supabase-sentinel/ पर एक बैकवर्ड्स-संगत शिम पुराने स्किल नाम को कम से कम अगली मामूली रिलीज़ तक संरक्षित रखता है — मौजूदा उपयोगकर्ताओं को कोई प्रतिगमन नहीं दिखता।
स्किल को अपने प्रोजेक्ट की skills निर्देशिका में, या किसी केंद्रीय निर्देशिका में क्लोन करें:
git clone https://github.com/Farenhytee/database-sentinel.git ~/claude-skills/database-sentinel
फिर Claude से पूछें:
Audit my database
Database Sentinel पता लगाएगा कि आपका प्रोजेक्ट कौन से बैकएंड उपयोग करता है, प्रासंगिक ऑडिट चलाएगा और एक एकीकृत रिपोर्ट तैयार करेगा। यदि कई बैकएंड मौजूद हैं (Firebase Auth + Postgres डेटा, आदि), तो Phase 6 आने पर रिपोर्ट में एक क्रॉस-बैकएंड इंटरैक्शन अनुभाग शामिल होगा।
यदि आप केवल किसी विशिष्ट बैकएंड का ऑडिट करना चाहते हैं, तो स्पष्ट रूप से पूछें:
Audit my Supabase project
Audit my MongoDB instance
डिस्पैचर दायरे को सीमित कर देता है।
SKILL.md की सामग्री और प्रासंगिक backends/<name>/workflow.md को अपने सिस्टम प्रॉम्प्ट में कॉपी करें। अपने क्रेडेंशियल्स के साथ 7 चरणों से गुज़रें।
MongoBleed नेटवर्क प्रोब (backends/mongodb/mongobleed-probe.md) एक सिंगल-पैकेट डिटेक्टर प्रदान करता है जो रनटाइम पर शोषण-क्षमता की पुष्टि करता है — mongo:7.0.20 (संवेदनशील) और mongo:7.0.28 (पैच्ड) के विरुद्ध सत्यापित। यह केवल-पठनीय है, दो ऑप्ट-इन पुष्टिकरणों के पीछे गेटेड है, और कभी भी सामग्री नहीं निकालता।
╔════════════════════════════════════════════════════════╗
║ 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 🔴
─────────────────────────────────────────────────────────
🔴 CRITICAL — public.users: RLS Disabled [SB-001]
Risk: Anyone on the internet can read your entire users table.
Attack: Open browser DevTools → copy anon key → curl the API → dump
all emails, names, and metadata.
Proof: curl returns [{"id":"...","email":"[email protected]",...}]
Source: 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 🔴
─────────────────────────────────────────────────────────
🔴 CRITICAL — mongod 7.0.20: MongoBleed (CVE-2025-14847) [MG-SH-001]
Risk: A single TCP packet leaks fragments of MongoDB's memory —
including credentials, queries, and document data — without
requiring any login.
Attack: Public PoC available since Dec 26 2025; CISA KEV. Repeated
requests progressively dump more of the working set.
Proof: buildInfo.version = "7.0.20" (vulnerable; patched in 7.0.28)
zlib compression enabled (default): true
Active probe returned: vulnerable (opCode=2012, 163 bytes)
Source: CVE-2025-14847 / CISA KEV / MongoDB Server Security Update Dec 2025
Fix:
Upgrade to 7.0.28+. Same-day mitigation if upgrade is blocked:
net.compression.compressors = "snappy,zstd" in mongod.conf
✅ PASSING — Supabase: orders, payments, invoices, subscriptions
database-sentinel/
├── SKILL.md # Dispatcher — detects backends, routes audits (~2K tokens)
├── DECISIONS.md # Locked architecture decisions (D1-D4 + supersessions)
├── core/
│ ├── workflow.md # Universal 7-step audit workflow
│ ├── detection.md # Backend detection + JSON manifest
│ ├── scoring.md # Per-backend weights, min-aggregation
│ ├── reporting.md # Unified report format (text + JSON)
│ └── credentials.md # Public-vs-privileged key handling
├── backends/
│ ├── supabase/ # Phase 1 — implemented
│ │ ├── workflow.md # 7-step audit specialized for Supabase
│ │ ├── audit-queries.md # 20 SQL queries for schema introspection
│ │ ├── anti-patterns.md # 27 patterns (SB-001..SB-027)
│ │ └── fix-templates.md # SQL fix templates (7 RLS patterns + more)
│ └── mongodb/ # Phase 2 — implemented
│ ├── workflow.md # 7-step audit specialized for MongoDB
│ ├── introspection.md # mongosh + Atlas Admin API + IaC scan
│ ├── anti-patterns.md # 20 patterns (MG-SH-001..014, MG-AT-001..006)
│ ├── mongobleed-probe.md # Safe CVE-2025-14847 single-packet detector
│ ├── fix-templates.md # Version matrix + mongod.conf + validators + Atlas TF
│ └── test-recipe.md # Document-only end-to-end test recipe
├── compat/
│ └── supabase-sentinel/ # Backwards-compat shim (forces backend=supabase)
│ └── SKILL.md
├── references/
│ ├── vibe-coding-context.md # CVE-2025-48757, breach studies — cross-backend
│ └── cve-feed.md # Cross-backend CVE list (MongoBleed seeded)
├── assets/
│ └── ci/
│ ├── github-action-supabase.yml # 1 job — security audit
│ └── github-action-mongodb.yml # 3 jobs — static IaC, live audit, MongoBleed probe
├── README.md # this file
├── LICENSE # MIT
├── DECISIONS.md
└── sentinel-implementation-plan.md # Multi-backend expansion roadmap
प्रोग्रेसिव डिस्क्लोज़र कैसे काम करता है: Claude शुरुआत में केवल SKILL.md (~2K टोकन) और core/* लोड करता है। जब डिटेक्शन किसी बैकएंड की पहचान करता है, तो मेल खाती backends/<name>/workflow.md और ऑन-डिमांड संदर्भ फ़ाइलें लोड होती हैं। केवल-Supabase ऑडिट MongoDB सामग्री की लागत नहीं चुकाता; भविष्य के Firebase / Postgres / MySQL विस्तार उसी पैटर्न का पालन करते हैं।
प्रत्येक लागू किया गया बैकएंड एक CI वर्कफ़्लो टेम्पलेट प्रदान करता है:
| बैकएंड | वर्कफ़्लो | जॉब मोड |
|---|---|---|
| Supabase | assets/ci/github-action-supabase.yml | एकल जॉब — सुरक्षा ऑडिट (निरीक्षण + गतिशील प्रोब) |
वर्कफ़्लो प्रासंगिक फ़ाइल परिवर्तनों (माइग्रेशन, रूल फ़ाइलें, IaC, डिपेंडेंसी मैनिफ़ेस्ट), साप्ताहिक क्रॉन (सोमवार 06:00 UTC), और मैनुअल डिस्पैच पर ट्रिगर होते हैं। वे PR टिप्पणियाँ पोस्ट करते हैं, रिपोर्ट आर्टिफैक्ट अपलोड करते हैं, और गंभीर निष्कर्षों पर बिल्ड विफल कर देते हैं।
बस पूछें: "Set up continuous security monitoring for this project."
Database Sentinel का एंटी-पैटर्न डेटाबेस इन स्रोतों से लिया गया है:
$where इंजेक्शनपूर्ण उद्धरण सेट के लिए references/vibe-coding-context.md और references/cve-feed.md देखें।
Database Sentinel उत्पादन उपयोग के लिए सुरक्षित होने के लिए डिज़ाइन किया गया है:
pg_tables, pg_policies, getCmdLineOpts, आदि) पढ़ती हैं। डिफ़ॉल्ट रूप से कोई DDL या DML नहीं।Prefer: tx=rollback (PostgREST नेटिव; शून्य डेटा संशोधित)BEGIN…ROLLBACK (ट्रांज़ैक्शनल DDL)abortTransaction()/_sentinel_probe/{random} पर कैनरी कलेक्शन_sentinel_probe स्कीमा + DROP DATABASE (ऑप्ट-इन, विनाशकारी — स्पष्ट चेतावनी)योगदान स्वागत योग्य हैं। सबसे मूल्यवान योगदान:
backends/<name>/anti-patterns.md में जोड़ें।backends/<name>/fix-templates.md में बेहतर पॉलिसी पैटर्न, एज केस, या प्रदर्शन अनुकूलन।backends/mongodb/mongobleed-probe.md में "Empirically verified" एनोटेशन)।backends/mongodb/ और backends/supabase/ की संरचना का पालन करें। कार्यान्वयन योजना (sentinel-implementation-plan.md) में प्रत्येक के लिए अनुबंध है।git checkout -b add-new-pattern)mysql_native_password अवमूल्यन हैंडलिंग)BACKENDS.md त्वरित संदर्भ, supabase-sentinel शिम के लिए अवमूल्यन समयरेखाnpx database-sentinel auditsupabase-sentinel स्किल नाम compat/supabase-sentinel/ पर संगत शिम के माध्यम से अभी भी काम करता है। यह ऑडिट को केवल Supabase तक सीमित कर देता है और v1 से अप्रभेद्य आउटपुट उत्पन्न करता है। समाप्ति तिथि: TBD; कम से कम अगली मामूली रिलीज़ तक।
MIT — इसे जैसे चाहें उपयोग करें, व्यावसायिक रूप से या अन्यथा।
vibe-coding युग के लिए निर्मित।
क्योंकि "यह काम करता है" और "यह सुरक्षित है" दो बहुत अलग चीज़ें हैं।
| चरण | बैकएंड | स्थिति |
|---|
| 1 | Supabase | ✅ जारी |
| 2 | MongoDB (self-hosted + Atlas) | ✅ जारी |
| 3 | Firebase (Firestore / RTDB / Storage / Functions / Remote Config) | 🚧 नियोजित |
| 4 | PostgreSQL (self-hosted, pgBouncer सहित) | 🚧 नियोजित |
| 5 | MySQL (self-hosted) | 🚧 नियोजित |
| 6 | क्रॉस-बैकएंड इंटरैक्शन विश्लेषण | 🚧 नियोजित |
| 7 | वितरण + पॉलिश | 🚧 नियोजित |
| गंभीरता | पैटर्न | विवरण |
|---|
| 🔴 क्रिटिकल | SB-001 RLS_DISABLED | बिना Row-Level Security वाली तालिकाएँ — इंटरनेट के लिए पूरी तरह उजागर |
| 🔴 क्रिटिकल | SB-002 SERVICE_ROLE_EXPOSED | फ्रंटएंड कोड में service_role कुंजी — सभी सुरक्षा को बायपास करती है |
| 🔴 क्रिटिकल | SB-003 POLICIES_BUT_NO_RLS | पॉलिसियाँ लिखी गईं लेकिन RLS कभी सक्षम नहीं — झूठी सुरक्षा |
| 🔴 क्रिटिकल | SB-005 WRITE_USING_TRUE | USING(true) के साथ INSERT/UPDATE/DELETE — कोई भी संशोधित कर सकता है |
| 🟠 उच्च | SB-006 USING_TRUE_SELECT | संवेदनशील तालिकाओं पर सभी पंक्तियाँ अनाम उपयोगकर्ताओं द्वारा पठनीय |
| 🟠 उच्च | SB-007 VIEW_NO_SECURITY_INVOKER | व्यू RLS को बायपास करते हैं, सुपरयूज़र के रूप में चलते हैं |
| 🟠 उच्च | SB-008 SECURITY_DEFINER_EXPOSED | public स्कीमा में फ़ंक्शन RLS को बायपास करते हैं, API के माध्यम से कॉल करने योग्य |
| 🟠 उच्च | SB-009 USER_METADATA_IN_POLICY | पॉलिसियाँ उपयोगकर्ता-संशोधनीय मेटाडेटा का संदर्भ देती हैं — विशेषाधिकार वृद्धि |
| 🟠 उच्च | SB-010 UPDATE_NO_WITHCHECK | WITH CHECK के बिना UPDATE पॉलिसियाँ — मास असाइनमेंट जोखिम |
| 🟠 उच्च | SB-011 GHOST_AUTH | अपुष्ट ईमेल साइनअप प्रमाणित सत्र प्रदान करते हैं |
| 🟠 उच्च | SB-012 STORAGE_NO_RLS | स्टोरेज बकेट में एक्सेस कंट्रोल पॉलिसियाँ अनुपस्थित |
| 🟠 उच्च | SB-013 JWT_SECRET_EXPOSED | JWT साइनिंग सीक्रेट लीक — किसी भी उपयोगकर्ता का टोकन जाली बना सकता है |
| 🟡 मध्यम | + 15 और पैटर्न | backends/supabase/anti-patterns.md देखें |
| गंभीरता | पैटर्न | विवरण |
|---|
| 🔴 क्रिटिकल | MG-SH-001 MongoBleed (CVE-2025-14847, CISA KEV) | विशेष-निर्मित संपीड़ित पैकेट के माध्यम से प्री-ऑथ हीप मेमोरी प्रकटीकरण। प्रकटीकरण के समय ~87K इंस्टेंस उजागर। |
| 🔴 क्रिटिकल | MG-SH-002 Auth अक्षम | बिना प्रमाणीकरण के चल रहा mongod — Meow रैंसमवेयर हमला सतह |
| 🔴 क्रिटिकल | MG-SH-003 Internet-bound mongod | --bind_ip_all + 27017 पहुँच योग्य — पूर्ण अधिग्रहण के लिए MG-SH-002 के साथ युग्मित |
| 🔴 क्रिटिकल | MG-AT-001 Atlas allowlist 0.0.0.0/0 | Atlas क्लस्टर इंटरनेट पर कहीं से भी पहुँच योग्य |
| 🟠 उच्च | MG-SH-004 localhost auth बायपास + कंटेनर exec | enableLocalhostAuthBypass true + docker exec एक्सेस |
| 🟠 उच्च | MG-SH-005 सर्वर-साइड JS सक्षम | $where / $function / mapReduce पहुँच योग्य — NoSQL-RCE सतह |
| 🟠 उच्च | MG-SH-006 TLS आवश्यक नहीं | वायर पर प्लेनटेक्स्ट ट्रैफ़िक |
| 🟠 उच्च | MG-SH-007 ऐप उपयोगकर्ता पर विशेषाधिकृत भूमिका | ऐप root / dbAdminAnyDatabase आदि के रूप में कनेक्ट होता है |
| 🟠 उच्च | MG-SH-008 स्व-संशोधनीय भूमिका दस्तावेज़ | findByIdAndUpdate(id, req.body) + कोई वैलिडेटर नहीं + role फ़ील्ड |
| 🟠 उच्च | MG-AT-002 DB पास-थ्रू के रूप में Atlas Function | HTTPS पर NoSQL इंजेक्शन — Data-API-अवमूल्यन के बाद प्रसारित |
| 🟠 उच्च | MG-AT-003 कोड में अभी भी Atlas Data API | 30 सितंबर 2025 को अवमूल्यित; टूटा हुआ और संभवतः कम-ऑडिटेड Functions में स्थानांतरित |
| 🟡 मध्यम | MG-SH-009 Mongoose < 8.9.5 | CVE-2024-53900 / CVE-2025-23061 — populate-match $where इंजेक्शन |
| 🟡 मध्यम | + 8 और पैटर्न | backends/mongodb/anti-patterns.md देखें |
| MongoDB | assets/ci/github-action-mongodb.yml | तीन जॉब — स्थैतिक IaC स्कैन (हमेशा चलता है, कोई सीक्रेट नहीं), लाइव ऑडिट (vars.AUDIT_LIVE == 'true' पर गेटेड), MongoBleed प्रोब (vars.MONGOBLEED_PROBE == 'true' + स्वामित्व पुष्टि पर गेटेड) |
| बैकएंड | बिल्ट-इन टूल | यह क्या चूकता है | Database Sentinel कवर करता है |
|---|
| Supabase | Splinter (16 लिंट) | क्या पॉलिसियाँ वास्तव में अनधिकृत पहुँच रोकती हैं | हर तालिका के विरुद्ध हर CRUD पथ का लाइव tx=rollback परीक्षण |
| Supabase | Splinter | Ghost-auth (ईमेल-पुष्टि बायपास) | .invalid TLD के साथ साइन-अप प्रोब |
| Supabase | Splinter | WITH CHECK के बिना UPDATE के माध्यम से मास-असाइनमेंट + संवेदनशील कॉलम | कॉलम नामों को पॉलिसी आकार के साथ क्रॉस-रेफ़रेंस करता है |
| Supabase | Splinter | कोडबेस स्कैनिंग | फ्रंटएंड कोड में service_role कुंजियाँ, हार्डकोडेड JWT, कमिटेड .env फ़ाइलें ढूँढता है |
| MongoDB | Atlas Advisor | MongoBleed रनटाइम पुष्टि | सिंगल-पैकेट प्रोटोकॉल-स्तरीय डिटेक्टर (7.0.20 + 7.0.28 के विरुद्ध सत्यापित) |
| MongoDB | Atlas Advisor | स्व-संशोधनीय भूमिका दस्तावेज़ | स्रोत-पैटर्न + कलेक्शन-वैलिडेटर क्रॉस-चेक |
| MongoDB | Trivy / Aikido | Atlas-विशिष्ट कॉन्फ़िग (allowlists, IAM, CMK) | प्रत्यक्ष Atlas Admin API ऑडिट |
| MongoDB | mongoaudit (2018 में परित्यक्त) | 2025+ में सक्रिय | 2025–2026 CVEs के साथ अनुरक्षित पैटर्न कैटलॉग |
.invalid