【技术实现步骤摘要】
一种基于小程序框架的漏洞检测方法
[0001]本专利技术属于漏洞检测与测试
,具体涉及基于小程序框架的漏洞检测方法。
技术介绍
[0002]移动应用程序以丰富的功能为人们的工作和日常生活带来了极大的便利。为了更好地服务现有用户并不断吸引新用户,微信、支付宝等流行应用将自己打造成为超级应用,吸引第三方开发者入驻,提供尽可能丰富的内容和功能。运行在超级应用程序中的由其他各方开发的子应用程序,被称为“小程序”。这种小程序框架的生态系统非常流行,例如,微信中就存在380万个小程序,比谷歌应用商店中安卓应用的数量(304万)还要多。
[0003]现在的移动端应用开发有三种不同的模式:原生应用(纯原生开发)、Web应用、混合应用(混搭开发)。原生应用使用安卓原生开发的APP,其优势为应用性能、用户体验最好,但其劣势也相对明显,开发门槛高,资源投入多,升级困难等;Web应用内的业务使用纯前端的方式开发和渲染,开发简单,代码在多段环境中可以复用,但往往用户的交互体验较差;混合应用则综合以上两种模式的优点,既有高效的开发速度又能给用户带来高性能体验。而小程序框架的开发模式就属于混搭式的开发方式,既使用了安卓原生开发,又具备加载Web资源的能力。
[0004]当用户在超级应用程序中点击一个小程序开始启动运行时,超级应用程序中对应的安卓组件Activity会接收到一个通知其启动的Intent,并将对应的小程序的资源从服务器下载到移动端本地,然后根据小程序代码逻辑将内容加载到WebView(安卓组件)实例中。WebVi ...
【技术保护点】
【技术特征摘要】
1.一种基于小程序框架的漏洞检测方法, 基于如下客观实际:超级应用程序中的流行小程序框架,其主要技术原理分为两个部分,第一部分使用WebView组件加载并渲染相应的小程序页面,第二部分采用JsCore线程运行小程序的JavaScript逻辑脚本;小程序展示给用户的内容实现在第一部分中,真正实现功能的API调用逻辑则实现在第二部分中;所述漏洞包括两种类型:云侧软件成分加载漏洞和端侧应用API访问控制漏洞;其特征在于:对于检测云侧软件成分加载漏洞,用模糊测试技术,将启动小程序的链接中的部分字段进行变异,然后通过安卓中的intent机制启动对应的APP并在其对应的小程序中加载相应的软件成分,通过加载结果来判断是否存在该类型的漏洞;对于检测端侧应用API访问控制漏洞,采用动态测试技术,在每次测试中控制单一变量,通过观察同一个敏感API的在不同实验环境下的调用结果来判断是否存在该类型的漏洞。2.根据权利要求1所述的基于小程序框架的漏洞检测方法,其特征在于,分为四个步骤,具体为:(一)收集端云结合的小程序数据集通过静态分析尽可能地从普通的应用程序中过滤出集合了小程序框架的超级应用程序;具体是从Google Play和豌豆荚上爬取近6000个流行的免费的安卓应用程序;基于小程序渲染页面是通过安卓中的WebView组件实现的,通过静态分析对初始的数据集进行过滤,如果在静态分析中发现该应用程序使用了WebView组件则保留,否则丢弃;对于仅使用WebView组件来加载本地或外部内容的情况,对应的WebView组件不会被开发者绑定JavaScript Bridge,而小程序加载的页面需要和用户交互并且具有访问超级应用程序提供的API的能力,其WebView会被绑定JavaScript Bridge;给WebView组件绑定JavaScript Bridge有两种方式,一种是使用addJavaScriptInterface()方法将JavaScript Bridge的实现类暴露给WebView组件中运行的JavaScript代码,另一种是通过拦截JavaScript中的几种事件,并重写JAVA侧的回调函数实现相应功能;通过静态分析定位上述的这些特征,对于重写事件回调函数的情况,基于人工分析,增加以下约束:回调函数必须重写且从回调函数开始的调用链长度必须大于N,更精确地保证事件的回调函数是用于实现JavaScript Bridge,而不是仅用于记录WebView组件中触发的JavaScript事件;通过以上特征过滤出超级应用程序后,为了对云侧软件加载漏洞进行测试,进一步收集运行在超级应用程序中的小程序资源,在此步骤中,针对不同的超级应用程序使用以下三种方式做对应的收集:(1)分析小程序启动时的流量,由于每个小程序都有一个唯一的ID与其对应,用于识别该小程序,通过截获当移动端的超级应用程序根据该ID从服务器下载对应小程序的资源时的流量,并修改其中的ID字段,再将此条请求重放,即可获取到存储在服务器上不同小程序的相关资源;(2)某些超级应用程序对流量进行了加密导致无法抓取到对应的流量并修改字段进行重放,对这个超级应用程序进行逆向工程,定位到根据ID构造请求获取服务器资源的前置函数,重放对该前置函数调用,并向其中传入不同的小程序ID,即可获取到相应小程序的相关资源;(3)在以上两种方式都无法成功的情况下,通过UI Automator模拟人工使用小程序,不
停地访问不同的小程序,这样不同小程序的资源就会被下载到移动端本地,从相应的存储目录中就可以获取到这些被访问过的小程序的相关资源;(二)云侧软件成分加载漏洞的测试通过模糊测试来检测相应小程序是否存在云侧软件成分加载漏洞;首先通过静态分析从小程序的代码资源中提取小程序的ID、该小程序包含的页面名称以及每一个页面启动时接收的参数字段名称,用于构造后续进行模糊测试的链接;对于超级应用程序,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。