コンテンツにスキップ

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()

推奨事項

setWebContentsDebuggingEnabledfalseに設定するか、アプリケーションがデバッグモードの場合にのみ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