- 2012-10-06 http://ierae.co.jp/uploads/webview.pdf このあたりからオフレコで語られているようだ
- 2012-12-27 (発言削除済み) http://favstar.fm/users/virifi/status/284168522358198273
- 2013-02 4.2で指定したメソッドしか呼び出せないように制限することが可能になる
- http://android-developers.blogspot.jp/2013/02/security-enhancements-in-jelly-bean.html
- http://commonsware.com/blog/2013/02/18/webview-addjavascriptinterface-change.html
- 2013-09-16 AVGがPoCコード載せる http://blogs.avg.com/mobile/analyzing-android-webview-exploit/
- 2013-12-17 JVNから公表された http://jvn.jp/jp/JVN53768697/index.html
addJavascriptInterfaceを明示的に使用していなくても、標準のWebViewコンポーネントを組み込んでいるだけで脆弱性になります。
多くのWebViewで勝手にaddJavascriptInterfaceが使われている問題が修正されたコミットはこちら。
SearchBoxImplに関しては削除されましたが、ユーザー補助のtalkback機能を有効にしている場合にも、addJavascriptInterfaceが自動で使われています。 Android 4.2でユーザー補助有効にした状態において、WebViewを組み込んだアプリの多くで脆弱性があることを確認しています。
「addJavascriptInterfaceを使っていると危険だ」という情報は広く公開されている状態でしたが、 addJavascriptInterfaceを明示的に使っていなくても、自動で使われている、WebViewコンポーネントで任意のURLを開けるだけで危険だ、という問題について言及が避けられていました。 (もっとも実際に検証コードを書けば、多くのアプリに脆弱性があることが容易に分かる状態でした)
4.2
- http://tools.oesf.biz/android-4.2.0_r1.0/xref/frameworks/base/core/java/android/webkit/AccessibilityInjector.java
- http://tools.oesf.biz/android-4.2.0_r1.0/xref/frameworks/base/core/java/android/webkit/JniUtil.java
4.3
- http://tools.oesf.biz/android-4.3.1_r1.0/xref/frameworks/base/core/java/android/webkit/AccessibilityInjector.java
- http://tools.oesf.biz/android-4.3.1_r1.0/xref/frameworks/base/core/java/android/webkit/JniUtil.java
4.4では、自分の知る範囲で、アプリケーションのContextオブジェクトを取得する方法がなくなっています。(ジャバに詳しくないので確証が持てません)
- 4.2, 4.3の場合でも設定次第で問題が残っていると考えられます(メーカーが独自で対処していない限り)
- 4.2, 4.3の場合で、ブラウザアプリが拡張機能などのために明示的にaddJavascriptInterfaceを使っているケース(いくつか事例を把握)
- 4.4できちんと修正されているのかの検証
- アプリケーションの持つパーミッションによっては影響が大きくなるので、開発元の提供する信用できるURLしか表示しないように制限する(それ以外は外部ブラウザで開く)
- その上で回線が信用できないケースを想定して、httpsの使用を必須にする(画像や動画など単なる埋め込みリソースや、別途ハッシュ値の検証などがあるケースは除く)