เมื่อวันที่ 19 ตุลาคม 2026 Google ได้รับทราบเกี่ยวกับผู้ออกใบรับรอง (eMudhra) ที่ถูกละเมิด เพื่อแก้ไขปัญหาด้านความปลอดภัยนี้ เราได้ออกแพตช์ด้านความปลอดภัยไปยังหลายๆ ส่วนของระบบนิเวศทันที
หน้านี้จะช่วยให้คุณเข้าใจประเภทแอปที่ได้รับผลกระทบและการดำเนินการที่จำเป็นเพื่อแก้ไขการละเมิดใบรับรอง eMudhra นี้ นอกจากนี้ เรายังมีข้อมูลโดยละเอียดเกี่ยวกับปัญหาด้านความปลอดภัยด้วย
ประเภทแอปที่ได้รับผลกระทบและการดำเนินการที่จำเป็น
เนื่องจากลักษณะของปัญหาด้านความปลอดภัยนี้ จึงส่งผลกระทบต่อแอปหลายประเภท หากประเภทแอปของคุณแสดงอยู่ที่นี่ แสดงว่าแอปน่าจะได้รับผลกระทบ โปรดอ่านส่วนที่เกี่ยวข้องเพื่อดูการดำเนินการที่ต้องทำ
- แอป Flutter (ไม่ว่าจะใช้แพลตฟอร์มหรือผลิตภัณฑ์เป้าหมายใด)
- แอปแพลตฟอร์ม Apple (เนทีฟ) ที่ใช้ Cloud Firestore
- แอป Unity ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple หรือเดสก์ท็อปและใช้ Cloud Firestore
- แอป C++ ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple หรือเดสก์ท็อปและใช้ Cloud Firestore
- แอป Android (เนทีฟ) ที่ใช้ปลั๊กอิน Firebase App Distribution Gradle
แพลตฟอร์มอื่นๆ ที่ชุมชนรองรับก็ได้รับผลกระทบเช่นกัน (เช่น แอป React Native ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple และใช้ Firestore)
แอป Flutter
แอป Flutter ได้รับผลกระทบในหลายๆ ด้าน โปรดอ่านส่วนที่เกี่ยวข้องเพื่อทำความเข้าใจการดำเนินการที่คุณต้องทำ
แอป Flutter ที่กำหนดเป้าหมายเป็น Android, Windows หรือ Linux
ขณะที่เบราว์เซอร์และระบบปฏิบัติการส่งรายการที่บล็อกใบรับรองกลางฉุกเฉิน dart:io ใน Android, Windows และ Linux จะตรวจสอบเชนใบรับรอง TLS โดยใช้เครื่องมือ BoringSSL ที่คอมไพล์แล้วของตนเอง และไม่อ่านรายการที่บล็อกใบรับรองกลางของระบบปฏิบัติการ ดูข้อมูลเพิ่มเติมเกี่ยวกับคำแนะนำด้านความปลอดภัยนี้
ดำเนินการต่อไปนี้หากคุณมีแอป Flutter หรือ Dart ที่กำหนดเป้าหมายเป็น Android, Windows หรือ Linux
อัปเกรดเป็น Dart และ Flutter เวอร์ชันต่อไปนี้
- Dart 3.13.7 ขึ้นไป
- Flutter 3.47.8 ขึ้นไป (พร้อม Dart 3.13.7 ขึ้นไป)
สร้างแอปใหม่
ทำให้แอปหรือไบนารีใช้งานได้อีกครั้ง ทำให้แอปหรือไบนารีของ Android, Windows และ Linux ใช้งานได้อีกครั้งเพื่อให้มีการอัปเดตพร้อมการแก้ไขด้านความปลอดภัย
แอป Flutter ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple หรือ Windows และใช้ Cloud Firestore
ดำเนินการต่อไปนี้หากคุณมีแอป Flutter ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple (เช่น iOS) และแอปของคุณใช้ Cloud Firestore
กำหนดเวอร์ชันปลั๊กอินที่เหมาะกับแอปของคุณ เลือกเวอร์ชันปลั๊กอินที่เหมาะกับแอปของคุณโดยพิจารณาจากเวอร์ชันปลั๊กอินปัจจุบัน
ปลั๊กอิน FlutterFire (
flutterfire) - iOS, macOS หรือ Windowsเวอร์ชันปลั๊กอินที่ได้รับผลกระทบ เวอร์ชันปลั๊กอินที่มีการแก้ไขด้านความปลอดภัย cloud_firestore7.0.0และก่อนหน้า
(ยกเว้น6.10.1และ6.10.2)-
ตัวเลือกที่ 1:
cloud_firestore7.1.0(FlutterFire BoM5.1.0ขึ้นไป) -
ตัวเลือกที่ 2
-
iOS และ macOS:
cloud_firestore6.10.1(FlutterFire BoM4.20.1) -
Windows:
cloud_firestore6.10.2(FlutterFire BoM4.20.2)
-
iOS และ macOS:
-
ตัวเลือกที่ 1:
อัปเดตแอป เรียกใช้
flutter pub upgradeเพื่ออัปเดตปลั๊กอินcloud_firestoreเป็นเวอร์ชันที่ต้องการสร้างแอปใหม่
เผยแพร่แอปอีกครั้ง เผยแพร่แอปที่มี SDK เวอร์ชันที่อัปเดตแล้วอีกครั้ง (เช่น ไปยัง Apple App Store หรือช่องทางการจัดจำหน่ายบนเดสก์ท็อป)
หลังจากเผยแพร่แอปอีกครั้ง คุณต้องกระตุ้นให้ผู้ใช้ปลายทางอัปเดตแอปเป็นเวอร์ชันล่าสุด เนื่องจากการคอมไพล์แพ็กเกจใบรับรองรูท TLS จะทำในไบนารีของแอปพลิเคชัน การอัปเดตระบบปฏิบัติการหรือการเปลี่ยนแปลงฝั่งเซิร์ฟเวอร์เพียงอย่างเดียวจึงไม่สามารถแก้ไขบิลด์ของแอปพลิเคชันที่ติดตั้งไว้ก่อนหน้านี้ได้
แอปแพลตฟอร์ม Apple (เนทีฟ) ที่ใช้ Cloud Firestore
ดำเนินการต่อไปนี้หากคุณมีแอปแพลตฟอร์ม Apple แบบเนทีฟ (เช่น iOS) และแอปของคุณใช้ Cloud Firestore
กำหนดเวอร์ชัน SDK ที่เหมาะสมสำหรับแอป เลือกเวอร์ชัน SDK ที่เหมาะสมสำหรับแอปโดยพิจารณาจากเวอร์ชัน SDK ปัจจุบัน
SDK Firebase สำหรับแพลตฟอร์ม Apple (โดยเฉพาะ
FirebaseFirestore)เวอร์ชัน SDK ที่ได้รับผลกระทบ เวอร์ชัน SDK ที่มีการแก้ไขด้านความปลอดภัย 13.1.0และก่อนหน้า
(ยกเว้น12.19.3)-
ตัวเลือกที่ 1:
13.1.1ขึ้นไป -
ตัวเลือกที่ 2:
12.19.3
-
ตัวเลือกที่ 1:
อัปเดตแอป ทำตามวิธีการสำหรับช่องทางการจัดจำหน่ายของคุณ
SPM: อัปเดตเวอร์ชันทรัพยากร Dependency ของแพ็กเกจ
firebase-ios-sdkใน Xcode หรือPackage.swiftการแจกจ่ายไฟล์ ZIP: จากรุ่น GitHub ให้ดาวน์โหลด
Firebase.zipสำหรับเวอร์ชันที่ต้องการ และแทนที่แพ็กเกจ.xcframeworkที่มีอยู่ในโปรเจ็กต์Carthage: อัปเดต Cartfile เพื่อกำหนดเป้าหมายเวอร์ชันที่ต้องการและอัปเดตทรัพยากร Dependency ผ่าน Carthage
เผยแพร่แอปอีกครั้ง เผยแพร่แอปที่มี SDK เวอร์ชันที่อัปเดตแล้วอีกครั้ง (เช่น ไปยัง Apple App Store หรือช่องทางการจัดจำหน่ายบนเดสก์ท็อป)
หลังจากเผยแพร่แอปอีกครั้ง คุณต้องกระตุ้นให้ผู้ใช้ปลายทางอัปเดตแอปเป็นเวอร์ชันล่าสุด เนื่องจากแพ็กเกจใบรับรองรูท TLS จะคอมไพล์เป็นไบนารีของแอปพลิเคชัน การอัปเดตระบบปฏิบัติการหรือการเปลี่ยนแปลงฝั่งเซิร์ฟเวอร์เพียงอย่างเดียวจะไม่แก้ไขบิลด์ของแอปพลิเคชันที่ติดตั้งไว้ก่อนหน้านี้
แอป Unity ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple หรือเดสก์ท็อปและใช้ Cloud Firestore
ดำเนินการต่อไปนี้หากคุณมีแอป Unity ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple (เช่น iOS) และแอปของคุณใช้ Cloud Firestore
กำหนดเวอร์ชัน SDK ใหม่ที่เหมาะกับแอปของคุณ เลือกเวอร์ชัน SDK ที่เหมาะกับแอปของคุณโดยพิจารณาจากเวอร์ชัน SDK ปัจจุบัน
Firebase SDK สำหรับ Unity (
firebase-unity-sdk) — iOS หรือเดสก์ท็อป (Linux, macOS, Windows)เวอร์ชัน SDK ที่ได้รับผลกระทบ เวอร์ชัน SDK ที่มีการแก้ไขด้านความปลอดภัย 14.0.0และเวอร์ชันก่อนหน้า
(ยกเว้น13.17.1)-
ตัวเลือกที่ 1:
14.1.0ขึ้นไป -
ตัวเลือกที่ 2:
13.17.1
-
ตัวเลือกที่ 1:
อัปเดตแอป ดาวน์โหลด Firebase Unity SDK สำหรับเวอร์ชันที่ต้องการจากหน้าเผยแพร่ของ GitHub
ลิงก์และสร้างแอปใหม่ ลิงก์และสร้างแอปพลิเคชัน iOS และเดสก์ท็อปใหม่
เผยแพร่แอปอีกครั้ง เผยแพร่แอปที่มี SDK เวอร์ชันที่อัปเดตแล้วอีกครั้ง (เช่น ไปยัง Apple App Store หรือช่องทางการจัดจำหน่ายบนเดสก์ท็อป)
หลังจากเผยแพร่แอปอีกครั้ง คุณต้องกระตุ้นให้ผู้ใช้ปลายทางอัปเดตแอปเป็นเวอร์ชันล่าสุด เนื่องจากการคอมไพล์แพ็กเกจใบรับรองรูท TLS จะทำในไบนารีของแอปพลิเคชัน การอัปเดตระบบปฏิบัติการหรือการเปลี่ยนแปลงฝั่งเซิร์ฟเวอร์เพียงอย่างเดียวจึงไม่สามารถแก้ไขบิลด์ของแอปพลิเคชันที่ติดตั้งไว้ก่อนหน้านี้ได้
แอป C++ ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple หรือเดสก์ท็อปและใช้ Cloud Firestore
ดำเนินการต่อไปนี้หากคุณมีแอป C++ ที่กำหนดเป้าหมายเป็นแพลตฟอร์ม Apple (เช่น iOS) และแอปของคุณใช้ Cloud Firestore
กำหนดเวอร์ชัน SDK ใหม่ที่เหมาะกับแอปของคุณ เลือกเวอร์ชัน SDK ที่เหมาะกับแอปของคุณโดยพิจารณาจากเวอร์ชัน SDK ปัจจุบัน
Firebase SDK สำหรับ C++ (
firebase_cpp_sdk) — iOS หรือเดสก์ท็อป (Linux, macOS, Windows)เวอร์ชัน SDK ที่ได้รับผลกระทบ เวอร์ชัน SDK ที่มีการแก้ไขด้านความปลอดภัย 14.0.0และก่อนหน้า
(ยกเว้น13.13.1)-
ตัวเลือกที่ 1:
14.1.0ขึ้นไป -
ตัวเลือกที่ 2:
13.13.1
-
ตัวเลือกที่ 1:
อัปเดตแอป ดาวน์โหลด Firebase C++ SDK สำหรับเวอร์ชันที่ต้องการจากหน้าเผยแพร่ของ GitHub
ลิงก์และสร้างแอปใหม่ ลิงก์และสร้างแอปพลิเคชัน iOS และเดสก์ท็อปใหม่
เผยแพร่แอปอีกครั้ง เผยแพร่แอปที่มี SDK เวอร์ชันที่อัปเดตแล้วอีกครั้ง (เช่น ไปยัง Apple App Store หรือช่องทางการจัดจำหน่ายบนเดสก์ท็อป)
หลังจากเผยแพร่แอปอีกครั้ง คุณต้องกระตุ้นให้ผู้ใช้ปลายทางอัปเดตแอปเป็นเวอร์ชันล่าสุด เนื่องจากการคอมไพล์แพ็กเกจใบรับรองรูท TLS จะทำในไบนารีของแอปพลิเคชัน การอัปเดตระบบปฏิบัติการหรือการเปลี่ยนแปลงฝั่งเซิร์ฟเวอร์เพียงอย่างเดียวจึงไม่สามารถแก้ไขบิลด์ของแอปพลิเคชันที่ติดตั้งไว้ก่อนหน้านี้ได้
แอป Android (เนทีฟ) ที่ใช้ปลั๊กอิน Gradle Firebase App Distribution
ดำเนินการต่อไปนี้หากคุณมีแอป Android แบบเนทีฟที่ใช้ปลั๊กอิน Firebase App Distribution Gradle
กำหนดเวอร์ชันปลั๊กอินใหม่ที่เหมาะกับแอปของคุณ คุณใช้ปลั๊กอินเวอร์ชัน 5.3.1 ขึ้นไปได้
อัปเดตไฟล์ 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' } }ล้างและยืนยันเวิร์กโฟลว์ CI/CD ตรวจสอบว่าไปป์ไลน์การสร้างและการทำให้ใช้งานได้แบบอัตโนมัติ (เช่น GitHub Actions, GitLab CI หรือ Jenkins) ดึงข้อมูลเวอร์ชันปลั๊กอินที่อัปเดตเมื่อดำเนินการต่างๆ เช่น
./gradlew appDistributionUpload<Variant>
ข้อมูลโดยละเอียดเกี่ยวกับสิ่งที่เกิดขึ้น
เมื่อวันที่ 19 ตุลาคม 2026 Google ทราบว่าคีย์ส่วนตัวสำหรับใบรับรองผู้ออกใบรับรอง (CA) ระดับกลางหลายรายการที่ออกโดยผู้ออกใบรับรองบุคคลที่สาม (eMudhra) ถูกบุกรุกและถูกเพิกถอนในเวลาต่อมา (ดูรายละเอียดเพิ่มเติมได้ที่บล็อกโพสต์ด้านความปลอดภัยของ Google)
แม้ว่าระบบปฏิบัติการและเว็บเบราว์เซอร์จะเผยแพร่การอัปเดตเพื่อไม่เชื่อถือใบรับรองกลางเหล่านี้ใน Trust Store ของระบบ แต่ผลิตภัณฑ์ที่ได้รับผลกระทบจะตรวจสอบการเชื่อมต่อ Transport Layer Security (TLS) โดยใช้แพ็กเกจใบรับรองรูทแบบฝังที่คอมไพล์เป็นไบนารี
เนื่องจากผู้โจมตีสามารถใช้คีย์ของผู้ออกใบรับรองที่ถูกบุกรุกเพื่อปลอมแปลงใบรับรอง HTTPS ที่ดูถูกต้องตามกฎหมาย แอปที่ได้รับผลกระทบจึงตรวจไม่พบการเพิกถอนและยังคงเชื่อถือข้อมูลเข้าสู่ระบบปลอมต่อไป ด้วยเหตุนี้ ผู้โจมตีในเครือข่ายจึงสามารถทำการโจมตีแบบ Man-in-the-Middle เพื่อแอบอ้างเป็นเซิร์ฟเวอร์แบ็กเอนด์จริง ซึ่งรวมถึง Firestore และปลายทาง HTTPS ที่แอป Flutter/Dart ที่ได้รับผลกระทบหรือปลั๊กอิน Gradle ของ App Distribution ติดต่อด้วย โดยจะแอบดักจับ ขโมย หรือแทรกแซงข้อมูลที่ละเอียดอ่อนของผู้ใช้
เพื่อปกป้องการเชื่อมต่อของไคลเอ็นต์จากผู้ออกใบรับรองที่ถูกบุกรุกนี้ เราได้บรรเทาปัญหานี้โดยการนำใบรับรองรูทที่เชื่อมโยงกับตัวกลาง eMudhra ที่ถูกบุกรุกออกในรายการต่อไปนี้
SDK ของ Cloud Firestore สำหรับ Apple, Flutter, Unity และ C++
แบ็กเอนด์ของ Cloud Firestore ไม่ได้รับผลกระทบ และส่วนอื่นๆ ของผลิตภัณฑ์ Cloud Firestore ก็ไม่ได้รับผลกระทบเช่นกัน
Flutter SDK และปลั๊กอิน FlutterFire สำหรับ Cloud Firestore
ปลั๊กอิน Gradle ของ Firebase App Distribution
แบ็กเอนด์ของ App Distribution ไม่ได้รับผลกระทบ และส่วนอื่นๆ ของผลิตภัณฑ์ App Distribution ก็ไม่ได้รับผลกระทบเช่นกัน