如何修正易被插入惡意程式碼的安全性漏洞

開發人員請注意,如果您的應用程式使用不安全的方式實作 PreferenceActivity 類別,因而容易遭人插入惡意程式碼,請詳閱本文資訊。這類實作可能讓外部惡意應用程式載入不應公開的 Fragment。

問題說明

自 2017 年 3 月 1 日起,只要新的應用程式或更新內容的 PreferenceActivity 類別含有安全漏洞,容易遭人插入惡意程式碼,一律禁止在 Google Play 發布。請參閱 Play Console 的通知內容。Play Console 顯示的修正期限過後,Google Play 會將尚未修復安全漏洞的應用程式下架。

需採取行動​

  1. 登入 Play Console,然後前往「快訊」專區查看受影響的應用程式以及解決這些問題的期限。
  2. 更新受影響的應用程式並修復安全漏洞。
  3. 提交受影響應用程式的更新版本。

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

其他詳細資訊

如果可以,請在資訊清單中為 PreferenceActivity 設定 exported=false。這樣可以避免陌生應用程式對這個類別傳送調用請求。

如果您需要將高風險的 PreferenceActivity 匯出至陌生應用程式,請確認該類別具有高風險的原因,並採取相應行動。以下是兩種可能原因:

  1. isValidFragment 實作方式有誤:

檢查高風險的類別是否包含或繼承會在所有程式碼路徑傳回 True 的 isValidFragment 實作方式。如果是這樣,請更新類別以檢查允許的 Fragment 類別清單。舉例來說,如果 PreferenceActivity 必須允許 MyFragment 類別而不允許其他 Fragment,則應實作以下檢查:

         public boolean isValidFragment(String fragmentName) {
            return MyFragment.class.getName().equals(fragmentName);

         }

  1. targetSdkVersion 小於 19,而且未實作 isValidFragment:

如果應用程式目前在資訊清單中設定的 targetSdkVersion 值小於 19,而且高風險的類別不含任何 isValidFragment 實作項目,安全性漏洞便來自於 PreferenceActivity。

為了解決這個問題,開發人員應將 targetSdkVersion 更新至 19 以上版本;如果 targetSdkVersion 無法更新,則應按照 1) 的說明實作 isValidFragment,確認允許的 Fragment 類別。

請注意,應用程式也必須遵循《開發人員發佈協議》和《內容政策》。

我們很樂意提供協助

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

這篇文章實用嗎?
我們應如何改進呢?