需要进行更新以修复 eMudhra 证书泄露问题

2026 年 10 月 19 日,Google 发现一个证书授权机构 (eMudhra) 遭到入侵。为了解决此安全问题,我们立即向生态系统的多个领域发布了安全补丁。

本页面可帮助您了解受影响的应用类型以及为修复此 eMudhra 证书泄露问题而需要采取的所有措施。我们还提供有关安全问题的详细信息。

受影响的应用类型和所需采取的措施

由于此安全问题的性质,许多不同类型的应用都受到了影响。如果您的应用类型在此列出,则很可能受到了影响。请查看适用部分,了解您需要采取哪些措施。

其他社区支持的平台也会受到影响(例如,以 Apple 平台为目标且使用 Firestore 的 React Native 应用)。


Flutter 应用

Flutter 应用受到了不同程度的影响。请查看适用部分,了解您需要采取哪些措施。

面向 Android、Windows 或 Linux 的 Flutter 应用

虽然浏览器和操作系统推送了紧急中间证书屏蔽名单,但 Android、Windows 和 Linux 上的 dart:io 会使用其自己的内置 BoringSSL 引擎验证 TLS 证书链,而不会读取操作系统中间证书屏蔽名单。详细了解此安全公告。

如果您有以 Android、Windows 或 Linux 为目标的 Flutter 或 Dart 应用,请执行以下操作:

  1. 升级到以下 Dart 和 Flutter 版本:

    • Dart 3.13.7 或更高版本
    • Flutter 3.47.8 或更高版本(搭配 Dart 3.13.7 或更高版本)
  2. 重新构建您的应用。

  3. 重新部署应用或二进制文件。 重新部署 Android、Window 和 Linux 应用或二进制文件,使其包含安全修复更新。

面向 Apple 或 Windows 平台且使用 Cloud Firestore 的 Flutter 应用

如果您的 Flutter 应用以 Apple 平台(例如 iOS)为目标平台,并且您的应用使用 Cloud Firestore,请执行以下操作:

  1. 确定适合您应用的插件版本。根据您当前的插件版本,选择适合您应用的插件版本。

    FlutterFire 插件 (flutterfire) - iOS、macOS 或 Windows

    受影响的插件版本 包含安全修复的插件版本
    cloud_firestore 7.0.0 及更早版本
    (不包括 6.10.1 和 6.10.2)
    • 选项 1:cloud_firestore 7.1.0(FlutterFire BoM 5.1.0 或更高版本)
    • 选项 2:
      • iOS 和 macOS:cloud_firestore 6.10.1 (FlutterFire BoM 4.20.1)
      • Windows:cloud_firestore 6.10.2 (FlutterFire BoM 4.20.2)
  2. 更新应用。运行 flutter pub upgrade,将 cloud_firestore 插件更新到所需版本。

  3. 重新构建您的应用。

  4. 重新发布应用。重新发布包含更新后 SDK 版本的应用(例如,发布到 Apple App Store 或桌面分发渠道)。

重新发布应用后,您需要鼓励最终用户更新到应用的最新版本。由于 TLS 根证书软件包已编译到应用二进制文件中,因此仅通过操作系统更新或服务器端更改无法修复之前安装的应用 build。



使用 Cloud Firestore 的 Apple 平台应用(原生)

如果您有原生 Apple 平台应用(例如 iOS)且您的应用使用 Cloud Firestore,请执行以下操作:

  1. 确定适合您应用的 SDK 版本。根据您当前的 SDK 版本,选择适合您应用的 SDK 版本。

    Firebase SDK(Apple 平台,具体而言是 FirebaseFirestore)

    受影响的 SDK 版本 包含安全修复的 SDK 版本
    13.1.0 及更低版本
    (不包括 12.19.3)
    • 选项 1:13.1.1 或更高版本
    • 选项 2:12.19.3
  2. 更新应用。 请按照适用于您的分发渠道的说明操作:

    • SPM:在 Xcode 或 Package.swift 中更新 firebase-ios-sdk 软件包依赖项版本。

    • Zip 分发:从 GitHub 版本下载所需版本的 Firebase.zip,并替换项目中的现有 .xcframework 软件包。

    • Carthage:更新 Cartfile 以定位到所需版本,并通过 Carthage 更新依赖项。

  3. 重新发布应用。 重新发布包含更新后 SDK 版本的应用(例如,发布到 Apple App Store 或桌面分发渠道)。

重新发布应用后,您需要鼓励最终用户更新到应用的最新版本。由于 TLS 根证书软件包已编译到应用二进制文件中,因此仅通过操作系统更新或服务器端更改无法修复之前安装的应用 build。



以 Apple 或桌面平台为目标且使用 Cloud Firestore 的 Unity 应用

如果您的 Unity 应用以 Apple 平台(例如 iOS)为目标平台,并且您的应用使用 Cloud Firestore,请执行以下操作:

  1. 确定适合您应用的新 SDK 版本。根据您当前的 SDK 版本,选择适合您应用的 SDK 版本。

    Firebase SDK for Unity (firebase-unity-sdk) - iOS 或桌面设备(Linux、macOS、Windows)

    受影响的 SDK 版本 包含安全修复的 SDK 版本
    14.0.0 及更低版本
    (不包括 13.17.1)
    • 选项 1:14.1.0 或更高版本
    • 选项 2:13.17.1
  2. 更新应用。从 GitHub 版本页面下载所需版本的 Firebase Unity SDK。

  3. 关联并重新构建应用。关联并重新构建 iOS 和桌面应用。

  4. 重新发布应用。 重新发布包含更新后 SDK 版本的应用(例如,发布到 Apple 应用商店或桌面分发渠道)。

重新发布应用后,您需要鼓励最终用户更新到应用的最新版本。由于 TLS 根证书软件包已编译到应用二进制文件中,因此仅通过操作系统更新或服务器端更改无法修复之前安装的应用 build。



以 Apple 或桌面平台为目标平台且使用 Cloud Firestore 的 C++ 应用

如果您的 C++ 应用以 Apple 平台(例如 iOS)为目标平台,并且您的应用使用 Cloud Firestore,请执行以下操作:

  1. 确定适合您应用的新 SDK 版本。根据您当前的 SDK 版本,选择适合您应用的 SDK 版本。

    Firebase SDK for C++ (firebase_cpp_sdk) - iOS 或桌面设备(Linux、macOS、Windows)

    受影响的 SDK 版本 包含安全修复的 SDK 版本
    14.0.0 及更低版本
    (不包括 13.13.1)
    • 选项 1:14.1.0 或更高版本
    • 选项 2:13.13.1
  2. 更新您的应用。从 GitHub 版本页面下载所需版本的 Firebase C++ SDK。

  3. 关联并重新构建应用。关联并重新构建 iOS 和桌面应用。

  4. 重新发布应用。 重新发布包含更新后 SDK 版本的应用(例如,发布到 Apple App Store 或桌面分发渠道)。

重新发布应用后,您需要鼓励最终用户更新到应用的最新版本。由于 TLS 根证书软件包已编译到应用二进制文件中,因此仅通过操作系统更新或服务器端更改无法修复之前安装的应用 build。



使用 Firebase App Distribution Gradle 插件的 Android 应用(原生)

如果您有使用 Firebase App Distribution Gradle 插件的原生 Android 应用,请执行以下操作:

  1. 确定适合您应用的新插件版本。您可以使用插件版本 5.3.1 或更高版本。

  2. 更新 Gradle 文件。 在根级(项目级)Gradle 文件(<project>/build.gradle.kts 或 <project>/build.gradle)中,将 App Distribution Gradle 插件更新到 5.3.1 或更高版本:

    Kotlin

    plugins {
        // ...
        // Update the version in the dependency for the App Distribution Gradle plugin.
        // Make sure the version is 5.3.1 or higher.
        id("com.google.firebase.appdistribution") version "5.3.1" apply false
    }
    

    Groovy

    plugins {
        // ...
        // Update the version in the dependency for the App Distribution Gradle plugin.
        // Make sure the version is 5.3.1 or higher.
        id 'com.google.firebase.appdistribution' version '5.3.1' apply false
    }
    

    buildscript(旧版)

    buildscript {
        dependencies {
            // ...
            // Update the version in the dependency for the App Distribution Gradle plugin.
            // Make sure the version is 5.3.1 or higher.
            classpath 'com.google.firebase:firebase-appdistribution-gradle:5.3.1'
        }
    }
    
  3. 清理并验证 CI/CD 工作流。 确保您的自动化构建和部署流水线(例如 GitHub Actions、GitLab CI 或 Jenkins)在执行 ./gradlew appDistributionUpload<Variant> 等任务时拉取更新后的插件版本。



关于所发生情况的详细信息

2026 年 10 月 19 日,Google 发现由第三方证书授权机构 (eMudhra) 签发的多个中间证书授权机构 (CA) 证书的私钥遭到泄露,随后这些证书被撤销(如需了解详情,请参阅 Google 安全博文)。

虽然操作系统和网络浏览器已分发更新,以在系统受信任证书存储区中不信任这些中间证书,但受影响的产品会使用编译到二进制文件中的嵌入式根证书包来验证传输层安全协议 (TLS) 连接。

由于攻击者可以使用被盗用的证书授权机构密钥来伪造看似合法的 HTTPS 证书,因此受影响的应用将无法检测到撤销,并继续信任虚假凭据。因此,网络上的攻击者可以实施中间人攻击,冒充真实的后端服务器,包括 Firestore 以及受影响的 Flutter/Dart 应用或 App Distribution Gradle 插件联系的任何 HTTPS 端点,从而秘密拦截、窃取或篡改敏感用户数据。

为了保护客户端连接免受此受损证书授权机构的影响,我们通过移除链接到受损 eMudhra 中间证书的根证书来缓解此问题,具体如下:

  • 适用于 Apple、Flutter、Unity 和 C++ 的 Cloud Firestore SDK

    Cloud Firestore 后端未受影响,Cloud Firestore 产品的任何其他部分也未受影响。

  • Flutter SDK 和适用于 Cloud Firestore 的 FlutterFire 插件

  • Firebase App Distribution Gradle 插件

    App Distribution 后端未受影响,App Distribution 产品的任何其他部分也未受影响。