网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

HTML5 App的代码注入攻击 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 基于HTML5的手机app(译者注:以下简称HTML5 app)越来越流行了, 在大多数情况下它比native应用更容易适配不同的移动操作系统。它开发起来很方便,可以使用标准的web技术,包括HTML5、...

摘要

基于HTML5的手机app(译者注:以下简称HTML5 app)越来越流行了, 在大多数情况下它比native应用更容易适配不同的移动操作系统。它开发起来很方便,可以使用标准的web技术,包括HTML5、JavaScript 和  CSS,也可以借助一些现有的开发框架(比如PhoneGap)和手机操作系统进行交互。

众所周知,JavaScript是非常容易遭受代码注入攻击的,因此我们计划对HTML5 app进行一次系统的研究以评估基于web技术开发的手机app安全性是否可靠。成果令人吃惊,我们发现如果HTML5 app成为主流(至少目从目前的趋势看是这样的),我们很多日常行为习惯都可能引入安全风险,包括二维码扫瞄、Wi-Fi接入点扫描、播放MP4视频、配对蓝牙设备等等。

本文介绍了HTML5 app可能存在的各种漏洞,攻击者如何利用各种途径进行攻击以及攻击成功后可能造成的危害。除了通过样例程序演示攻击以外, 我们还研究了PhoneGap 186款用于实现不同功能的插件,我们发现其中11款是有漏洞的。我们还对两款真实的HTML5手机进行了安全测试,发现它们也是有漏洞的。

介绍

故事从John Smith开始,他是一个普通人。和大多数人一样,他使用了一 款装满了各种app的智能手机,这个智能手机是他每天生活的一个重要组成部分。早上7点起床,John吃早餐的时候会打开手机里面的app听收本地的广播节目。这个app可以显示当前频段正在播放的音乐的名称,他可以搜索不同的频段收听他喜欢的音乐。8点的时候,他乘公共汽车上班。他看到一个有趣的产品广告贴在他前面座位的背后。为了了解更多产品信息,他用手机上的RFID刷了这个广告标签。忙完了上午的工作后,John在一家新开的餐馆吃午餐。为了节省手机流量费,他用手机搜索免费的Wi-Fi热点。他很高兴的发现有好几个免费热点可以使用。下午5点,John下班回家。在公共汽车上他开始听他下载的MP3歌曲。他的手机MP3 app能够播放MP3文件里面的歌词,这让他非常开心。下车以后,他收到了他媳妇的短信让他买一些好吃的带回家。

他去了超市,在超市里门口他看到有二维码贴在那里。他知道二维码是打折信息就马上扫了下,他很高兴的发现可以有5美元的优惠。

上面这个故事展示了手机在我们日常生活中使用的普遍性,看上去没有必 要为这些使用场景担心。然而这只是目前的情况,一种迅速发展的技术趋势将很快改变一切。当这种技术被广泛采用以后,故事里面John的每个行为都可能引入安全风险。广播节目、RFID标签、MP3文件、Wi-Fi接入点、SMS信息和二维码都可能成为攻击者注入恶意代码到John的智能手机的通道,会导致很多危害。恶意代码不仅仅会驻留在他的手机,还会像蠕虫一样向其他手机进行传播。这种技术越流行,这种恶意代码就传播的越迅速。

这种技术就是HTML5技术,它是HTML5 app的基础。在这种技术被用来开发手机app之前,绝大多数的手机app都是使用各自系统支持的native语言编写的。比如Android app往往使用Java编写,iOS app使用Objective-C编写,跨平台移植app是比较麻烦的。因为Android和iOS使用量都很大,开发者往往没有选择,只能使用不同语言开发两个不能版本的app。如果以后其他手机操作系统用户多了,开发者将会更加悲剧。

HTML5 app技术为这个问题提供了一个解决方案。和native apps不同的是, 这种app是使用HTML5技术开发的,这是一种和平台无关的技术,所有手机操作系统都支持这种web技术。这种app使用HTML5和CSS绘制用户界面,使用JavaScript实现程序逻辑。因为HTML5、CSS和JavaScript是跨平台的,所以这种app从一个平台移植到另外一个平台也是很容易的,在一定程度上来说甚至是通用的。基于这种优势,基于HTML5的app在迅速普及。Evans Data做的一个针对1200名开发者的调查发现使用HTML5技术进行app开发的占到了75%[1]。Gartner最近的一项报告称,在市场占有率上,HTML5 app将在2016 年和native app平分秋色。

非常不幸的是,使用HTML5、JavaScript和CSS开发app将引入natvie语言开发中不存在的安全风险。目前Web安全中仍然面临的跨站脚本攻击(XSS)问题很大程度上是由于数据和代码混杂在一起造成的,攻击者可以通过注入字符串执行代码。在我们的场景下,所有数据都是从不可信的外部通道获取的。如果这些数据中包含代码并且app开发者没有意识到这个风险,外部注入的代码有可能就会在app内部执行导致安全破坏。这是一种假想的潜在攻击方式,是否能够真正在手机设备上完成是未知的。本文对这种攻击方式进行了系统的研究。我们研究的发现包括如下:

我们确认HTML5 app可以被类似XSS的技术手段攻击。这种攻击场景是真是

存在的,我们已经在多款常用的app中完成了这种攻击。主流手机平台(包括

Android,iOS,和  Black- berry)的HTML5 app都受这种攻击技术的影响。

我们系统的研究了这种攻击的潜在攻击通道和场景,大部分攻击场景我们都做了POC。

我们分析了攻击者面需要面对的挑战并展示了如何绕过它们。

文章剩下的内容结构是这样的:第2章介绍WebView和PhoneGap框架。第3章介绍如何进行攻击。第4章介绍攻击渠道和场景。第5章攻击者面需要面对的挑战并展示了如何解决它们。第6章和第7章介绍PhoneGap插件和真实手机app的漏洞。章节8和9讨论相关的工作、解决方案和研究总结。

背景知识

HTML5 app不能直接在手机操作系统上运行,无论是Android还是iOS都不能直接运行HTML5和JavaScript,需要有一个web容器渲染基于HTML5的用户界面和执行JavaScript代码。大部分手机操作系统都这样一个容器:Android 的WebView、iOS的UIWebView以及Windows Phone的WebBrowser。为了简化过程,本文中使用WebView作为研究对象。WebView最初被设计的目的是为了方便native app引入和展示web页面。它将基础的web浏览器功能封装到一个类里面,可以被app当作浏览器组件来使用。通过WebView提供的API函数,移动应用也可以绘制HTML页面。

由于WebView引入的Web内容往往是不可信的,WebView像浏览器一样实现了沙盒机制,JavaScript代码只能运行在一个孤立的环境中。这样的沙盒技术是适用于Web的,但是对于手机app来说过于严格了。一个运行在孤立环境中的手机app是没有太多用途的,因为它无法访问系统资源,如文件、触摸屏、摄像头等。WebView组件运行应用程序打通一个内部JavaScript代码和native代码(例如,Java)的调用通道。这个通道使得JavaScript代码可以调用native代码,而 native代码是可以不受WebView的沙盒限制访问app授权的系统资源的。开发者可以在WebView中使用自己编写的native,但是会降低应用程序的可移植性。 常见的做法是使用第三方的中间件作为native代码的一部分,将跨平台的问 题留给中间件的开发商来解决。成熟的中间件是支持多种手机平台的。目前已经有人开发了很多中间件,包括PhoneGap [12],RhoMobile [13], Appcelerator [3]等。在本文中我们将关注流行的PhoneGap,但是我们的攻击方式是影响所有中间件的。我们的研究是在Android平台上,但由于app的跨平台特性,其他平台也存在这类安全缺陷,也受这种攻击的影响。PhoneGap和PhoneGap插件:PhoneGap帮助开发者使用标准的web技术创建HTML5 app。开发者可以使用HTML页面、JavaScript代码和CSS文件。 PhoneGap框架默认使用WebView,依赖WebView渲染HTML页面和执行 JavaScript代码。

092142iQJ

PhoneGap由两部分组成(图1):框架部分和插件部

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论