Index
Webviewのリモートデバッグが有効化されている
説明
WebviewはsetWebContentsDebuggingEnabled APIを使用してリモートデバッグを公開します。このAPIはAPI 19で導入されました。
WebviewのデバッグはChrome Debug Protocolを使用し、抽象名付きUnixソケットを使用して公開されます。ソケット名はwebview_devtools_remoteまたはwebview_devtools_remote_<pid>です。
デバイスでソケットが公開されていることを確認するには、netstat -untapexWコマンドを使用して、ターゲットアプリケーション、または抽象ソケットを示すために使用される@記号を検索できます。
抽象ソケットはアクセスを強制するためにファイルシステムパーミッションを使用しないため、デバイス上のすべてのアプリケーションからアクセス可能です。
ソケットへのアクセスを実証するために、socatバイナリを使用して抽象ソケットを公開することができます:
./socat TCP-LISTEN:9999,fork ABSTRACT:webview_devtools_remote_3483
9999ポートはローカルにアクセスするか、テスト目的でadbを使用して転送することができます:
adb forward tcp:9999 tcp:9999
リモートプロトコルにアクセスするには、pychromeのようなChrome Debug Protocolクライアントを使用してください:
import pychrome
# 公開されたポート上のWebViewに接続する。
browser = pychrome.Browser(url="http://127.0.0.1:9999")
t = browser.list_tab()[0]
t.start()
t.DOM.enable()
# ドキュメントにアクセスする。
t.DOM.getDocument()
推奨事項
setWebContentsDebuggingEnabledをfalseに設定するか、アプリケーションがデバッグモードの場合にのみtrueに設定してください。
例:
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
WebView.setWebContentsDebuggingEnabled(true);
}
リンク
標準
- OWASP_MASVS_L1:
- MSTG_CODE_2
- MSTG_CODE_4
- OWASP_MASVS_L2:
- MSTG_CODE_2
- MSTG_CODE_4
- PCI_STANDARDS:
- REQ_1_2
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_11_3
- OWASP_MASVS_v2_1:
- MASVS_PLATFORM_2
- MASVS_RESILIENCE_3
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255