MASTG-TEST-0320 機密データをクリーンアップしない WebView (WebViews Not Cleaning Up Sensitive Data)
概要
このテストはアプリが WebView で使用される機密データをクリーンアップするかどうかを検証します。アプリは WebView での特定のストレージ領域を有効にしておきながら、適切にクリーンアップせず、機密データがデバイス上に必要以上に長く保存されることにつながる可能性があります。たとえば、以下のとおりです。
以下の場合に
WebView.clearCache(includeDiskFiles = true)を呼び出していない:WebSettings.setAppCacheEnabled()が有効になっている。または
WebSettings.setCacheMode()がWebSettings.LOAD_NO_CACHE以外の値である。
以下の場合に
WebStorage.deleteAllData()を呼び出していない:WebSettings.setDomStorageEnabledが有効になっている。
以下の場合に
WebStorage.deleteAllData()を呼び出していない:WebSettings.setDatabaseEnabled()が有効になっている。
以下の場合に
CookieManager.removeAllCookies(ValueCallback<Boolean> ...)を呼び出していない:CookieManager.setAcceptCookie()が明示的にfalseに設定されていない (デフォルトではtrueに設定されている).
このテストは動的解析を使用して、関連する API 呼び出しとファイルシステム操作を監視します。アプリがこれらの API を直接使用しているかどうかに関係なく、WebView はコンテンツをレンダリングする際に内部的にそれらを使用する可能性があります (例: localStorage を使用する JavaScript コード)。そのため、open, openat, opendir, unlinkat などの API の呼び出しをトレースすることで、WebView ストレージディレクトリ内のファイル操作を特定できます。
手順
デバイスにアプリをインストールします (アプリのインストール (Installing Apps))。
メソッドトレース (Method Tracing) を使用して、ストレージの有効化とクリーンアップについて WebView API をターゲットにします。
アプリを開きます。
アプリを広範に使用して、関連するすべての WebView がカバーされ、機密データがロードされることを確認します。クリーンアップする必要がある機密データのリストを保管しておきます。
アプリを閉じます。
ホストとデバイス間のデータ転送 (Host-Device Data Transfer) を使用して
/data/data/<app_package>/app_webview/ディレクトリの内容を取得するか、単純にそのディレクトリ内で WebView で使用されている機密データを検索します。
結果
出力には以下を含む可能性があります。
使用している WebView ストレージ有効化 API のリスト。
使用している WebView ストレージクリーンアップ API のリスト。
クリーンアップする必要がある機密データのリスト。
アプリを閉じた後、WebView で使用された機密データについて
/data/data/<app_package>/app_webview/ディレクトリの内容を検索した結果。
評価
アプリが閉じられた後にも依然として /data/data/<app_package>/app_webview/ ディレクトリに機密データがある場合、そのテストケースは不合格です。これはアプリが WebView の使用後に関連するクリーンアップ API を呼び出していないことに起因する可能性があります。
WebView で使用されるすべての機密データが関連する API を使用して適切にクリーンアップされ、アプリを閉じた後に /data/data/<app_package>/app_webview/ ディレクトリに機密データが残っていない場合、そのテストは合格です。
!!! 注意
有効になっているストレージ領域に対して適切なクリーンアップ API が呼び出されたかどうかを判断することが困難なことがあります。WebView (WebViews) では、WebView により使用されるストレージ領域と、それらのクリーンアップを評価する際の課題について説明しています。
追加ガイダンス:
実行時にさらに詳細なイントロスペクションを必要とする場合、WebView ストレージディレクトリ内のファイルシステム操作のトレースを追加してテストを再実行します。WebView でのファイルシステム操作の監視 (Monitor File System Operations in WebViews) を参照してください。
Last updated
Was this helpful?