WebViewの不適切な使用

学習内容

ここでは、WebViewの不適切な使用よって生じる脆弱性を理解する上で必要な知識について学習します。
具体的には、WebViewやJavascriptInterfaceの概要、事例を交えた脆弱性の概要について説明します。

学習の流れは以下のとおりです。

WebViewとJavascriptInterfaceについて

WebViewとは
WebViewとは、WebサイトやHTMLファイルなどのWebコンテンツを表示するため、Android OSが提供しているクラスです。WebViewを使用することにより、アプリにWebブラウザのような機能を追加できます。
JavascriptInterfaceとは
JavascriptInterfaceとは、WebViewに表示したWebコンテンツとJavaで記述されたアプリを連携する仕組みです。JavascriptInterfaceを用いることにより、WebViewに読み込まれたWebコンテンツは、JavaScriptを使ってアプリ側のJavaで記述されたメソッドを呼び出せるようになります。

WebViewの不適切な使用によって生じる脆弱性

WebViewを使用するアプリの中には、外部のWebコンテンツにアクセスするものもあります。 このようなアプリを開発する場合、開発者はアプリが悪意のあるWebコンテンツにアクセスすること考慮してアプリを開発する必要があります。
WebViewの不適切な使用が原因で発生する問題として以下が挙げられます。
  • アプリの機能が悪用される
    JavascriptInterfaceが有効になっているWebViewは、アプリの機能をメソッド単位でJavaScriptから呼び出し可能になります。細工されたJavaScriptを読み込んだ際、アプリの機能が悪用される可能性があります。

脆弱性の事例

WebViewを取り扱う場合の注意点を理解しないままアプリを開発すると、アプリに脆弱性を作り込んでしまいます。
ここでは、WebView不適切な使用による脆弱性の事例を挙げます。
事例:Sleipnir Mobile for Androidに任意のJavaのメソッドが実行される脆弱性
2012年8月 JVNに、Sleipnir Mobile for AndroidにJavascriptInterfaceの実装不備により、任意のJavaのメソッドが実行される脆弱性が存在していることが報告されました。 細工されたWebページを閲覧することで、任意のJavaのメソッドが実行される可能性があり、その結果、Android端末の情報が窃取されたり、任意のOSコマンドが実行されたりする状態になっていました。
脆弱性の事例
参考URL:
JVN#99730704: Sleipnir Mobile for Androidにおいて任意のJavaのメソッドが実行される脆弱性
http://jvndb.jvn.jp/ja/contents/2012/JVNDB-2012-000075.html

学習シナリオ

WebViewの不適切な使用によって生じる脆弱性の概要について理解できたでしょうか。 それでは以下のシナリオを通して実際に脆弱性のあるサンプルアプリを見ながら、脆弱性を作り込んでしまう原因や、対策方法について学習していきましょう。