这个漏洞存在很久,但好像在板上没看过,分享一下骗骗P币。
原理:
在 Javascript 中利用 getClass().forName() 执行Java面的操作。
(getClass() 是 Object 的 final method)
一旦漏洞被利用,即可在该APP拥有的权限范围内为所欲为,比如读写SD卡。
即便该WebView没有addJavascriptInterface(),
若无removeJavascriptInterface("searchBoxJavaBridge_"),仍可能受攻击。
范例:
关键字下“android webview javascript vulnerability”,有很多范例,
或参照下方提供的参考连结。
影响范围:
Android版本低于4.2者。
4.2中,只有加了annotation @JavascriptInterface的方法可以被执行。
应对:
APP开发者-
必须确保WebView里面的内容都是在自己的掌控下,
如果要开启外部的网页,
应该在 shouldOverrideUrlLoading() 拦截并改用手机浏览器开启,
不过手机浏览器如果过旧,一样会中奖。
也要注意来自外部的library,比如一些广告用途的SDK。
一般使用者-
更新Android版本。
更新手机浏览器。
WebView的应用非常广泛,但要更新实在很麻烦,
因为patch后终究要靠vendor帮使用者更新,厂商装死就没辄。
至 Android 5 才终于把WebView解放出来,使用者自己在Play上就能够更新了。
参考连结:
http://goo.gl/aaMxrB
android安全之webview远程代码执行漏洞
https://gist.github.com/jollychang/7577423
sample
http://developer.android.com/training/articles/security-tips.html
Android Developer - Security Tips
http://goo.gl/FKmLzU
WebView Is Now Unbundled From Android
And Free To Auto-Update From Google Play
http://goo.gl/q1TXxF
Google No Longer Provides Patches for WebView Jelly Bean and Prior