در ۱۹ اکتبر ۲۰۲۶، Google از یک مرجع صدور گواهینامه لورفته (eMudhra) مطلع شد. برای رسیدگی به این مشکل امنیتی، بلافاصله وصلههای امنیتی را برای چندین بخش از بومسازگان خود صادر کردیم.
این صفحه به شما کمک میکند انواع برنامههای تحتتأثیرقرارگرفته و هرگونه اقدام لازم را برای اصلاح این گواهی eMudhra درمعرض خطر قرارگرفته درک کنید. همچنین اطلاعات دقیقی درباره مشکل امنیتی ارائه میدهیم.
انواع برنامههای تحتتأثیر و کنشهای الزامی
بهدلیل ماهیت این مشکل امنیتی، انواع مختلفی از برنامهها تحتتأثیر قرار گرفتند. اگر نوع برنامهتان در اینجا فهرست شده است، احتمالاً تحتتأثیر قرار گرفته است. بخش مربوطه را مرور کنید تا بدانید چه اقداماتی باید انجام دهید.
- برنامههای Flutter (صرفنظر از پلاتفرم یا محصول هدف)
- برنامههای پلاتفرم Apple (بومی) که از Cloud Firestore استفاده میکنند
- برنامههای Unity که پلاتفرمهای Apple یا رایانه را هدف قرار میدهند و از Cloud Firestore استفاده میکنند
- برنامههای C++ که پلاتفرمهای Apple یا رایانه را هدف قرار میدهند و از Cloud Firestore استفاده میکنند
- برنامههای Android (بومی) که از افزایه Gradle Firebase App Distribution استفاده میکنند
سایر پلاتفرمهای پشتیبانیشده توسط انجمن نیز تحت تأثیر قرار میگیرند (برای مثال، برنامههای 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 نسخه ۳.۱۳.۷ یا بالاتر
- Flutter نسخه ۳.۴۷.۸ یا بالاتر (با Dart نسخه ۳.۱۳.۷ یا بالاتر)
برنامهتان را بازسازی کنید.
برنامه یا فایل دودوییتان را دوباره مستقر کنید. برنامهها یا فایلهای دودویی Android، Window، و 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)-
گزینه ۱:
cloud_firestore7.1.0(FlutterFire BoM5.1.0یا جدیدتر) -
گزینه ۲:
-
iOS و macOS:
cloud_firestore6.10.1(FlutterFire BoM4.20.1) -
Windows:
cloud_firestore6.10.2(FlutterFire BoM4.20.2)
-
iOS و macOS:
-
گزینه ۱:
برنامهتان را بهروز کنید.
flutter pub upgradeرا اجرا کنید تا افزونهcloud_firestoreرا به نسخه دلخواهتان بهروز کنید.برنامهتان را بازسازی کنید.
برنامهتان را دوباره منتشر کنید. برنامهتان را که نسخه بهروزشده کیت توسعه نرمافزار دارد دوباره منتشر کنید (برای مثال، در Apple App Store یا کانالهای توزیع رایانه شما).
پساز بازانتشار برنامهتان، باید کاربران نهایی را تشویق کنید که به جدیدترین نسخه برنامهتان بهروزرسانی کنند. چون بسته گواهی ریشه TLS در باینری برنامه کامپایل شده است، بهروزرسانیهای سیستمعامل یا تغییرات سمت سرور بهتنهایی نمیتوانند نسخههای قبلاً نصبشده برنامه را اصلاح کنند.
برنامههای پلاتفرم Apple (بومی) که از Cloud Firestore استفاده میکنند
اگر برنامه پلاتفرمهای بومی Apple (برای مثال، iOS) دارید و برنامهتان از Cloud Firestore استفاده میکند، کنشهای زیر را انجام دهید:
نسخه کیت توسعه نرمافزار مناسب برای برنامهتان را تعیین کنید. بسته به نسخه فعلی کیت توسعه نرمافزارتان، نسخه کیت توسعه نرمافزاری را انتخاب کنید که برای برنامهتان مناسب باشد.
Firebase کیت توسعه نرمافزار برای پلاتفرمهای Apple (بهطور خاص،
FirebaseFirestore)نسخههای کیت توسعه نرمافزار تحتتأثیر قرارگرفته نسخههای کیت توسعه نرمافزار با اصلاحیه امنیتی 13.1.0و نسخههای قبلی
(بهاستثنای12.19.3)-
گزینه ۱:
13.1.1یا جدیدتر -
گزینه ۲:
12.19.3
-
گزینه ۱:
برنامهتان را بهروز کنید. دستورالعملهای مربوط به کانال توزیع خود را دنبال کنید:
SPM: نسخه وابستگی بسته
firebase-ios-sdkرا در Xcode یاPackage.swiftبهروز کنید.توزیع Zip: از نسخههای GitHub،
Firebase.zipرا برای نسخه موردنظر بارگیری کنید و دستههای.xcframeworkموجود را در پروژهتان جایگزین کنید.Carthage: Cartfile خود را برای هدف قرار دادن نسخه موردنظر بهروز کنید و وابستگیها را ازطریق Carthage بهروز کنید.
برنامهتان را دوباره منتشر کنید. برنامهتان را که نسخه بهروزشده کیت توسعه نرمافزار دارد دوباره منتشر کنید (برای مثال، در Apple App Store یا کانالهای توزیع رایانه).
پساز بازانتشار برنامهتان، باید کاربران نهایی را تشویق کنید که به جدیدترین نسخه برنامهتان بهروزرسانی کنند. چون بسته گواهی ریشه TLS در باینری برنامه کامپایل شده است، بهروزرسانیهای سیستمعامل یا تغییرات سمت سرور بهتنهایی نمیتوانند ساختهای برنامه قبلاً نصبشده را اصلاح کنند.
برنامههای Unity که پلاتفرمهای Apple یا رایانه را هدف قرار میدهند و از Cloud Firestore استفاده میکنند
اگر برنامه Unity دارید که پلاتفرمهای Apple را هدف قرار میدهد (برای مثال، iOS) و برنامهتان از Cloud Firestore استفاده میکند، اقدامات زیر را انجام دهید:
نسخه جدید کیت توسعه نرمافزار مناسب برای برنامهتان را تعیین کنید. بسته به نسخه فعلی کیت توسعه نرمافزارتان، نسخه کیت توسعه نرمافزاری را انتخاب کنید که برای برنامهتان مناسب باشد.
کیت توسعه نرمافزار Firebase برای Unity (
firebase-unity-sdk) — iOS یا رایانه (Linux، macOS، Windows)نسخههای کیت توسعه نرمافزار تحتتأثیر قرارگرفته نسخههای کیت توسعه نرمافزار با اصلاحیه امنیتی 14.0.0و نسخههای قبلی
(بهاستثنای13.17.1)-
گزینه ۱:
14.1.0یا جدیدتر -
گزینه ۲:
13.17.1
-
گزینه ۱:
برنامهتان را بهروز کنید. کیت توسعه نرمافزار Firebase Unity را برای نسخه موردنظر از صفحه انتشار GitHub بارگیری کنید.
برنامهتان را پیوند دهید و بازسازی کنید. برنامههای iOS و رایانه را پیوند دهید و بازسازی کنید.
برنامهتان را دوباره منتشر کنید. برنامهتان را که نسخه بهروزشده کیت توسعه نرمافزار دارد دوباره منتشر کنید (برای مثال، در Apple App Store یا کانالهای توزیع رایانه).
پساز بازانتشار برنامهتان، باید کاربران نهایی را تشویق کنید که به جدیدترین نسخه برنامهتان بهروزرسانی کنند. چون بسته گواهی ریشه TLS در باینری برنامه کامپایل شده است، بهروزرسانیهای سیستمعامل یا تغییرات سمت سرور بهتنهایی نمیتوانند نسخههای قبلاً نصبشده برنامه را اصلاح کنند.
برنامههای C++ که پلاتفرمهای Apple یا رایانه را هدف قرار میدهند و از Cloud Firestore استفاده میکنند
اگر برنامه ++C دارید که پلاتفرمهای Apple را هدف قرار میدهد (برای مثال، iOS) و برنامهتان از Cloud Firestore استفاده میکند، اقدامات زیر را انجام دهید:
نسخه جدید کیت توسعه نرمافزار مناسب برای برنامهتان را تعیین کنید. بسته به نسخه فعلی کیت توسعه نرمافزارتان، نسخه کیت توسعه نرمافزاری را انتخاب کنید که برای برنامهتان مناسب باشد.
کیت توسعه نرمافزار Firebase برای C++ (
firebase_cpp_sdk) — iOS یا رایانه (Linux، macOS، Windows)نسخههای کیت توسعه نرمافزار تحتتأثیر قرارگرفته نسخههای کیت توسعه نرمافزار با وصله امنیتی 14.0.0و نسخههای قبلی
(بهاستثنای13.13.1)-
گزینه ۱:
14.1.0یا جدیدتر -
گزینه ۲:
13.13.1
-
گزینه ۱:
برنامهتان را بهروز کنید. کیت توسعه نرمافزار Firebase در ++C را برای نسخه موردنظر از صفحه انتشار GitHub بارگیری کنید.
برنامهتان را پیوند دهید و بازسازی کنید. برنامههای iOS و رایانه را پیوند دهید و بازسازی کنید.
برنامهتان را دوباره منتشر کنید. برنامهتان را که نسخه بهروزشده کیت توسعه نرمافزار دارد دوباره منتشر کنید (برای مثال، در Apple App Store یا کانالهای توزیع رایانه).
پساز بازانتشار برنامهتان، باید کاربران نهایی را تشویق کنید که به جدیدترین نسخه برنامهتان بهروزرسانی کنند. چون بسته گواهی ریشه TLS در باینری برنامه کامپایل شده است، بهروزرسانیهای سیستمعامل یا تغییرات سمت سرور بهتنهایی نمیتوانند نسخههای قبلاً نصبشده برنامه را اصلاح کنند.
برنامههای Android (بومی) که از افزایه Gradle Firebase App Distribution استفاده میکنند
اگر برنامه Android بومی دارید که از افزایه Gradle Firebase App Distribution استفاده میکند، کنشهای زیر را انجام دهید:
نسخه جدید افزایه مناسب برای برنامهتان را تعیین کنید. میتوانید از افزایه نسخه ۵.۳.۱ یا بالاتر استفاده کنید.
فایل Gradle را بهروز کنید. در فایل Gradle سطح ریشه (سطح پروژه) (
<project>/build.gradle.ktsیا<project>/build.gradle)، افزایه Gradle App Distribution را به نسخه ۵.۳.۱ یا بالاتر بهروز کنید: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>دریافت میکنند.
اطلاعات دقیق درباره آنچه اتفاق افتاده است
در ۱۹ اکتبر ۲۰۲۶، Google متوجه شد که کلیدهای خصوصی چندین گواهینامه «مرجع صدور گواهی» (CA) واسط که توسط مرجع صدور گواهی شخص ثالث (eMudhra) صادر شده بود، لو رفته و متعاقباً لغو شده است (برای جزئیات بیشتر، به پست وبلاگ امنیتی Google مراجعه کنید).
درحالیکه سیستمعاملها و مرورگرهای وب بهروزرسانیهایی را برای سلب اعتماد از این گواهینامههای واسط در مخزن گواهیهای سیستم توزیع کردهاند، محصولات تحتتأثیر قرارگرفته اتصالات «امنیت لایه انتقال» (TLS) را بااستفاده از دسته گواهینامه ریشه جاسازیشده که در فایل دودویی کامپایل شده است اعتبارسنجی میکنند.
چون مهاجمان میتوانند از کلیدهای «مرجع صدور گواهی» بهخطر افتاده برای جعل گواهیهای HTTPS که قانونی بهنظر میرسند استفاده کنند، برنامههای تحتتأثیر قرارگرفته نمیتوانند لغو را تشخیص دهند و همچنان به اعتبارنامههای جعلی اعتماد میکنند. درنتیجه، مهاجمان در شبکه میتوانند حملات «مرد میانی» را برای جعل هویت سرورهای زیرینه واقعی، ازجمله Firestore و هر نقطه پایانی HTTPS که برنامههای Flutter/Dart متأثر یا افزونه App Distribution Gradle با آنها تماس گرفتهاند، انجام دهند و بهطور مخفیانه دادههای حساس کاربر را رهگیری، سرقت، یا دستکاری کنند.
برای محافظت از اتصالات کارخواه دربرابر این مرجع صدور گواهینامه بهخطرافتاده، این مشکل را با برداشتن گواهینامههای ریشهای که به واسطههای eMudhra بهخطرافتاده زنجیر شدهاند در موارد زیر کاهش دادیم:
Cloud Firestore کیت توسعه نرمافزار برای Apple، Flutter، Unity، و C++
بخش پشتیبان Cloud Firestore تحتتأثیر قرار نگرفت و هیچ بخش دیگری از محصول Cloud Firestore نیز تحتتأثیر قرار نگرفت.
کیت توسعه نرمافزار Flutter و افزایه FlutterFire برای Cloud Firestore
افزایه Gradle Firebase App Distribution
بخش پشتیبان App Distribution تحتتأثیر قرار نگرفت و هیچ بخش دیگری از محصول App Distribution نیز تحتتأثیر قرار نگرفت.