Pembaruan yang diperlukan untuk memulihkan penyusupan sertifikat eMudhra

Pada 19 Oktober 2026, Google mengetahui adanya certificate authority yang disusupi (eMudhra). Untuk mengatasi masalah keamanan ini, kami segera merilis patch keamanan ke beberapa area ekosistem kami.

Halaman ini membantu Anda memahami jenis aplikasi yang terpengaruh dan tindakan yang diperlukan untuk memperbaiki penyusupan sertifikat eMudhra ini. Kami juga memberikan informasi mendetail tentang masalah keamanan.

Jenis aplikasi yang terpengaruh dan tindakan yang diperlukan

Karena sifat masalah keamanan ini, banyak jenis aplikasi yang terpengaruh. Jika jenis aplikasi Anda tercantum di sini, kemungkinan aplikasi tersebut terpengaruh. Tinjau bagian yang berlaku untuk mempelajari tindakan yang perlu Anda lakukan.

Platform lain yang didukung komunitas juga terpengaruh (misalnya, aplikasi React Native yang menargetkan platform Apple dan menggunakan Firestore).


Aplikasi Flutter

Aplikasi Flutter terpengaruh dalam berbagai cara. Tinjau bagian yang berlaku untuk memahami tindakan yang perlu Anda lakukan.

Aplikasi Flutter yang menarget Android, Windows, atau Linux

Meskipun browser dan sistem operasi menerapkan daftar yang tidak diizinkan untuk intermediate certificate darurat, dart:io di Android, Windows, dan Linux memvalidasi rantai sertifikat TLS menggunakan mesin BoringSSL yang dikompilasi sendiri dan tidak membaca daftar yang tidak diizinkan untuk intermediate certificate OS. Pelajari lebih lanjut saran keamanan ini.

Lakukan tindakan berikut jika Anda memiliki aplikasi Flutter atau Dart yang menarget Android, Windows, atau Linux:

  1. Upgrade ke versi Dart dan Flutter berikut:

    • Dart 3.13.7 atau yang lebih baru
    • Flutter 3.47.8 atau yang lebih baru (dengan Dart 3.13.7 atau yang lebih baru)
  2. Bangun ulang aplikasi Anda.

  3. Deploy ulang aplikasi atau biner Anda. Deploy ulang aplikasi atau biner Android, Window, dan Linux Anda agar menyertakan update dengan perbaikan keamanan.

Aplikasi Flutter yang menarget platform Apple atau Windows dan menggunakan Cloud Firestore

Lakukan tindakan berikut jika Anda memiliki aplikasi Flutter yang menarget platform Apple (misalnya, iOS) dan aplikasi Anda menggunakan Cloud Firestore:

  1. Tentukan versi plugin yang sesuai untuk aplikasi Anda. Bergantung pada versi plugin Anda saat ini, pilih versi plugin yang sesuai untuk aplikasi Anda.

    Plugin FlutterFire (flutterfire) — iOS, macOS, atau Windows

    Versi plugin yang terpengaruh Versi plugin dengan perbaikan keamanan
    cloud_firestore 7.0.0 dan yang lebih lama
    (tidak termasuk 6.10.1 dan 6.10.2)
    • Opsi 1: cloud_firestore 7.1.0 (FlutterFire BoM 5.1.0 atau yang lebih baru)
    • Opsi 2:
      • iOS dan macOS: cloud_firestore 6.10.1 (BoM FlutterFire 4.20.1)
      • Windows: cloud_firestore 6.10.2 (FlutterFire BoM 4.20.2)
  2. Update aplikasi Anda. Jalankan flutter pub upgrade untuk mengupdate plugin cloud_firestore ke versi yang Anda inginkan.

  3. Bangun ulang aplikasi Anda.

  4. Publikasikan ulang aplikasi Anda. Publikasikan ulang aplikasi Anda yang memiliki versi SDK yang diupdate (misalnya, ke Apple App Store atau saluran distribusi desktop Anda).

Setelah memublikasikan ulang aplikasi, Anda harus mendorong pengguna akhir untuk mengupdate ke versi terbaru aplikasi Anda. Karena paket root certificate TLS dikompilasi ke dalam biner aplikasi, update sistem operasi atau perubahan di sisi server saja tidak akan memperbaiki build aplikasi yang diinstal sebelumnya.



Aplikasi platform Apple (native) yang menggunakan Cloud Firestore

Lakukan tindakan berikut jika Anda memiliki aplikasi platform Apple native (misalnya, iOS) dan aplikasi Anda menggunakan Cloud Firestore:

  1. Tentukan versi SDK yang sesuai untuk aplikasi Anda. Bergantung pada versi SDK Anda saat ini, pilih versi SDK yang sesuai untuk aplikasi Anda.

    Firebase SDK untuk platform Apple (khususnya, FirebaseFirestore)

    Versi SDK yang terpengaruh Versi SDK dengan perbaikan keamanan
    13.1.0 dan yang lebih lama
    (tidak termasuk 12.19.3)
    • Opsi 1: 13.1.1 atau yang lebih baru
    • Opsi 2: 12.19.3
  2. Update aplikasi Anda. Ikuti petunjuk untuk saluran distribusi Anda:

    • SPM: Update versi dependensi paket firebase-ios-sdk Anda di Xcode atau Package.swift.

    • Distribusi Zip: Dari Rilis GitHub, download Firebase.zip untuk versi yang diinginkan dan ganti paket .xcframework yang ada di project Anda.

    • Carthage: Perbarui Cartfile Anda untuk menargetkan versi yang diinginkan dan perbarui dependensi melalui Carthage.

  3. Publikasikan ulang aplikasi Anda. Publikasikan ulang aplikasi Anda yang memiliki versi SDK yang diupdate (misalnya, ke Apple App Store atau saluran distribusi desktop Anda).

Setelah memublikasikan ulang aplikasi, Anda harus mendorong pengguna akhir untuk mengupdate ke versi terbaru aplikasi Anda. Karena paket root certificate TLS dikompilasi ke dalam biner aplikasi, update sistem operasi atau perubahan di sisi server saja tidak akan memperbaiki build aplikasi yang diinstal sebelumnya.



Aplikasi Unity yang menargetkan platform Apple atau desktop dan menggunakan Cloud Firestore

Lakukan tindakan berikut jika Anda memiliki aplikasi Unity yang menargetkan platform Apple (misalnya, iOS) dan aplikasi Anda menggunakan Cloud Firestore:

  1. Tentukan versi SDK baru yang sesuai untuk aplikasi Anda. Bergantung pada versi SDK saat ini, pilih versi SDK yang sesuai untuk aplikasi Anda.

    Firebase SDK for Unity (firebase-unity-sdk) — iOS atau Desktop (Linux, macOS, Windows)

    Versi SDK yang terpengaruh Versi SDK dengan perbaikan keamanan
    14.0.0 dan yang lebih lama
    (tidak termasuk 13.17.1)
    • Opsi 1: 14.1.0 atau yang lebih baru
    • Opsi 2: 13.17.1
  2. Update aplikasi Anda. Download Firebase Unity SDK untuk versi yang diinginkan dari halaman rilis GitHub.

  3. Tautkan dan bangun ulang aplikasi Anda. Tautkan dan bangun ulang aplikasi iOS dan desktop Anda.

  4. Publikasikan ulang aplikasi Anda. Publikasikan ulang aplikasi Anda yang memiliki versi SDK yang diupdate (misalnya, ke Apple App Store atau saluran distribusi desktop Anda).

Setelah memublikasikan ulang aplikasi, Anda harus mendorong pengguna akhir untuk mengupdate ke versi terbaru aplikasi Anda. Karena paket root certificate TLS dikompilasi ke dalam biner aplikasi, update sistem operasi atau perubahan di sisi server saja tidak akan memperbaiki build aplikasi yang diinstal sebelumnya.



Aplikasi C++ yang menargetkan platform Apple atau desktop dan menggunakan Cloud Firestore

Lakukan tindakan berikut jika Anda memiliki aplikasi C++ yang menargetkan platform Apple (misalnya, iOS) dan aplikasi Anda menggunakan Cloud Firestore:

  1. Tentukan versi SDK baru yang sesuai untuk aplikasi Anda. Bergantung pada versi SDK saat ini, pilih versi SDK yang sesuai untuk aplikasi Anda.

    Firebase SDK for C++ (firebase_cpp_sdk) — iOS atau Desktop (Linux, macOS, Windows)

    Versi SDK yang terpengaruh Versi SDK dengan perbaikan keamanan
    14.0.0 dan yang lebih lama
    (tidak termasuk 13.13.1)
    • Opsi 1: 14.1.0 atau yang lebih baru
    • Opsi 2: 13.13.1
  2. Update aplikasi Anda. Download Firebase C++ SDK untuk versi yang diinginkan dari halaman rilis GitHub.

  3. Tautkan dan bangun ulang aplikasi Anda. Tautkan dan bangun ulang aplikasi iOS dan desktop Anda.

  4. Publikasikan ulang aplikasi Anda. Publikasikan ulang aplikasi Anda yang memiliki versi SDK yang diupdate (misalnya, ke Apple App Store atau saluran distribusi desktop Anda).

Setelah memublikasikan ulang aplikasi, Anda harus mendorong pengguna akhir untuk mengupdate ke versi terbaru aplikasi Anda. Karena paket root certificate TLS dikompilasi ke dalam biner aplikasi, update sistem operasi atau perubahan di sisi server saja tidak akan memperbaiki build aplikasi yang diinstal sebelumnya.



Aplikasi Android (native) yang menggunakan plugin Gradle Firebase App Distribution

Lakukan tindakan berikut jika Anda memiliki aplikasi Android native yang menggunakan plugin Gradle Firebase App Distribution:

  1. Tentukan versi plugin baru yang sesuai untuk aplikasi Anda. Anda dapat menggunakan plugin versi 5.3.1 atau yang lebih tinggi.

  2. Perbarui file Gradle Anda. Dalam file Gradle level root (level project) (<project>/build.gradle.kts atau <project>/build.gradle), update plugin Gradle App Distribution ke versi 5.3.1 atau yang lebih tinggi:

    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 (lama)

    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. Bersihkan dan verifikasi alur kerja CI/CD Anda. Pastikan pipeline build dan deployment otomatis Anda (seperti GitHub Actions, GitLab CI, atau Jenkins) mengambil versi plugin yang diupdate saat menjalankan tugas seperti ./gradlew appDistributionUpload<Variant>.



Informasi mendetail tentang apa yang terjadi

Pada 19 Oktober 2026, Google mengetahui bahwa kunci pribadi untuk beberapa intermediate certificate Certificate Authority (CA) yang dikeluarkan oleh certificate authority pihak ketiga (eMudhra) telah disusupi dan kemudian dicabut (untuk detail selengkapnya, lihat postingan Blog Keamanan Google).

Meskipun sistem operasi dan browser web telah mendistribusikan update untuk tidak memercayai intermediate certificate ini di trust store sistem, produk yang terpengaruh memvalidasi koneksi Transport Layer Security (TLS) menggunakan paket root certificate tersemat yang dikompilasi ke dalam biner.

Karena penyerang dapat menggunakan kunci Certificate Authority yang disusupi untuk memalsukan sertifikat HTTPS yang terlihat sah, aplikasi yang terpengaruh akan gagal mendeteksi pencabutan dan terus memercayai kredensial palsu. Akibatnya, penyerang di jaringan dapat melakukan serangan man-in-the-middle untuk meniru identitas server backend yang sebenarnya, termasuk Firestore dan endpoint HTTPS apa pun yang dihubungi oleh aplikasi Flutter/Dart yang terpengaruh atau plugin Gradle App Distribution, yang secara diam-diam menyadap, mencuri, atau merusak data pengguna yang sensitif.

Untuk melindungi koneksi klien dari certificate authority yang disusupi ini, kami memitigasi masalah ini dengan menghapus root certificate yang terhubung ke perantara eMudhra yang disusupi berikut:

  • Cloud Firestore SDK untuk Apple, Flutter, Unity, dan C++

    Backend Cloud Firestore tidak terpengaruh, begitu juga bagian lain dari produk Cloud Firestore.

  • Flutter SDK dan plugin FlutterFire untuk Cloud Firestore

  • Plugin Gradle Firebase App Distribution

    Backend App Distribution tidak terpengaruh, begitu juga bagian lain dari produk App Distribution.