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

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

問題說明

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

敬請配合​

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

在您的申請進入審查階段前,新提交的應用程式或更新版本將處於待發布狀態。如果應用程式的問題未確實更正,您仍會收到警告。

其他詳細資訊

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

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

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

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

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

  1. 保護對 evaluateJavaScript 和 loadUrl 的呼叫

    請務必確認 evaluateJavascript 參數一律是可信任的參數。如果使用來自不受信任 Intent 且未經處理的輸入內容呼叫 evaluateJavascript,攻擊者便可趁機在受影響 WebView 中執行有害的指令碼。同樣地,如果使用含有 javascript: 配置 URL 且未經處理的輸入內容呼叫 loadUrl,攻擊者也能趁機執行有害的指令碼。

  2. 避免載入不安全的檔案

    請確認受影響的 WebView 無法載入 Cookie 資料庫。如果 WebView 會從不受信任的 Intent 載入未經處理的 file:// URL,就可能遭到惡意應用程式攻擊,這類攻擊分成兩個步驟。第一步:惡意網頁可能將 <script> 標記寫入 Cookie 資料庫。第二步:這個遭到篡改的 Cookie 資料庫檔案可能經由下列方式載入:惡意應用程式傳送 Intent,並在其中加入指向您 WebView Cookie 資料庫的 file:// URL;或是惡意網頁本身將您的 WebView 重新導向該檔案的 URL。一旦 WebView 載入並執行 Cookie 資料庫中儲存的惡意 <script>,攻擊者就能竊取工作階段資訊。

    您可以透過三種方法確認受影響的 WebView 無法載入 WebView Cookie 資料庫。

    1. 停用所有檔案的存取權
    2. 確認 WebView 只會載入 file:// URL,而且載入的 file:// URL 都指向安全檔案。提醒您,攻擊者可能會使用 symbolic link 誤導 URL 路徑檢查。如要防止這類攻擊,請務必在載入前一併檢查不受信任 file:// URL 的canonical 路徑,而非僅檢查 URL 路徑。
    3. 如果您想同時允許 http:// URL 和 file:// URL,請在 WebViewClient 中使用 shoverOverrUrlLoadingshouldInterceptRequest,藉此實作 file:// URL 驗證機制。這可確保 WebView 載入的所有 URL 都經過驗證,而非只有直接提供給 loadUrl() 函式呼叫的 URL 經過驗證。

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

這對您有幫助嗎?

我們應如何改進呢?
false
主選單
8246673879962378728
true
搜尋說明中心
true
true
true
true
true
5016068
false
false