eMudhra 인증서 침해를 해결하기 위해 필요한 업데이트

2026년 10월 19일, Google은 손상된 인증 기관(eMudhra)을 발견했습니다. 이 보안 문제를 해결하기 위해 Google은 생태계의 여러 영역에 보안 패치를 즉시 배포했습니다.

이 페이지는 이 eMudhra 인증서 침해를 해결하기 위해 영향을 받는 앱 유형과 필요한 조치를 이해하는 데 도움이 됩니다. 또한 보안 문제에 관한 자세한 정보도 제공합니다.

영향을 받는 앱 유형 및 필수 조치

이 보안 문제의 특성상 다양한 유형의 앱이 영향을 받았습니다. 앱 유형이 여기에 표시되면 영향을 받았을 가능성이 높습니다. 해당 섹션을 검토하여 취해야 할 조치를 알아보세요.

다른 커뮤니티 지원 플랫폼도 영향을 받습니다 (예: Apple 플랫폼을 타겟팅하고 Firestore를 사용하는 React Native 앱).


Flutter 앱

Flutter 앱은 다양한 방식으로 영향을 받았습니다. 해당 섹션을 검토하여 취해야 할 조치를 파악하세요.

Android, Windows 또는 Linux를 타겟팅하는 Flutter 앱

브라우저와 운영체제에서 긴급 중간 인증서 차단 목록을 푸시하는 동안 Android, Windows, Linux의 dart:io는 자체 컴파일된 BoringSSL 엔진을 사용하여 TLS 인증서 체인을 검증하며 OS 중간 인증서 차단 목록을 읽지 않습니다. 이 보안 권고에 대해 자세히 알아보세요.

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 앱

Apple 플랫폼 (예: iOS)을 타겟팅하는 Flutter 앱이 있고 앱에서 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 앱 스토어 또는 데스크톱 배포 채널).

앱을 다시 게시한 후에는 최종 사용자가 최신 버전의 앱으로 업데이트하도록 유도해야 합니다. TLS 루트 인증서 번들은 애플리케이션 바이너리로 컴파일되므로 운영체제 업데이트나 서버 측 변경사항만으로는 이전에 설치된 애플리케이션 빌드가 해결되지 않습니다.



Cloud Firestore를 사용하는 Apple 플랫폼 앱 (네이티브)

네이티브 Apple 플랫폼 앱 (예: iOS)이 있고 앱에서 Cloud Firestore를 사용하는 경우 다음 작업을 수행합니다.

  1. 앱에 적합한 SDK 버전을 결정합니다. 현재 SDK 버전에 따라 앱에 적합한 SDK 버전을 선택합니다.

    Apple 플랫폼용 Firebase SDK (특히 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 앱 스토어 또는 데스크톱 배포 채널).

앱을 다시 게시한 후에는 최종 사용자에게 앱을 최신 버전으로 업데이트하도록 권장해야 합니다. TLS 루트 인증서 번들은 애플리케이션 바이너리로 컴파일되므로 운영체제 업데이트나 서버 측 변경사항만으로는 이전에 설치된 애플리케이션 빌드가 해결되지 않습니다.



Apple 또는 데스크톱 플랫폼을 타겟팅하고 Cloud Firestore를 사용하는 Unity 앱

Apple 플랫폼(예: iOS)을 타겟팅하는 Unity 앱이 있고 앱에서 Cloud Firestore를 사용하는 경우 다음 작업을 수행합니다.

  1. 앱에 적합한 새 SDK 버전을 결정합니다. 현재 SDK 버전에 따라 앱에 적합한 SDK 버전을 선택합니다.

    Unity용 Firebase SDK (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 루트 인증서 번들은 애플리케이션 바이너리로 컴파일되므로 운영체제 업데이트나 서버 측 변경사항만으로는 이전에 설치된 애플리케이션 빌드가 해결되지 않습니다.



Apple 또는 데스크톱 플랫폼을 타겟팅하고 Cloud Firestore를 사용하는 C++ 앱

Apple 플랫폼(예: iOS)을 타겟팅하는 C++ 앱이 있고 앱에서 Cloud Firestore를 사용하는 경우 다음 작업을 수행합니다.

  1. 앱에 적합한 새 SDK 버전을 결정합니다. 현재 SDK 버전에 따라 앱에 적합한 SDK 버전을 선택합니다.

    C++용 Firebase SDK (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 앱 스토어 또는 데스크톱 배포 채널).

앱을 다시 게시한 후에는 최종 사용자가 최신 버전의 앱으로 업데이트하도록 유도해야 합니다. TLS 루트 인증서 번들은 애플리케이션 바이너리로 컴파일되므로 운영체제 업데이트나 서버 측 변경사항만으로는 이전에 설치된 애플리케이션 빌드가 해결되지 않습니다.



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 워크플로를 정리하고 확인합니다. ./gradlew appDistributionUpload<Variant>와 같은 태스크를 실행할 때 자동화된 빌드 및 배포 파이프라인 (예: GitHub Actions, GitLab CI, Jenkins)이 업데이트된 플러그인 버전을 가져오는지 확인합니다.



발생한 상황에 관한 자세한 정보

2026년 10월 19일, Google은 서드 파티 인증 기관 (eMudhra)에서 발급한 여러 중간 인증 기관 (CA) 인증서의 비공개 키가 유출되어 이후 취소되었음을 알게 되었습니다 (자세한 내용은 Google 보안 블로그 게시물 참고).

운영체제와 웹브라우저에서 시스템 트러스트 저장소의 이러한 중간 인증서를 신뢰하지 않도록 업데이트를 배포했지만, 영향을 받는 제품은 바이너리로 컴파일된 내장 루트 인증서 번들을 사용하여 전송 계층 보안 (TLS) 연결을 검증합니다.

공격자가 손상된 인증 기관 키를 사용하여 합법적으로 보이는 HTTPS 인증서를 위조할 수 있으므로 영향을 받는 앱은 취소를 감지하지 못하고 가짜 사용자 인증 정보를 계속 신뢰하게 됩니다. 그 결과 네트워크의 공격자가 중간자 공격을 실행하여 Firestore 및 영향을 받는 Flutter/Dart 앱 또는 앱 배포 Gradle 플러그인에서 연결하는 모든 HTTPS 엔드포인트를 포함한 실제 백엔드 서버를 가장하고 민감한 사용자 데이터를 비밀리에 가로채거나 도용하거나 조작할 수 있습니다.

이 손상된 인증 기관으로부터 클라이언트 연결을 보호하기 위해 Google은 다음과 같이 손상된 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 제품의 다른 부분도 영향을 받지 않았습니다.