修正跨應用程式指令碼安全漏洞

開發人員請注意,如果您的應用程式含有跨應用程式指令碼安全漏洞,請詳閱本文資訊。

問題說明

您的一或多個應用程式出現 WebView 跨應用程式指令碼問題,可能導致惡意應用程式趁機竊取使用者的 Cookie 和其他資料。請參閱 Play Console 的通知內容。Play Console 顯示的修正期限過後,Google Play 會將尚未修復安全漏洞的應用程式下架。

須採取行動​

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

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

其他詳細資訊

部分 Webview 能夠啟用 JavaScript 和載入來自不受信任 Intent 的資料,這些 Webview 可能受到惡意應用程式操弄,在不安全的執行環境下執行 JavaScript。我們建議您採用下列其中一種做法來避免這個安全漏洞。

方法 1:確認未匯出受影響的 Activity

找出含有受影響 WebViewActivity。如果這些 Activity 不需要從其他應用程式存取 Intent,您可以在 Manifest 中對 Activity 設定 android:exported=false。這樣可確保惡意應用程式無法在這些 Activity 中傳送有害輸入內容到任何 WebView

方法 2:保護已匯出 Activity 中的 WebView

如果您想將含有受影響 WebViewActivity 設為已匯出,我們建議您調整下列事項:

  1. 更新 targetSdkVersion
    請務必確保 targetSdkVersion 符合 Google Play 的目標 API 等級規定targetSdkVersion 版本為 16 以下的應用程式會在目前載入的頁面內容中評估傳送至 loadUrl 的 JavaScript 網址,如果指定 SDK 16 以下版本為目標,並使用來自不受信任的 Intent 且未經處理的輸入內容呼叫 loadUrl,攻擊者便可趁機在受影響 WebView 中執行有害的指令碼。
  2. 保護對 evaluateJavascript 的呼叫
    請務必確認 evaluateJavascript 參數一律是可信任的參數。如果使用來自不受信任 Intent 且未經處理的輸入內容呼叫 evaluateJavascript,攻擊者便可趁機在受影響 WebView 中執行有害的指令碼。
  3. 避免載入不安全的檔案
    請確認受影響的 WebView 無法載入 Cookie 資料庫;這類 WebView 會從不受信任的 Intent 載入未經處理的 file:// URL,容易讓惡意應用程式使用以下手法攻擊:某個惡意網頁可能會在 Cookie 資料庫中寫入 <script> 標記,接著惡意應用程式會傳送 Intent,裡面含有指向您 WebView Cookie 資料庫的 file:// URL。一旦將 Cookie 資料庫載入 WebView,就會執行該惡意指令碼,讓攻擊者得以竊取工作階段資訊。
    您可以透過兩種方法確認受影響的 WebView 無法載入 WebView Cookie 資料庫;一種方法是停用所有檔案存取權,另一種則是檢查載入的 file:// URL 是否都指向安全的檔案。提醒您,攻擊者可能會使用符號連結誤導網址路徑檢查。如要防止這類攻擊,請務必在載入前先檢查所有不受信任 file:// URL 的 Canonical 路徑,不要直接檢查 URL 路徑。

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

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