修復 Intent 配置易遭盜用的安全漏洞

開發人員請注意,如果您的應用程式含有 Intent 配置易遭盜用的安全漏洞,請詳閱本文資訊。

問題說明

您的一或多個應用程式含有 Intent 配置易遭盜用的問題,可能導致惡意網路或網站趁機存取應用程式元件。請參閱 Play Console 的通知內容。Play Console 顯示的修正期限過後,Google Play 會將尚未修復安全漏洞的應用程式下架。

敬請配合

  1. 登入 Play Console,然後前往「快訊」專區查看受影響的應用程式以及解決這些問題的期限。

  2. 按照下方標明的步驟更新受影響的應用程式。

  3. 提交受影響應用程式的更新版本。

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

其他詳細資訊

如果 WebViews 存取不受信任的網路內容、使用 Intent.parseUri 剖析 intent:// 連結,並利用 startActivity 傳送這些 Intent,就會導致 Intent 配置容易遭到盜用。這類 WebView 可能會因為受到惡意網路內容的操弄,而將任意 Intent 傳送給私人應用程式元件,導致應用程式遭駭;舉例來說,駭客可能會藉由操縱這類元件,盜取私人應用程式資料。需要注意的是,不受信任的網路內容往往包括透過 HTTP 載入的受信任網域內容。

建議您採用下列其中一種做法來防堵這個安全漏洞:

做法 1:確定 WebView 無法傳送任意 Intent

應用程式可使用以下程式碼,限制經由 Intent.parseUri 建構的 Intent 僅能以 Implicit Intent 形式將傳送到具有 BROWSABLE Intent 篩選器的元件:

     // convert Intent scheme URL to Intent object
  Intent intent = Intent.parseUri(url);
  // forbid launching activities without BROWSABLE category
  intent.addCategory("android.intent.category.BROWSABLE");
  // forbid explicit call
  intent.setComponent(null);
  // forbid Intent with selector Intent
  intent.setSelector(null);
  // start the activity by the Intent
  view.getContext().startActivity(intent, -1);

做法 2:確定受影響的 WebView 不會載入不受信任的網路內容

如果 WebView 需要剖析任意 intent:// 配置網址,請確定 WebView 不會載入不受信任的網路內容。不受信任的網路內容包括透過未加密連線載入的網路內容。開發人員可以在 Manifest 中將 android:usesCleartextTraffic 設為 false,或將 Network Security Config 設為不允許 HTTP 流量。開發人員也可以防止所有受影響的 WebView 透過 loadUrl 載入任何使用 HTTP 配置的網址。

建議開發人員確保受影響的 WebView 不會載入從非信任來源取得且不受限制的網址,例如從不受信任的 Intent 取得的網址。

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

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