Firebase Cloud Messaging (FCM) 服务器密钥泄露的补救措施

本文面向的是所发布的应用存在 Firebase Cloud Messaging (FCM) 服务器密钥泄露问题的开发者。

问题说明

您的一个或多个应用包含已泄露的 FCM 服务器密钥。恶意攻击者可能会利用泄露的密钥向存在安全漏洞的应用的所有用户发送推送通知。攻击者还能控制此类通知的内容,让其中包含令人反感的消息、血腥暴力或令人不安的图片等等。请阅读下面的详细步骤,然后解决您的应用存在的问题。您可以在 Play 管理中心针对相应应用提供的通知中找到已泄露的 FCM 服务器密钥在该应用中所处的位置。

需要采取的行动

  1. 按照下文中重点介绍的步骤更新您的应用和已泄露的 FCM 密钥。

    1. 如果您的应用已启用旧版 FCM API,但您未使用该 API 发送推送通知,则请停用旧版 FCM API
    2. 如果您已启用旧版 FCM API,并且在使用该 API 发送推送通知,则您可以执行以下两个步骤之一:
      1. (推荐)改用 FCM v1 API 并停用旧版 FCM API
      2. 为确保安全地使用旧版 FCM API,请执行以下操作:
        1. 如果已泄露的密钥仅用于 FCM API,请执行以下操作:
          1. 点击“添加服务器密钥”,转到 Firebase 控制台 > 项目设置 > Cloud Messaging 以生成新密钥。使用这个新服务器密钥在安全的服务器环境中发送 FCM 消息。请确保仅在安全的服务器环境中使用此密钥,且该密钥未包含在您的客户端代码(应用、二进制文件)中。
          2. 改用新生成的服务器密钥发送 FCM 消息后,从 GCP Console 中删除已泄露的服务器密钥。您可以通过 Google Play 发送的通知电子邮件了解已泄露的 FCM 服务器密钥在相应应用中所处的位置。步骤 c. 介绍了如何从这些位置获取已泄露的密钥。
        2. 如果已泄露的密钥还用于其他 API(包括 FCM),请执行以下操作:
          1. 改用 FCM v1 API 并停用旧版 FCM API
          2. 为了保障其他 API 在未来继续可用,请考虑停止将已泄露的密钥用于这些 API,并最终从 GCP Console 中删除已泄露的密钥。
    3. 完成上述其中一个步骤后,从您的应用代码中删除已泄露的 FCM 服务器密钥。您可以通过 Google Play 发送的通知电子邮件了解已泄露的 FCM 服务器密钥在相应应用中所处的位置。如需获取已泄露的密钥,请在存在漏洞的位置检查您应用的代码。此密钥可能以字符串形式嵌入该位置,也可能通过应用的 XML 资源加载到该位置;在后一种情况下,请检查应用的 res/values/strings.xml 文件以获取已泄露的密钥。请注意以下事项:
      • 如果您执行了上述步骤,但未从应用中删除已泄露的密钥,您将会继续在电子邮件/Google Play 管理中心中收到漏洞通知。
      • 如果您从应用中删除了已泄露的密钥,但未执行上述步骤,则您实际上并没有解决问题,因为攻击者只需在您应用的旧版本中找到该密钥,便能用来攻击您的应用。

2. 提交更新后的 APK

如要提交更新后的 app bundle 或 APK,请按以下步骤操作:

  1. 转到您的 Play 管理中心
  2. 选择相应的应用。
  3. 转到 App bundle 资源管理器
  4. 从右上角的下拉菜单中选择不合规 APK/app bundle 的应用版本,然后记下其所属的发布版本。
  5. 转到存在政策违规问题的轨道。该轨道对应以下 4 个页面之一:内部测试、封闭式测试、开放式测试或正式版。
  6. 点击页面右上角附近的创建新版本。(您可能需要先点击“管理轨道”)
    • 如果使用了违规 APK 的版本处于草稿状态,请舍弃该版本。
  7. 添加符合政策的 app bundle 或 APK 版本。
    • 确保 app bundle 或 APK 的不合规版本位于该发布版本的不包含部分。如需进一步的指南,请参阅这篇 Play 管理中心帮助文章的“不包含(app bundle 和 APK)”部分。
  8. 如需保存您对版本做出的更改,请选择保存
  9. 完成版本准备工作后,请选择检查发布版本

如果这个不符合政策规定的 APK 已发布到多个轨道,请在每个轨道中重复执行第 5 至 9 步。

重新提交后,我们会重新审核您的应用。审核过程可能需要几个小时才能完成。如果应用通过审核并成功发布,便无需进一步操作。如果应用未通过审核,则新版应用将无法发布,您会收到电子邮件通知。

我们随时为您提供帮助

如果您有关于此漏洞的技术问题,可以在 Stack Overflow 上发帖咨询(使用“android-security”标签)。如需明确了解需要执行哪些步骤来解决此问题,您可以与我们的开发者支持团队联系。

主菜单
12993313785929119271
true
搜索支持中心
true
true
true
true
true
5016068
false