關於 Firebase 雲端通訊 (FCM) 伺服器金鑰外洩的補救措施

開發人員請注意,如果您的應用程式含有外洩的 Firebase 雲端通訊 (FCM) 伺服器金鑰,請詳閱本文資訊。

問題說明

您有一或多個應用程式內含外洩的 FCM 伺服器金鑰。這會導致應用程式出現安全漏洞,惡意攻擊者可透過外洩的金鑰傳送推播通知給應用程式的所有使用者,並控制這類通知顯示的內容,包括令人反感的訊息和血腥/令人不安的圖片。請按照下列詳細步驟修正應用程式的問題。您可以參考 Play 管理中心針對應用程式發送的通知,找出應用程式中造成 FCM 伺服器金鑰外洩的部分。

敬請採取行動

  1. 按照下方醒目顯示的步驟,更新應用程式和外洩的 FCM 金鑰。

    1. 如果應用程式已啟用舊版 FCM API,但未透過該 API 傳送推播通知,請停用舊版 FCM API
    2. 如果應用程式已啟用舊版 FCM API,而且透過該 API 傳送推播通知,請按照下列任一步驟操作:
      1. (建議做法) 改用 FCM v1 API 並停用舊版 FCM API
      2. 根據外洩金鑰的用途採取相應做法,確保舊版 FCM API 的使用情形安全無虞:
        1. 如果外洩的金鑰僅用於 FCM API:
          1. 依序點選 [Firebase 主控台] > [專案設定] > [雲端通訊],按一下 [新增伺服器金鑰] 產生新的金鑰,然後在安全的伺服器環境中將該金鑰用於傳送 FCM 訊息。請務必只在安全的伺服器環境中使用這個金鑰,並確認此金鑰並未包含在用戶端程式碼 (應用程式、二進位檔) 中。
          2. 改用新產生的伺服器金鑰傳送 FCM 訊息後,前往 GCP Console 刪除外洩的金鑰。您可以參考 Google Play 發送的通知電子郵件,找出應用程式中造成 FCM 伺服器金鑰外洩的部分。如要瞭解如何取得這些部分外洩的金鑰,請查看步驟 c. 的說明。
        2. 如果外洩的金鑰用於 FCM API 和其他 API:
          1. 改用 FCM v1 API 並停用舊版 FCM API
          2. 為保障日後其他 API 的使用情形安全無虞,建議您停止將外洩的金鑰用於其他 API,最後也要在 GCP Console 中刪除該金鑰。
    3. 完成上述任一步驟後,請從應用程式的程式碼中刪除外洩的 FCM 伺服器金鑰。您可以參考 Google Play 發送的通知電子郵件,找出應用程式中造成 FCM 伺服器金鑰外洩的部分。如要取得外洩的金鑰,請在應用程式中出現安全漏洞的部分檢查程式碼。該金鑰可能會以字串的形式嵌入這個部分,或透過應用程式的 XML 資源在這個部分載入;如果是後面這種情況,請檢查應用程式的 res/values/strings.xml 檔案來取得外洩的金鑰。同時注意下列事項:
      • 如果您執行了上述步驟,卻未從應用程式中刪除外洩的金鑰,那麼就會繼續透過電子郵件/Google Play 管理中心收到安全漏洞通知。
      • 如果您從應用程式中刪除了外洩的金鑰,卻未執行上述步驟,這樣並不算是真正解決問題,因為攻擊者可直接在較舊的應用程式版本中找到該金鑰並用於發動攻擊。

2. 提交更新的 APK

如何提交更新版應用程式套件或 APK:

  1. 前往 Play 管理中心
  2. 選取應用程式。
  3. 前往應用程式套件探索工具頁面。
  4. 在右上方的下拉式選單中,選取不符規定 APK/應用程式套件的應用程式版本,然後記下其所屬的發布版本。
  5. 前往發生政策違規問題的測試群組,也就是以下其中一個頁面:內部測試、封閉測試、公開測試或正式版。
  6. 按一下頁面右上方附近的「建立新版本」 (您可能需要先按一下 [管理測試群組])。
    • 如果含有違規 APK 的發布版本處於草稿狀態,請捨棄該版本。
  7. 新增符合政策規範的應用程式套件或 APK 版本。
    • 確認不符規定的應用程式套件或 APK 版本位在該發布版本的「不含」部分。如需進一步指引,請參閱 Play 管理中心說明文章的「不包含 (應用程式套件和 APK)」一節。
  8. 選取 [儲存] 即可儲存對版本所做的任何變更
  9. 完成版本準備作業後,請選取 [檢查版本]。

如果不符規定的 APK 已發布至多個測試群組,請在每個測試群組中重複執行步驟 5 至 9。

我們將再次審查您重新提交的應用程式,過程可能需要數小時。如果應用程式可以通過審查並成功發布,您就不必採取進一步行動。如果應用程式未能通過審查,就無法發布新的版本,而且您將收到電子郵件通知。

我們很樂意提供協助

如有關於安全漏洞的技術問題,請前往 Stack Overflow 提問並加上「android-security」標記。如需進一步瞭解這個問題的解決步驟,歡迎與我們的開發人員支援團隊聯絡。

主選單
12648227422030017274
true
搜尋說明中心
true
true
true
true
true
5016068
false