유출된 Firebase 클라우드 메시징(FCM) 서버 키 문제 해결

이 정보는 유출된 Firebase 클라우드 메시징(FCM) 서버 키가 포함된 앱의 개발자를 대상으로 합니다.

현재 상태

하나 이상의 앱에 유출된 FCM 서버 키가 포함되어 있습니다. 악의적인 공격자가 유출된 키를 사용하여 취약한 앱의 모든 사용자에게 푸시 알림을 보낼 수 있습니다. 공격자는 이러한 알림의 콘텐츠를 제어하여 불쾌감을 주는 메시지, 노골적이거나 충격적인 이미지 등을 표시하기도 합니다. 앱 문제를 해결하려면 아래에 안내된 자세한 단계를 확인하세요.  앱에서 FCM 서버 키가 노출되는 위치는 앱의 Play Console 알림에서 확인할 수 있습니다.

조치 필요

  1. 아래에 강조표시된 단계를 따라 앱 및 유출된 FCM 키를 업데이트합니다.

    1. 앱에 기존 FCM API를 사용 설정했으나 푸시 알림을 전송할 때 이를 사용하지 않는다면 기존 FCM API를 사용 중지합니다.
    2. 기존 FCM API를 사용 설정했으며 푸시 알림을 전송할 때 이를 사용한다면 다음 두 가지 단계 중 하나를 진행하면 됩니다.
      1. (권장) FCM v1 API를 사용하도록 이전하고 기존 FCM API를 사용 중지합니다.
      2. 기존 FCM API 사용 시 다음과 같이 보안을 강화합니다.
        1. 유출된 키를 FCM API에만 사용하는 경우 다음과 같이 합니다. 
          1. Firebase Console > 프로젝트 설정 > 클라우드 메시징에서 '서버 키 추가'를 클릭하여 새 키를 생성합니다. 보안 서버 환경에서 FCM 메시지를 보낼 때 새 서버 키를 사용하세요. 이 키를 보안 서버 환경에서만 사용해야 하고, 클라이언트 코드(앱, 바이너리)에 포함하지 않아야 합니다. 
          2. 새로 생성된 서버 키를 사용하여 FCM 메시지를 전송하도록 이전한 후 유출된 서버 키를 GCP Console에서 삭제합니다. FCM 서버 키가 유출된 앱 내부 위치는 Google Play의 알림 이메일에서 확인할 수 있습니다. c. 단계에는 이러한 위치에서 유출된 키를 가져오는 방법이 나와 있습니다. 
        2. 유출된 키를 FCM을 비롯한 다른 API에 사용하는 경우 다음과 같이 합니다.
          1. FCM v1 API를 사용하도록 이전하고 기존 FCM API를 사용 중지합니다.
          2. 향후 다른 API 사용을 방지하려면 유출된 키를 다른 API에 사용하지 않는 방향으로 이전하면서 최종적으로는 유출된 키를 GCP Console에서 삭제하는 것이 좋습니다.
    3. 위의 단계 중 하나를 완료했다면 유출된 FCM 서버 키를 앱 코드에서 삭제합니다. FCM 서버 키가 유출된 앱 내부 위치는 Google Play의 알림 이메일에서 확인할 수 있습니다. 유출된 키를 가져오려면 취약한 위치에 해당하는 앱 코드를 확인합니다. 키가 취약한 위치에 문자열로 삽입되어 있거나 앱의 XML 리소스를 통해 이 위치에 로드될 수 있습니다. 후자인 경우 앱의 res/values/strings.xml 파일을 확인하여 유출된 키를 가져옵니다. 다음 사항을 참고하세요.
      • 위 단계를 진행했으나 유출된 키를 앱에서 삭제하지 않으면 이메일 및 Google Play Console로 취약점 알림이 계속 전송됩니다. 
      • 유출된 키를 앱에서 삭제했으나 위의 단계를 진행하지 않으면 공격자가 이전 버전의 앱에서 키를 찾아 앱을 공격하는 데 사용할 수 있으므로 사실상 문제가 해결되지 않습니다.

2. 업데이트된 APK를 제출합니다.

업데이트된 App Bundle 또는 APK를 제출하려면 다음 단계를 따르세요.

  1. Play Console로 이동합니다.
  2. 앱을 선택합니다.
  3. App Bundle 탐색기로 이동합니다.
  4. 오른쪽 상단 드롭다운 메뉴에서 정책을 준수하지 않는 APK/App Bundle의 앱 버전을 선택하고 출시 버전을 기록해 둡니다.
  5. 정책 문제가 있는 트랙으로 이동합니다. 내부/비공개/공개 테스트/프로덕션의 4가지 페이지 중 하나입니다.
  6. 페이지 오른쪽 상단에서 새 버전 만들기를 클릭합니다. 먼저 '트랙 관리'를 클릭해야 할 수도 있습니다.
    • 정책을 위반하는 APK가 포함된 출시 버전이 임시보관 상태인 경우 출시 버전을 삭제합니다.
  7. 정책을 준수하는 버전의 App Bundle 또는 APK를 추가합니다.
    • 정책을 준수하지 않는 버전의 App Bundle 또는 APK가 출시 버전의 포함되지 않음 섹션 아래에 있는지 확인합니다. 자세한 내용은 Play Console 도움말의 '포함되지 않음(App Bundle 및 APK)' 섹션을 참고하세요.
  8. 버전의 변경사항을 저장하려면 저장을 선택합니다.
  9. 버전 준비가 완료되면 버전 검토를 선택합니다.

규정을 준수하지 않는 APK가 여러 트랙에 출시되어 있는 경우 각 트랙에서 5~9단계를 반복합니다.

제출된 앱은 다시 검토 절차를 거치게 되며 이 절차는 몇 시간 정도 걸릴 수 있습니다. 앱이 검토 과정을 통과하고 게시가 완료되면 더 이상의 조치가 필요하지 않습니다. 앱이 검토 과정을 통과하지 못할 경우 새로운 앱 버전은 게시되지 않으며 이메일 알림을 받게 됩니다.

도움이 필요한 경우

취약점에 관한 기술적 문의사항이 있다면 'android-security' 태그를 사용하여 Stack Overflow에 질문을 올려 주시기 바랍니다. 이 문제를 해결하기 위해 취해야 할 단계를 명확하게 알아보려면 Google 개발자 지원팀에 문의해 주세요.

기본 메뉴
10552903390734417914
true
도움말 센터 검색
true
true
true
true
true
5016068
false