Правила безпеки Firebase забезпечують детальний серверний механізм захисту даних у Firestore, базі даних у реальному часі та хмарному сховищі [S1]. Оскільки програми Firebase часто взаємодіють із цими хмарними службами безпосередньо зі сторони клієнта, ці правила являють собою єдиний бар’єр, який запобігає несанкціонованому доступу до серверних даних [S1].
Вплив дозвільних правил
Неправильно налаштовані правила можуть призвести до значного розкриття даних [S2]. Якщо правила налаштовані як надто дозволені — наприклад, використовуються параметри «тестового режиму» за замовчуванням, які дозволяють глобальний доступ — будь-який користувач, який знає ідентифікатор проекту, може читати, змінювати або видаляти весь вміст бази даних [S2]. Це обходить усі заходи безпеки на стороні клієнта та може призвести до втрати конфіденційної інформації користувача або повного збою служби [S2].
Основна причина: недостатня логіка авторизації
Основною причиною цих вразливостей зазвичай є невиконання певних умов, які обмежують доступ на основі ідентифікації користувача або атрибутів ресурсу [S3]. Розробники часто залишають конфігурації за замовчуванням активними у виробничих середовищах, які не перевіряють об’єкт request.auth [S3]. Без оцінки request.auth система не зможе розрізнити законного автентифікованого користувача та анонімного запитувача [S3].
Технічне усунення
Захист середовища Firebase вимагає переходу від відкритого доступу до моделі принципала з найменшими привілеями.
- Примусова автентифікація: переконайтеся, що для всіх конфіденційних шляхів потрібен дійсний сеанс користувача, перевіривши, чи об’єкт
request.authне має значення null [S3]. - Реалізація доступу на основі ідентифікаційних даних: налаштуйте правила, які порівнюють UID користувача (
request.auth.uid) із полем у документі або з самим ідентифікатором документа, щоб користувачі мали доступ лише до своїх власних даних [S3]. - Детальне визначення обсягу дозволів: уникайте глобальних символів підстановки для колекцій. Натомість визначте спеціальні правила для кожної колекції та підколекції, щоб мінімізувати потенційну поверхню атаки [S2].
- Перевірка за допомогою Emulator Suite: використовуйте Firebase Emulator Suite для тестування правил безпеки локально. Це дає змогу перевірити логіку керування доступом щодо різних користувачів перед розгортанням у реальному середовищі [S2].
Як FixVibe перевіряє це
FixVibe тепер містить це як сканування BaaS лише для читання. baas.firebase-rules витягує конфігурацію Firebase з однакових пакетів JavaScript, включаючи сучасні форми пакетів initializeApp(...), а потім перевіряє базу даних у реальному часі, Firestore та сховище Firebase за допомогою неавтентифікованих запитів лише для читання. Для Firestore він спочатку намагається отримати список кореневої колекції; коли список заблоковано, він також перевіряє загальні конфіденційні назви колекцій, як-от users, accounts, customers, orders, payments, messages, admin і settings. Він повідомляє лише про успішне анонімне читання або списки та не записує, не видаляє та не зберігає вміст документів клієнта.
