
Claude Skill, который проверяет ваши проекты на наличие неправильных настроек RLS, раскрытых ключей, обходов аутентификации и уязвимостей хранилища. 27 антипаттернов, взятых из CVE-2025-48757 и 10 исследований по безопасности. Безопасно для использования в production.
Навык Claude, который проверяет безопасность ваших бэкендов баз данных.
Вставьте его в Claude Code, Cursor или любое окружение на базе Claude. Скажите «audit my database» и получите исчерпывающий отчёт по безопасности с точным кодом исправлений — за минуты, а не дни.
Были взломаны более 170 приложений Lovable. 20,1 млн строк подверглись утечке среди стартапов YC. Около 87 000 экземпляров MongoDB оставались уязвимыми для MongoBleed (CVE-2025-14847, CISA KEV). 1,8 млн паролей Firebase утекли в результате одного инцидента 2025 года. 45% кода, сгенерированного ИИ, содержат уязвимости из OWASP Top 10. Database Sentinel проверяет, действительно ли ваша конфигурация безопасности работает — а не просто ли она присутствует.
Database Sentinel выполняет 7-этапный аудит безопасности для любого используемого вами бэкенда:
tx=rollback, канарные коллекции, опциональный детектор MongoBleed)Межбэкендное рассуждение выявляет проблемы, которые пропускают сканеры одного бэкенда (например, идентификатор Firebase Auth UID, которому доверяет API Postgres без проверки JWT).
| Фаза | Бэкенд | Статус |
|---|---|---|
| 1 | Supabase | ✅ выпущено |
| 2 | MongoDB (самостоятельный + Atlas) | ✅ выпущено |
| 3 | Firebase (Firestore / RTDB / Storage / Functions / Remote Config) | 🚧 запланировано |
| 4 | PostgreSQL (собственный, включая pgBouncer) | 🚧 запланировано |
| 5 | MySQL (собственный) | 🚧 запланировано |
| 6 | Анализ межбэкендных взаимодействий | 🚧 запланировано |
| 7 | Дистрибуция + доработка | 🚧 запланировано |
Ранее Database Sentinel назывался Supabase Sentinel (один бэкенд). Переименование произошло во время Фазы 1 расширения на несколько бэкендов. Прокладка обратной совместимости compat/supabase-sentinel/ сохраняет старое имя навыка как минимум до следующего минорного релиза — существующие пользователи не видят регрессии.
Клонируйте навык в каталог навыков вашего проекта или в центральный:
git clone https://github.com/Farenhytee/database-sentinel.git ~/claude-skills/database-sentinel
Затем спросите у Claude:
Audit my database
Database Sentinel обнаружит, какой бэкенд(ы) использует ваш проект, выполнит соответствующие аудиты и сформирует единый отчёт. Если присутствуют несколько бэкендов (Firebase Auth + Postgres и т.д.), отчёт будет включать раздел межбэкендных взаимодействий после выхода Фазы 6.
Если вы хотите провести аудит только конкретного бэкенда, спросите явно:
Audit my Supabase project
Audit my MongoDB instance
Диспетчер сузит область.
Скопируйте содержимое SKILL.md и соответствующего backends/<name>/workflow.md в системную подсказку. Пройдите 7 шагов, используя свои учётные данные.
| Критичность | Паттерн | Что это |
|---|---|---|
| 🔴 КРИТИЧЕСКИЙ | SB-001 RLS_DISABLED | Таблицы без безопасности на уровне строк — полностью открыты в интернет |
| 🔴 КРИТИЧЕСКИЙ | SB-002 SERVICE_ROLE_EXPOSED | Ключ service_role во фронтенд-коде — обходит ВСЕ механизмы безопасности |
| 🔴 КРИТИЧЕСКИЙ | SB-003 POLICIES_BUT_NO_RLS | Политики написаны, но RLS никогда не включена — ложное ощущение безопасности |
| 🔴 КРИТИЧЕСКИЙ | SB-005 WRITE_USING_TRUE | INSERT/UPDATE/DELETE с USING(true) — любой может изменять |
| 🟠 ВЫСОКИЙ | SB-006 USING_TRUE_SELECT | Все строки читаемы анонимными пользователями в чувствительных таблицах |
| 🟠 ВЫСОКИЙ | SB-007 VIEW_NO_SECURITY_INVOKER | Представления обходят RLS, выполняются как суперпользователь |
| 🟠 ВЫСОКИЙ | SB-008 SECURITY_DEFINER_EXPOSED | Функции в публичной схеме обходят RLS, вызываемы через API |
| 🟠 ВЫСОКИЙ | SB-009 USER_METADATA_IN_POLICY | Политики используют изменяемые пользователем метаданные — эскалация привилегий |
| 🟠 ВЫСОКИЙ | SB-010 UPDATE_NO_WITHCHECK | Политики UPDATE без WITH CHECK — риск массового присваивания |
| 🟠 ВЫСОКИЙ | SB-011 GHOST_AUTH | Регистрация с неподтверждённым email предоставляет аутентифицированные сессии |
| 🟠 ВЫСОКИЙ | 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) | Раскрытие памяти кучи до аутентификации через поддельный сжатый пакет. На момент раскрытия было затронуто ~87 000 экземпляров. |
| 🔴 КРИТИЧЕСКИЙ | MG-SH-002 Аутентификация отключена | mongod запущен без аутентификации — поверхность атаки для вымогательского ПО Meow |
| 🔴 КРИТИЧЕСКИЙ | MG-SH-003 mongod, доступный из интернета | --bind_ip_all + порт 27017 доступен — в паре с MG-SH-002 ведёт к полной компрометации |
| 🔴 КРИТИЧЕСКИЙ | MG-AT-001 Белый список Atlas 0.0.0.0/0 | Кластер Atlas доступен из любой точки интернета |
| 🟠 ВЫСОКИЙ | MG-SH-004 Обход аутентификации с localhost + выполнение в контейнере | enableLocalhostAuthBypass true + доступ к docker exec |
| 🟠 ВЫСОКИЙ | MG-SH-005 JavaScript на стороне сервера включён | Доступны $where / $function / mapReduce — поверхность для NoSQL-RCE |
| 🟠 ВЫСОКИЙ | MG-SH-006 TLS не требуется | Трафик передаётся в открытом виде |
| 🟠 ВЫСОКИЙ | MG-SH-007 Привилегированная роль у пользователя приложения | Приложение подключается как root / dbAdminAnyDatabase и т.д. |
| 🟠 ВЫСОКИЙ | MG-SH-008 Самоизменяемый документ роли | findByIdAndUpdate(id, req.body) + без валидатора + поле роли |
| 🟠 ВЫСОКИЙ | MG-AT-002 Функция Atlas как прокси для БД | NoSQL-инъекция через HTTPS — распространилась после устаревания Data API |
| 🟠 ВЫСОКИЙ | MG-AT-003 Atlas Data API всё ещё в коде | Устарел 30 сентября 2025; сломан И, вероятно, заменён на менее проверяемые Functions |
| 🟡 СРЕДНИЙ | MG-SH-009 Mongoose < 8.9.5 | CVE-2024-53900 / CVE-2025-23061 — инъекция $where в populate-match |
| 🟡 СРЕДНИЙ | + ещё 8 паттернов | См. backends/mongodb/anti-patterns.md |
Сетевой зонд MongoBleed (backends/mongodb/mongobleed-probe.md) содержит детектор на основе одного пакета, который подтверждает эксплуатируемость в рантайме — проверено на mongo:7.0.20 (уязвим) и mongo:7.0.28 (исправлен). Он read-only, защищён двумя опциональными подтверждениями и никогда не извлекает содержимое.