FixVibe
Covered by FixVibehigh

Firebase Правила безпеки: запобігання несанкціонованому розкриттю даних

Firebase Правила безпеки є основним захистом для безсерверних програм, які використовують Firestore і Cloud Storage. Якщо ці правила є надто дозволеними, наприклад, дозволяючи глобальний доступ для читання або запису в робочому стані, зловмисники можуть обійти призначену логіку програми, щоб викрасти або видалити конфіденційні дані. У цьому дослідженні досліджуються поширені неправильні конфігурації, ризики за замовчуванням у «тестовому режимі» та способи реалізації контролю доступу на основі ідентичності.

CWE-284CWE-863

Правила безпеки 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. Він повідомляє лише про успішне анонімне читання або списки та не записує, не видаляє та не зберігає вміст документів клієнта.