JavascriptInterfaceの理解不足

本シナリオでの学習内容

ここでは、JavascriptInterfaceの理解不足によって生じる脆弱性について学習します。
実際にサンプルアプリを実行して脆弱性によってどのような被害が発生するのかを体験し、その後、脆弱性の原因と対策についてソースコードを参照しながら学習します。

JavascriptInterfaceの理解不足とは

「JavascriptInterfaceの理解不足」とはどのような問題でしょうか。ここで概要について理解しておきましょう。
WebView不適切使用によって生じる脆弱性で説明した通り、 JavascriptInterfaceを使用したWebViewでは、WebViewに読み込まれたWebコンテンツからJavaScriptを使ってアプリ側のJavaで記述されたメソッドを呼び出すことができます。
アプリが悪意のあるWebコンテンツにアクセスする可能性を考慮して適切に対策されている場合、JavascriptInterfaceを悪用する攻撃を防ぐことができます。

悪意のあるWebコンテンツを考慮して対策されている場合
JavascriptInterfaceを悪用されることはない

しかし、アプリが任意のWebコンテンツを読み込める場合、JavascriptInterfaceを通じてアプリの機能を悪用されてしまう可能性があります。

悪意のあるWebコンテンツを考慮していない場合
JavascriptInterfaceを悪用される

WebViewが不適切に使用されているために、JavascriptInterfaceを通じてアプリの機能を悪用できるようになっていることが「JavascriptInterfaceの理解不足」によって生じる脆弱性です。

学習用アプリについて

このシナリオでは、以下の学習用アプリを使用して学習します。
  • 学習用アプリの概要
    サンプルアプリ「09社内Webログイン」と、攻撃アプリ「09社内Webログインスパイ」を使用します。
    サンプルアプリ「09社内Webログイン」のJavascriptInterfaceを悪用して、攻撃アプリ「09社内Webログインスパイ」が端末内の情報を盗み出すという想定です。

  • サンプルアプリ「09社内Webログイン」
    Android端末から自社のWebシステムを利用可能にするアプリです。
    JavascriptInterface経由してアプリ側のメソッドを実行できるようになっています。

  • 攻撃アプリ「09社内Webログインスパイ」
    「09社内Webログイン」アプリがJavascriptInterface経由で公開しているメソッドを悪用して情報を盗み出すアプリです。

どのような実装がこの脆弱性につながるのか次のページで学習していきましょう。