Почему открытый ключ Firebase опасен?
Ваши клиентские приложения могут содержать публичный ключ Firebase, который вы используете для доступа к сервисам платформы. Этот ключ генерируется автоматически при создании проекта и встраивается прямо в код вашего фронтенда.
Firebase утверждает, что этот ключ безопасен для публикации, так как доступ контролируется правилами безопасности сервисов вроде Firestore или Realtime Database. Однако есть один важный нюанс: данный ключ является одновременно ключом Google Cloud Platform (GCP).
По умолчанию ключи GCP не имеют ограничений на вызовы других API-сервисов внутри одного проекта. Это значит, что если кто-то получит доступ к вашему открытому ключу, он сможет использовать его для вызова любых платных API-сервисов, включая недавно запущенный Gemini от Google.
Как это произошло у другого разработчика?
Один разработчик поделился историей о том, как всего за 13 часов получил счёт на сумму более €54 тысяч. Причина была проста: злоумышленник использовал открытый ключ Firebase для отправки запросов к новому API Gemini, который был активирован в проекте.
Когда вы включаете новый API-сервис в своём проекте Firebase/GCP, все существующие ключи получают автоматический доступ к этому сервису. При этом нет никаких уведомлений или подтверждений, предупреждающих вас об этом риске.
Таким образом, даже простое тестирование нового сервиса может привести к тому, что ваши открытые ключи станут инструментом для злоупотреблений со стороны третьих лиц.
Что делать, чтобы избежать подобных ситуаций?
Чтобы защитить себя от таких инцидентов:
- Ограничьте использование ключей только необходимыми сервисами через панель управления GCP.
- Регулярно проверяйте список активных API-сервисов и отключайте те, которые больше не нужны.
- Используйте разные проекты для тестирования новых функций и сервисов.
- Включите мониторинг расходов и установите лимиты на оплату услуг.