Как устранить проблему, связанную с раскрытием серверных ключей Firebase Cloud Messaging (FCM)
Эта информация предназначена для разработчиков, в приложениях которых есть раскрытые серверные ключи Firebase Cloud Messaging (FCM).
Что происходит
В одном или нескольких ваших приложениях содержатся раскрытые серверные ключи FCM. Злоумышленник может использовать их, чтобы отправлять push-уведомления всем пользователям уязвимого приложения. Кроме того, он может управлять контентом таких уведомлений и добавлять в них оскорбления, шокирующие изображения и т. д. Чтобы устранить уязвимость, выполните описанные ниже действия. Информацию о том, где в приложении раскрываются серверные ключи FCM, вы найдете в уведомлении Play Console.
Что нужно сделать
-
Обновите приложение и раскрытые ключи, выполнив указанные ниже действия.
- Если для вашего приложения включен устаревший FCM API и вы не используете его для отправки push-уведомлений, отключите его.
- Если для вашего приложения включен устаревший FCM API и вы используете его для отправки push-уведомлений, выполните одно из следующих действий:
- Рекомендуется. Начните использовать FCM v1 API и отключите устаревший FCM API.
- Сделайте так, чтобы можно было безопасно использовать устаревший FCM API. Для этого выполните перечисленные ниже действия.
- Если раскрытый ключ используется только для FCM API:
- Создайте новый ключ. Для этого откройте консоль Firebase, выберите "Настройки проекта" > Cloud Messaging и нажмите кнопку "Добавить ключ сервера". Используйте этот ключ для отправки сообщений FCM из безопасной серверной среды. Не добавляйте его в код клиента (приложения, исполняемые файлы).
- Затем удалите раскрытые серверные ключи из GCP Console. Части приложения, в которых раскрываются серверные ключи FCM, указаны в электронном письме, отправленном вам от Google Play. В шаге C описано, как получить из них раскрытые ключи.
- Если раскрытый ключ используется для нескольких API, включая FCM API:
- Начните использовать FCM v1 API и отключите устаревший FCM API.
- Чтобы безопасно использовать другие API, мы рекомендуем отказаться от раскрытых ключей и удалить их из GCP Console.
- Если раскрытый ключ используется только для FCM API:
- Когда закончите, удалите раскрытый серверный ключ FCM из кода приложения. Части приложения, в которых раскрываются серверные ключи FCM, указаны в электронном письме, отправленном вам от Google Play. Чтобы получить раскрытые ключи, изучите код приложения в уязвимом месте. Ключ может быть встроен в виде строки или загружен из XML-ресурсов приложения. В последнем случае ключ находится в файле
res/values/strings.xml
в папке приложения. Обратите внимание:- Если вы выполнили указанные выше шаги, но не удалили раскрытые ключи из приложения, вы будете по-прежнему получать уведомления по электронной почте или в Google Play Console.
- Если вы удалили раскрытые ключи из приложения, но не выполнили перечисленные выше шаги, проблема не устранена, так как злоумышленник может найти ключ в старой версии приложения и использовать его для атаки.
2. Отправьте обновленный APK-файл.
Чтобы отправить обновленный набор App Bundle или файл APK, выполните следующие действия:
- Откройте Play Console.
- Выберите приложение.
- Откройте App Bundle Explorer.
- В раскрывающемся меню в правом верхнем углу выберите версию приложения с файлом APK или набором App Bundle, где нарушены правила, и запомните, к каким выпускам он относится.
- Откройте версию тестирования с нарушением правила. Появится одна из четырех страниц: "Внутреннее тестирование", "Закрытое тестирование", "Открытое тестирование" или "Рабочая версия".
- В правом верхнем углу страницы выберите Создать новый выпуск Возможно, перед этим вам потребуется нажать кнопку "Управлять версией".
- Если выпуск с APK-файлом, нарушающим правила, сохранен как проект, удалите его.
- Добавьте обновленную версию наборов App Bundle или файлов APK.
- Убедитесь, что версия с нарушениями находится в разделе Не включены. Дополнительные инструкции представлены в разделе "Не включены" этой справочной статьи.
- Чтобы сохранить изменения в выпуске, выберите Сохранить.
- Подготовив версию, нажмите Проверка выпуска.
Если файл APK с нарушениями выпущен в нескольких версиях тестирования, повторите шаги 5–9 для каждой из них.
После этого мы проведем повторную проверку, которая может занять несколько часов. Если мы убедимся, что уязвимость устранена, то опубликуем приложение и дополнительных действий с вашей стороны не потребуется. В противном случае новая версия не будет опубликована, а вы получите уведомление по электронной почте.
Мы всегда готовы помочь
Если у вас есть вопросы об уязвимости, задайте их на сайте Stack Overflow, используя тег android-security. Чтобы получить более подробные разъяснения, обратитесь в нашу службу поддержки для разработчиков.