// docs / baas security / umbrella scanner
Сканер неправильних налаштувань BaaS: знайдіть публічні шляхи даних раніше за користувачів
Постачальники Backend-as-a-Service — Supabase, Firebase, Clerk, Auth0, Appwrite, Convex — усі зазнають невдачі в безпеці однією формою: платформа постачає розумні значення за замовчуванням, розробник (або ШІ-інструмент кодування) тягнеться до скорочення, і відкривається публічний шлях між неавторизованим зловмисником та даними клієнта. Сканер неправильних налаштувань BaaS — це єдиний інструмент, який зондує цей шлях ззовні так, як це робив би зловмисник. Ця стаття картографує п'ять повторюваних класів неправильних налаштувань, пояснює, як працює оглядове сканування BaaS FixVibe, порівнює чотирьох основних постачальників та протиставляє BaaS-обізнаний сканер загальним DAST-інструментам.
Чому неправильні налаштування BaaS мають повторювану форму
Кожна платформа BaaS дотримується тієї ж архітектури: керований бекенд із тонким клієнтським SDK, який спілкується з ним із браузера. Орієнтованому на браузер клієнту потрібні якісь облікові дані — ключ anon, публікований ключ, ID проєкту Firebase — щоб ідентифікуватися перед бекендом. Ці облікові дані навмисно публічні; безпека архітектури базується на тому, що контролі доступу на рівні платформи (RLS, rules, allowlists) виконують свою роботу.
ШІ-інструменти кодування будують поверх цієї архітектури без засвоєння шару контролів платформи. Вони підключають клієнтський SDK правильно, приймають значення за замовчуванням платформи з дозвільними правилами (які існують для зручності туторіалів) та постачають. Повторювана форма: публічні облікові дані + дозвільне правило за замовчуванням + відсутнє перевизначення = розкриття даних. П'ять класів неправильних налаштувань нижче — це всі варіанти цієї форми.
П'ять повторюваних класів неправильних налаштувань
Вони з'являються у кожного постачальника BaaS. Повне сканування покриває всі п'ять проти кожного використовуваного постачальника:
Клас 1: Неправильний ключ у браузерному бандлі
У браузер постачається секретний/admin ключ (Supabase service_role, приватний ключ Firebase Admin SDK, Clerk sk_*, клієнтський секрет Auth0) замість публічного/anon-еквівалента. Браузер стає необмеженим admin-клієнтом. Покривається перевіркою bundle-secrets FixVibe.
Клас 2: Шар контролю доступу вимкнено або дозвільно
RLS вимкнено, правила Firebase — if true, список callback Auth0 із wildcard. Облікові дані в браузері правильні — але межа на рівні платформи, призначена обмежувати їх, не виконує свою роботу.
Клас 3: Анонімні читання чутливих ресурсів
Анонімно-читані колекції Firestore, анонімно-перелічувані кошики сховища Supabase, анонімно-доступний Auth0 Management API. Сканування запитує: "без облікових даних, що я можу прочитати?"
Клас 4: Артефакти тестового режиму в продакшені
Тестові ключі (pk_test_*, sb_test_*) у продакшен-розгортанні; dev-режим застосунків Firebase, доступних із живого домену; тестові tenant-застосунки Auth0 зі слабшими налаштуваннями, ніж продакшен. Сканування порівнює ключі часу виконання з очікуваними продакшен-префіксами.
Клас 5: Відсутня перевірка підпису вебхуків
Вебхуки Clerk, вебхуки Stripe, вебхуки Supabase — усі підписують свої payload. Обробник, який не перевіряє підпис — це примітив запису в базу для будь-якого зловмисника, який вгадає URL. Виявляється через форму відповіді — непідписаний запит, що отримує 200, означає, що перевірку пропущено.
Як працює оглядове сканування BaaS FixVibe
BaaS-фаза FixVibe виконується в три етапи, кожен виробляє окремі знахідки:
- <strong>Stage 1 — provider fingerprinting.</strong> The scanner crawls the deployed app, parses every JavaScript chunk, and identifies which BaaS providers the app uses. Each provider has a distinctive runtime signature: Supabase uses <code>*.supabase.co</code>; Firebase uses <code>firebase.initializeApp({ projectId: ... })</code>; Clerk uses <code>pk_*</code> keys with a known prefix; Auth0 uses <code>clientId</code> and <code>domain</code>. The scanner records which providers are present and extracts the project identifiers.
- Етап 2 — специфічні для постачальника зонди. Для кожного виявленого постачальника сканер запускає специфічну для постачальника перевірку:
baas.supabase-rlsзондує PostgREST;baas.firebase-rulesзондує Firestore + RTDB + Storage;baas.clerk-auth0валідує префікс ключів у бандлі; перевірка bundle-secrets валідує, що жодні облікові дані сервісного рівня не витекли. Кожен зонд виконується незалежно — знахідка Supabase не блокує сканування Firebase. - Етап 3 — кросс-провайдерська кореляція. Сканер перехресно посилається на знахідки. Витеклий ключ сервісної ролі Supabase разом із відсутнім RLS — серйозніше, ніж кожна з цих знахідок окремо — звіт виносить це на поверхню. Кілька провайдерів ідентичності (Clerk + Auth0 + користувацька auth) в одному застосунку — це структурна знахідка, позначена для перегляду.
Кожен зонд пасивний: щонайбільше одне анонімне читання на ресурс, із записом форми відповіді, але без розбиття на сторінки чи зберігання вмісту рядків. Зонди запису та зміни захищені підтвердженим володінням доменом — вони ніколи не запускаються проти неперевірених цілей.
Що сканер знаходить за постачальником
Кожен постачальник BaaS має різну поверхню та різну стратегію сканування. Ось що покрито:
- Supabase: відсутній RLS на таблицях, анонімно-перелічувані кошики сховища, витеклий JWT
service_roleабо ключsb_secret_*у бандлі, розкриті схеми через анонімний перелік OpenAPI. Дивіться Сканер Supabase RLS та Чек-лист сховища. - Firebase: правила
if trueна Firestore, Realtime Database та Cloud Storage; анонімно-перелічувані кошики Storage; відсутнє нав'язування App Check. Дивіться Сканер правил Firebase та Пояснення правила if-true. - Clerk: секретні ключі
sk_*у бандлі,pk_test_*у продакшені, відсутня перевірка підпису вебхуків, wildcard у дозволених origin. Дивіться Чек-лист Clerk. - Auth0: клієнтські секрети в бандлі, увімкнений Implicit grant, wildcard у callback / logout URL, відсутній PKCE на SPA. Дивіться Чек-лист Auth0.
Як сканер BaaS порівнюється із загальними DAST та SAST-інструментами
BaaS-обізнаний сканер виконує специфічну роботу, яку не роблять інші інструменти. Порівняння:
| Аспект | FixVibe (BaaS-обізнаний DAST) | Загальний DAST (Burp / ZAP) | SAST / SCA (Snyk / Semgrep) |
|---|---|---|---|
| Покриття BaaS | Нативні перевірки для Supabase, Firebase, Clerk, Auth0, Appwrite | Загальний обхід веб; немає специфічних для постачальника зондів | Статичний аналіз лише репозиторію; немає продакшен-валідації |
| Час налаштування | URL → запуск → результати за 60 секунд | Години: налаштування spider, auth, scope | День: інтеграція в CI репозиторію |
| Що це доводить | Продакшен-розкриття часу виконання з доказами на HTTP-рівні | Веб-вразливості (XSS, SQLi); BaaS через ручну конфігурацію | Шаблони коду, які можуть розгорнутися або ні |
| Перевірка JavaScript-бандла | Декодує JWT, відповідає префіксам секретів, проходить по фрагментах | Обмежено — лише grep за рядками | Так, але лише на стороні репозиторію, не розгорнуто |
| Безперервне сканування | Щомісячно / при розгортанні через API + MCP | Вручну; налаштовуйте графік самі | На кожний commit (добре для коду, сліпо до часу виконання) |
| Ціна для соло / малої команди | Безкоштовний тариф; платно від $19/міс | Burp Pro $499/рік; ZAP безкоштовно, але багато false positives | Snyk безкоштовно / Semgrep безкоштовно; платні тарифи від $25/dev |
Чесна область: що цей сканер не замінює
BaaS-обізнаний DAST-сканер — це цільовий інструмент, а не повна програма безпеки. Він не:
- Замінює SAST або SCA. Статичний аналіз знаходить CVE залежностей (Snyk, Semgrep) та вразливості на рівні коду (SonarQube), які DAST-сканер не може. Запускайте обидва.
- Замінює ручний пентест. Людина-пентестер знаходить недоліки бізнес-логіки, граничні випадки авторизації та ланцюжкові вразливості, які жоден сканер не може. Найміть пентестера перед великим запуском або аудитом відповідності.
- Перевіряє ваш код або репозиторій на секрети в git-історії. Перевірка bundle-secrets покриває те, що наразі розгорнуто, а не те, що історично було закомічено. Використовуйте
git-secretsабоgitleaksдля гігієни репозиторію. - Покриває не-BaaS бекенд-сервіси. Якщо ваш застосунок використовує користувацький бекенд (Express, Rails, Django, FastAPI), FixVibe сканує його HTTP-поверхню, але не зондує базу даних або інфраструктуру за нею. Це територія загального DAST + SAST.
Поширені запитання
Чи працює оглядове сканування, якщо мій застосунок використовує двох постачальників BaaS (наприклад, Supabase + Clerk)?
Так — зняття відбитків постачальників та зонди для кожного постачальника незалежні. Сканер виявляє обох, запускає обидва набори перевірок та звітує про кросс-провайдерські кореляції (наприклад, JWT-шаблон Supabase із Clerk, який надсилає email як claim, разом із відсутнім RLS).
Чим це відрізняється від запуску Burp Suite Pro проти мого застосунку?
Burp — це загальний DAST-верстак. Із коробки Burp не знає, що таке PostgREST, Firestore або шлях callback Auth0 — вам потрібно вручну налаштовувати scope, писати розширення та інтерпретувати відповіді. FixVibe постачається з вбудованими зондами BaaS та форматуванням доказів у формі BaaS. Burp виграє на загальному покритті веб-застосунків (XSS, SQLi, бізнес-логіка); FixVibe виграє на специфічних для BaaS знахідках.
А як щодо App Check (Firebase) або атестації (Apple / Google)?
App Check змушує опортуністичні зовнішні сканування повертати 403 на кожен зонд — правильний результат для зловмисного бота. Сканування FixVibe з неатестованого клієнта поводиться так само. Якщо у вас увімкнено App Check і FixVibe все ще звітує про знахідки, це означає, що ваші правила відкриті й для атестованих клієнтів — це справжній ризик. App Check + правильні правила — це шаблон захисту в глибину.
Чи може сканер перевірити моє виправлення?
Так — повторно запустіть після застосування виправлення. ID перевірок (наприклад, baas.supabase-rls) стабільні між запусками, тож ви можете порівняти знахідки: знахідка, яка була open у запуску 1 та відсутня у запуску 2 — це доказ того, що виправлення приземлилося.
Наступні кроки
Запустіть безкоштовне сканування FixVibe проти вашого продакшен-URL — перевірки BaaS-фази постачаються на кожному тарифі, включно з безкоштовним. Для глибоких пірнань за постачальниками окремі статті в цьому розділі покривають кожного постачальника детально: Supabase RLS, Розкриття сервісного ключа Supabase, Сховище Supabase, Правила Firebase, Firebase if-true, Clerk та Auth0.
