当前位置: 首页 > 专利查询>复旦大学专利>正文

一种基于小程序框架的漏洞检测方法技术

技术编号:35820524 阅读:52 留言:0更新日期:2022-12-03 13:45
本发明专利技术属于漏洞检测与测试技术领域,具体为一种基于小程序框架的漏洞检测方法。本发明专利技术所述漏洞为两种类型:云侧软件成分加载漏洞和端侧应用API访问控制漏洞;对于前者,用模糊测试技术,将启动小程序的链接中的部分字段进行变异,然后通过安卓中的intent机制启动对应的APP并在其对应的小程序中加载相应的软件成分,通过加载结果来判断是否存在该类型的漏洞;对于后者,采用动态测试技术,在每次测试中控制单一变量,通过观察同一个敏感API的在不同实验环境下的调用结果来判断是否存在该类型的漏洞。本发明专利技术能够自动、快速检测出APP中(类)小程序框架中的两种漏洞,发现其在安全策略上存在的缺陷,从而阻挡攻击者的恶意攻击。从而阻挡攻击者的恶意攻击。从而阻挡攻击者的恶意攻击。

【技术实现步骤摘要】
一种基于小程序框架的漏洞检测方法


[0001]本专利技术属于漏洞检测与测试
,具体涉及基于小程序框架的漏洞检测方法。

技术介绍

[0002]移动应用程序以丰富的功能为人们的工作和日常生活带来了极大的便利。为了更好地服务现有用户并不断吸引新用户,微信、支付宝等流行应用将自己打造成为超级应用,吸引第三方开发者入驻,提供尽可能丰富的内容和功能。运行在超级应用程序中的由其他各方开发的子应用程序,被称为“小程序”。这种小程序框架的生态系统非常流行,例如,微信中就存在380万个小程序,比谷歌应用商店中安卓应用的数量(304万)还要多。
[0003]现在的移动端应用开发有三种不同的模式:原生应用(纯原生开发)、Web应用、混合应用(混搭开发)。原生应用使用安卓原生开发的APP,其优势为应用性能、用户体验最好,但其劣势也相对明显,开发门槛高,资源投入多,升级困难等;Web应用内的业务使用纯前端的方式开发和渲染,开发简单,代码在多段环境中可以复用,但往往用户的交互体验较差;混合应用则综合以上两种模式的优点,既有高效的开发速度又能给用户带来高性能体验。而小程序框架的开发模式就属于混搭式的开发方式,既使用了安卓原生开发,又具备加载Web资源的能力。
[0004]当用户在超级应用程序中点击一个小程序开始启动运行时,超级应用程序中对应的安卓组件Activity会接收到一个通知其启动的Intent,并将对应的小程序的资源从服务器下载到移动端本地,然后根据小程序代码逻辑将内容加载到WebView(安卓组件)实例中。WebView实例能够加载从服务器端下载到移动端本地的模板文件,或是来自不同域名身份的第三方的外部Web资源,例如,小程序内部可以加载第三方的广告提供商域名;完成加载并渲染后,小程序可以访问由超级应用程序提供的具有强大功能的敏感特权API,例如,这些API可以访问已保存的用户数据(比如注册时使用的账户、电话号码等个人信息),也可以利用为超级应用程序提供的操作系统级资源(比如,地理位置、摄像头和麦克风等)。小程序访问API的能力是由WebView组件提供的,开发者可以选择是否给WebView组件绑定JavaScript Bridge,运行在WebView组件中的JavaScript代码可以通过这个JavaScript Bridge调用到超级应用程序中的JAVA代码,从而访问超级应用程序提供的敏感API。
[0005]在小程序通过WebView加载内容时,需要对加载的内容实施可靠的安全策略,否则会导致移动端小程序加载并渲染出乎意料的违背小程序开发者意图的视图内容;在小程序调用由超级应用程序提供的敏感特权API时,也需要对每次的API调用实施访问控制策略,不能任由每次API调用都被成功执行,否则可能会导致用户或系统资源的泄露。
[0006]对于传统的静态分析而言,小程序的技术框架是跨语言实现的,小程序本身的代码逻辑是基于JavaScript编写的,而小程序运行的环境超级应用程序则是使用JAVA编写的;除此之外,小程序采用定制化的代码做开发,存在自己独特的生命周期函数,打包之后的小程序代码呈碎片化分布;并且小程序代码往往动态从云端下发加载。传统的静态分析
没有办法解决这些挑战。
[0007]对于传统的动态测试而言,小程序没有一个统一格式的输入,而且存在很多启动入口,无法高效地生成可以进行批量动态测试的输入,而且不同的超级应用程序要求的输入格式存在差异性,所以传统的动态测试没有办法解决这些挑战。
[0008]以上两种安全策略的正确实施是保证小程序安全的基础,如果其中任一环节的安全策略出现漏洞,就很可能导致用户或系统遭受到攻击。

技术实现思路

[0009]本专利技术的目的是针对新兴的超级应用程序中的小程序框架,提供一种自动化检测其安全漏洞的方法。
[0010]本专利技术提供的基于小程序框架的漏洞检测方法,利用爬虫技术、模糊测试技术、静态程序分析和动态测试技术,自动检测流行小程序框架中的两种漏洞类型:云侧软件成分加载漏洞和端侧API访问控制漏洞。
[0011]本专利技术方法的提出基于如下的观察(客观实际):超级应用程序中的流行小程序框架,其主要技术原理分为两个部分,第一部分使用WebView组件加载并渲染相应的小程序页面,第二部分采用JsCore线程运行小程序的JavaScript逻辑脚本。小程序展示给用户的内容实现在第一部分中,真正实现功能的API调用逻辑则实现在第二部分中。
[0012]在加载并渲染对应的页面内容时,小程序应该对加载的页面内容进行管控,即应该限制加载什么样的页面内容用于展示给用户。对于此阶段,本专利技术提出了一个基于安卓中的intent机制的检测模型,可以自动化检测小程序开发者在此阶段施加的安全策略是否全面可靠。
[0013]在实现小程序相应功能并执行API调用时,不同API的功能会涉及到敏感的用户信息或操作系统级资源。因此超级应用程序需要对每次API调用实施访问控制,即判断此次API调用是否应该被允许,对应的资源是否应该被合理保护。对于此阶段,本专利技术提出了基于单一变量的动态测试模型,可以检测超级应用程序对于API访问控制的安全策略是否全面可靠。
[0014]本专利技术可以自动化识别集成了小程序框架的安卓应用程序(以下简称APP)并检测其中小程序框架的两种类型漏洞:云侧软件成分加载漏洞和端侧应用程序编程接口(以下简称API)访问控制漏洞。现在市场上的超级应用程序为了尽可能地让用户的需求在当前APP中形成闭环,即不再需要为了实现别的需求而切换到另一个APP,集合了很多由其他各方开发的子应用程序。这种特性使其变得非常流行,从而越来越多的APP接入了小程序框架。例如,在微信这个超级应用程序中,就托管了超过380万个子应用程序。针对小程序这种新兴的流行框架,本专利技术提出了一种基于静态程序分析和动态程序测试相结合的检测方法,用于检测小程序框架中两种类型的漏洞。
[0015]对于检测软件成分加载漏洞,本专利技术利用模糊测试技术,将启动小程序的链接中的部分字段进行变异,然后通过安卓中的intent机制启动对应的APP并在其对应的小程序中加载相应的软件成分,通过加载结果来判断是否存在该类型的漏洞。
[0016]对于端侧应用API访问控制漏洞,本专利技术采用动态测试技术,在每次测试中控制单一变量,通过观察同一个敏感API的在不同实验环境下的调用结果来判断是否存在该类型
的漏洞。
[0017]本专利技术能够检测出APP中(类)小程序框架中的两种漏洞,发现其在安全策略上存在的缺陷,从而阻挡攻击者的恶意攻击。
附图说明
[0018]图1为本专利技术基于小程序框架的漏洞检测方法流程图示。
具体实施方式
[0019]为了评估市面上使用了小程序框架的超级应用程序在这两个阶段上实施的安全策略,本专利技术提供的基于小程序框架的漏洞检测方法,分为四个步骤,参见图1所示。具体为:(一)收集端云结合的(类)小程序数据集本阶段中,通过静态分析尽可能地从普通的应用程序中过本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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、该小程序包含的页面名称以及每一个页面启动时接收的参数字段名称,用于构造后续进行模糊测试的链接;对于超级应用程序,...

【专利技术属性】
技术研发人员:杨珉张磊张智搏
申请(专利权)人:复旦大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1