第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 应用漏洞检测方法 装置 电子设备及存储介质与流程

应用漏洞检测方法 装置 电子设备及存储介质与流程

时间:2020-10-12 16:30:05

相关推荐

应用漏洞检测方法 装置 电子设备及存储介质与流程

本申请涉及计算机技术领域,尤其涉及一种应用漏洞检测方法、装置、电子设备及存储介质。

背景技术:

随着终端设备跨平台应用开发技术的普及,越来越多的开发者开始在webview中构建各种jsbridge,这种技术使得开发者编写html和javascript代码调用native代码变得非常容易,极大方便了跨平台应用的开发,缩短了业务逻辑的开发周期。但是,jsbridge开放了大量敏感的、具备特权逻辑的特权接口,攻击者可利用这些开放的接口进行攻击,例如远程安装恶意木马、窃取用户隐私数据等。而一些开发者安全意识薄弱、代码质量参差不齐,没有对使用的特权接口进行限制,这对无疑给应用引入巨大的安全风险。

技术实现要素:

本申请实施例提供一种应用漏洞检测方法、装置、电子设备及存储介质,可以快速有效地检测出使用特权接口过程中存在的安全漏洞,进而有针对性地指导应用开发者对安全漏洞进行修复,保证特权接口使用的安全性。

一方面,本申请一实施例提供了一种应用漏洞检测方法,包括:

识别待测应用中包含的允许访问网页的关键特征;

从与所述允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口;

调用所述高危特权接口所属的预设高危特权接口类别对应的检测流程,检测所述高危特权接口存在的安全漏洞。

一方面,本申请一实施例提供了一种应用漏洞检测装置,包括:

特征识别模块,用于识别待测应用中包含的允许访问网页的关键特征;

接口识别模块,用于从与所述允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口;

漏洞检测模块,用于调用所述高危特权接口所属的预设高危特权接口类别对应的检测流程,检测所述高危特权接口存在的安全漏洞。

一方面,本申请一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行计算机程序时实现上述任一种方法的步骤。

一方面,本申请一实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。

一方面,本申请一实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现上述任一种方法的步骤。

本申请实施例提供的应用漏洞检测方法、装置、电子设备及存储介质,根据不同业务逻辑中常见的高危特权接口,提供了多种检测流程,可检测出恶意文件操作、信息泄漏、恶意插件加载、恶意安装应用、签名校验漏洞等多种安全漏洞,从而得到更细粒度的安全漏洞检测结果,让开发者直观地意识到使用特权接口过程中存在各种安全漏洞,进而有针对性地对安全漏洞进行修复,保证移动跨平台应用中特权接口使用的安全性。此外,本申请实施例中提供的多种检测流程,可覆盖目前常用业务在调用特权接口时存在的安全漏洞,可广泛应用于针对各类应用的测试。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的应用漏洞检测方法的应用场景示意图;

图2为本申请一实施例提供的应用漏洞检测方法的流程示意图;

图3为本申请一实施例提供的检测文件操作类接口是否存在安全漏洞的流程示意图;

图4为本申请一实施例提供的检测隐私信息获取类接口是否存在安全漏洞的流程示意图;

图5为本申请一实施例提供的检测安装类接口是否存在安全漏洞的流程示意图;

图6为本申请一实施例提供的应用漏洞检测方法的流程示意图;

图7为本申请一实施例提供的对白名单防护机制进行安全漏洞检测的流程示意图;

图8为本申请一实施例提供的检测白名单中的网站是否存在安全漏洞的流程示意图;

图9为本申请一实施例提供的应用漏洞检测装置的结构示意图;

图10为本申请一实施例提供的电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

为了方便理解,下面对本申请实施例中涉及的名词进行解释:

hybrid应用:指采用web技术以及native代码混合编写的应用程序,该类应用具有跨平台的优势,可以缩短业务逻辑的开发周期。

jsbridge:用于hybrid应用h5和本地原生代码的交互技术。通过该技术可以给javascript和本地代码提供更友好、更合理的接口。

native代码:指代本地原生代码,该类代码其依赖于系统平台,不同操作系统有不同语言实现,能够使用操作系统提供的系统接口。在android系统上指的java和c++编写的代码。

webview组件:开发终端设备应用过程中一个非常重要的组件,可通过webview组件在终端设备的应用中渲染并展示web页面,可与页面javascript交互,实现混合开发。

urlscheme接口:是一个可以实现应用之间相互跳转的对外接口,通过给应用定义一个唯一的url路径来从外部快速地打开这个应用。例如,使用购物app购物,在付款时可通过urlscheme接口调用微信、支付宝等app完成支付的功能。

控制流分析(controlflowanalysis):简称cfa,是一种确认程序控制流程的静态代码分析技术。控制流程会以控制流图来表示。对于函数编程语言及面向对象程式设计,cfa都是指计算控制流程的算法。控制流分析一词最早是由neild.jones及olinshivers开始使用。抽象释义、约束补偿及型别系统都可以用来进行控制流分析。

android应用程序(即混合应用程序)越来越多地集成了嵌入式web浏览器组件webview,在应用程序中呈现web页面并运行javascript代码,以获得无缝的用户体验。

xss攻击:即跨站脚本攻击(crosssitescripting),通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是javascript,但实际上也可以包括java、vbscript、activex、flash或者甚至是普通的html。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

终端设备:可以安装各类应用,并且能够将已安装的应用中提供的对象进行显示的设备,该终端设备可以是移动的,也可以是固定的。例如,手机、平板电脑、各类可穿戴设备、车载设备、个人数字助理(personaldigitalassistant,pda)、销售终端(pointofsales,pos)或其它能够实现上述功能的电子设备等。

应用:即应用程序,可以完成某项或多项业务的计算机程序,一般具有可视的显示界面,能与用户进行交互,比如电子地图和微信等都可以称为应用。其中,有些应用需要用户安装到所使用的终端设备上才可以使用,有些则并不需要进行应用安装,例如,微信中的各个小程序。小程序不需要下载安装即可使用,用户扫一扫或者搜一下即可打开应用。

附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。

在具体实践过程中,随着终端设备跨平台应用开发技术的普及,越来越多的开发者开始在webview中构建各种jsbridge,这种技术使得开发者编写html和javascript代码调用native代码变得非常容易,极大方便了跨平台应用的开发,缩短了业务逻辑的开发周期。但是,jsbridge开放了大量敏感的、具备特权逻辑的特权接口,攻击者可利用这些开放的接口进行攻击,例如远程安装恶意木马、窃取用户隐私数据等。而一些开发者安全意识薄弱、代码质量参差不齐,没有对使用的特权接口进行限制,这对无疑给应用引入巨大的安全风险。因此,急需一种可以快速有效地检测出应用中的特权接口存在的安全漏洞的方法,以便指导开发者进行安全规范的开发,降低特权接口存在的安全风险。目前,通用的安全漏洞检测方法大多侧重于风险特征的发现,即发现哪些接口可能存在安全风险,但并未给出具体存在哪些安全漏洞,因此,检测结果不足以让开发者们意识到安全风险的严重性,这也是安全风险屡禁不止的原因。此外,不同应用涉及的业务逻辑不同,导致应用中使用的特权接口也不同,而通用的安全漏洞检测方法没有考虑到业务逻辑不同引起的检测方式的不同,无法适应实际业务需求。

为此,本申请的发明人分析了大量业务逻辑中可能使用的特权接口,从中找出几种易遭到攻击的高危特权接口,并根据各个高危特权接口执行的功能,对高危特权接口进行归类,得到多个预设高危特权接口类别,基于每一类高危特权接口执行业务的特征,提出针对每一预设高危特权接口类别的检测流程,以便对各类高危特权接口进行有效地安全漏洞检测。具体的应用漏洞检测方法包括:识别待测应用中包含的允许访问网页的关键特征;从与允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口;调用高危特权接口所属的预设高危特权接口类别对应的检测流程,检测高危特权接口存在的安全漏洞。这样,可实现对不同业务逻辑的应用进行检测,并且能够让开发者直观地意识到使用特权接口过程中存在的安全漏洞,进而有针对性地对安全漏洞进行修复,保证移动跨平台应用中特权接口使用的安全性,提高使用应用过程中用户的信息安全、财产安全和人身安全等。

在介绍完本申请实施例的设计思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。

参考图1,其为本申请实施例提供的应用漏洞检测方法的应用场景示意图。该应用场景包括终端设备101和测试设备102。其中,终端设备101可以与测试设备102进行通信,例如可以是通过网络进行通信。终端设备101可用于运行待测应用,终端设备101包括但不限于桌面计算机、移动电话、移动电脑、平板电脑、媒体播放器、智能可穿戴设备、服务器等。测试设备102用于执行本申请实施例提供的应用漏洞检测方法,测试设备102可以是桌面计算机、服务器或云计算中心,待测应用的代码可存储在测试设备102的存储单元中。测试设备102中还包括自动化测试框架,基于自动化测试框架实现向用终端设备101发送模拟用户操作待测应用的测试指令。

当采用静态分析(即扫描待测应用的代码)的方式进行漏洞检测时,测试设备102从其存储单元中获取待测应用的代码,根据应用漏洞检测方法中的流程对待测应用的代码进行静态分析。

当采用动态测试(即扫描待测应用的代码)的方式进行漏洞检测时,测试设备102从其存储单元中获取待测应用的代码,并发送给终端设备101,由终端设备101完成待测应用的安装。然后,用户可操作终端设备101上的待测应用,或者可通过测试设备102向终端设备101发送测试指令,以模拟用户的操作。在操作过程中,测试设备102获取待测应用产生的数据,包括待测应用与业务服务器之间传递的数据,以及待测应用内部的信息等。

当然,本申请实施例提供的方法并不限用于图1所示的应用场景中,还可以用于其它可能的应用场景,本申请实施例并不进行限制。对于图1所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。

为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。

下面结合图1所示的应用场景,对本申请实施例提供的技术方案进行说明。

参考图2,本申请实施例提供一种应用漏洞检测方法,包括以下步骤:

s201、识别待测应用中包含的允许访问网页的关键特征。

本申请实施例中,允许访问网页的关键特征是指,表示允许待测应用访问外部网络提供的任意网页的代码逻辑。例如,当urlscheme接口的配置信息被配置为可被外部应用远程调用时,表示允许待测应用访问外部网络提供的网页;当待测应用中存在可打开任意网页的代码逻辑时,表示存在允许待测应用访问外部网络提供的网页的代码逻辑;当待测应用中存在网页识别、网页跳转逻辑时,表示存在允许待测应用访问外部网络提供的网页的代码逻辑。实际应用中,允许访问网页的关键特征可根据开发环境、使用的开发语言、业务逻辑确定,本申请实施例不作具体限定。

具体实施时,可通过静态分析的检测方式检测待测应用中是否包含允许访问网页的关键特征,即通过扫描待测应用的代码,检测待测应用中是否包含允许访问网页的关键特征。

实际应用中,终端设备通常通过urlscheme接口来实现应用之间相互跳转,一旦urlscheme接口可被远程调用,则外部应用即可通过urlscheme接口攻击终端设备。为此,可通过如下方式识别待测应用中包含的允许访问网页的关键特征:检测urlscheme接口的配置信息,若根据待测应用中的urlscheme接口的配置信息确定urlscheme接口可被外部应用远程调用,则确定urlscheme接口为关键特征。

以android应用程序为例,可通过如下方式识别待测应用中包含的允许访问网页的关键特征:在待测应用中查询到andriodmanifest.xml配置文件,解析andriodmanifest.xml配置文件里的组件信息,将具备android.intent.category.browsable的组件作为允许访问网页的关键特征。识别出待测应用中的关键特征后,还可以提取android.intent.category.browsable组件对应的伪协议,在伪协议对应的代码区域中检索可被调用的webview组件,将检索到的webview组件作为与允许访问网页的关键特征关联的webview组件。

以ios应用程序为例,可通过如下方式识别待测应用中包含的允许访问网页的关键特征:查询待测应用中的info.plist的配置文件,从info.plist的配置文件中提取cfbundleurlschemes对应的伪协议作为允许访问网页的关键特征。在待测应用中定位到可被远程调用的伪协议后,在伪协议对应的代码区域中检索可被调用的webview组件,将检索到的webview组件作为与允许访问网页的关键特征关联的webview组件。

具体实施时,还可以通过动态测试的方式检测待测应用中是否包含允许访问网页的关键特征,基于动态测试过程中待测应用反馈的数据检测关键特征。其中,动态测试指在终端设备内操作该待测应用,或者通过测试设备模仿用户使用该待测应用,测试设备包括自动化测试框架以及运行时流量抓取环境。

具体地,可通过如下方式识别待测应用中包含的允许访问网页的关键特征:若待测应用中包含预设功能,且确定检测到的预设功能中存在允许访问网页的业务逻辑,则确定该预设功能为允许访问网页的关键特征。其中,预设功能包括但不限于以下至少一种:浏览网页功能、聊天对话功能、扫描识别功能、消息推送功能等。

实际应用中,开发者可通过在终端设备上使用待测应用,来熟悉并拆解待测应用中的交互逻辑,确定待测应用中是否包含浏览网页功能、聊天对话功能、扫描识别功能、消息推送功能等预设功能。具体地,针对浏览网页功能,需要确定该功能中是否存在允许访问任意输入的网页的业务逻辑;针对聊天对话功能,需要确定该功能中是否存在能访问对方发来的任意网页的业务逻辑;针对扫描识别功能,需要确定该功能中是否具备识别网页并跳转到该网页的业务逻辑;针对消息推送功能,需要确定该功能中是否存在可跳转到任意网页的业务逻辑。

具体实施时,也可以通过控制流分析方法,确定待测应用中是否存在预设功能,以及检测到的预设功能中是否存在允许访问网页的业务逻辑。或者,通过静态分析的方式,通过检索待测应用中是否包含预设功能中的特定字段,来确定是否存在预设功能。

s202、从与允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口。

本申请实施例中,与允许访问网页的关键特征关联的webview组件是指,允许待测应用访问外部网络提供的任意网页的代码逻辑中可调用的webview组件。

本申请实施例中,高危特权接口是指存在安全风险的特权接口。具体实施时,根据不同业务的业务需求定义哪些特权接口为高危特权接口,本申请实施例不作限定。

具体实施时,当高危特权接口数量较多时,为了方便识别高危特权接口,且方便检测高危特权接口存在的安全漏洞,可将高危特权接口分为文件操作类接口、隐私信息获取类接口、安装类接口等多个预设高危特权接口类别。其中,文件操作类接口是指可执行文件创建、修改、删除等操作的特权接口,隐私信息获取类接口是指可获取用户信息、账号密码、通讯录等隐私信息的特权接口,安装类接口是指可执行插件加载、应用安装等操作的特权接口。上述几类高危特权接口基本可涵盖现有业务中常见的高危特权接口。

实际应用中,每个特权接口对应的代码中均会包含与该特权接口对应的特征字段,当出现该特征字段时,表示待测应用中使用了该特权接口,例如当出现“ljava/io/file;-><init>”字段时,表示待测应用中使用了文件操作类接口执行文件创建操作。因此,具体实施时,可预先为每一类高危特权接口设置对应的特征字段,然后,通过如下方式识别高危特权接口:在与允许访问网页的关键特征关联的webview组件对应的代码区域中检测是否包含各预设高危特权接口类别对应的特征字段,若包含某一预设高危特权接口类别对应的特征字段,则确定识别出属于该预设高危特权接口类别的高危特权接口。

例如,文件操作类接口的特征字段可以包括:ljava/io/file;-><init>以及ljava/util/zip/zipentry;->getname等字段。安装类接口的特征字段可以包括:ldalvik/system/dexclassloader;-><init>等字段。隐私信息获取类接口一般可用于获取用户的敏感信息(如短信或通讯录),针对这类隐私信息,隐私信息获取类接口的特征字段可以包括:content://com.android.contacts、content://sms、等字段,隐私信息获取类接口还可用于获取业务相关的敏感信息(如账号密码),针对这类隐私信息,隐私信息获取类接口的特征字段可以是常见的业务代码名称,例如token/session等。

具体实施时,还可以根据特征字段从webview组件对应的代码区域中,定位出高危特权接口对应的代码区域,方便后续检测高危特权接口存在的安全漏洞。

s203、调用高危特权接口所属的预设高危特权接口类别对应的检测流程,检测高危特权接口存在的安全漏洞。

具体实施时,为了方便检测高危特权接口存在的安全漏洞,可以针对不同高危特权接口类别设置不同的检测流程,以便针对不同类别的高危特权接口采用相应的漏洞挖掘思路进行漏洞挖掘,从而得到不同类别下更细粒度的安全漏洞检测结果。

下面分别介绍针对不同高危特权接口类别的检测流程。

(1)文件操作类接口

参考图3,当高危特权接口为文件操作类接口时,可通过如下检测流程检测高危特权接口存在的安全漏洞:

s301、检测包含高危特权接口的webview组件是否可以调用该高危特权接口,若是,则执行步骤s302,否则,执行步骤s304。

具体实施时,可通过控制流分析方法,检测是否存在webview组件到该文件操作类接口的调用路径,若存在调用路径,则确定webview组件可以调用该文件操作类接口。若不存在webview组件到该文件操作类接口的调用路径,则确定webview组件不可以调用该文件操作类接口,即外部应用无法通过webview组件调用该文件操作类接口对终端设备内的文件进行修改、删除、创建等操作,表示该文件操作类接口不存在安全漏洞。

s302、判断与该高危特权接口关联的代码区域中是否存在过滤畸形文件名的代码,若否,则执行步骤s303,否则执行步骤s304。

具体实施时,可在与文件操作类接口关联的代码区域匹配是否存在“../”等畸形文件名特征,来判断与该文件操作类接口关联的代码区域中是否存在过滤畸形文件名的代码。

通过步骤s302可判断在通过文件操作类接口创建文件过程中,待测应用是否对创建的文件进行畸形文件名过滤,如果没有对创建的文件进行畸形文件名过滤,则待测应用存在路径穿越风险。

s303、确定该高危特权接口存在文件操作类安全漏洞。

其中,文件操作类安全漏洞是指,外部应用可通过特权接口远程创建、修改、删除终端设备本地的文件,从而达到攻击终端设备的目的。

s304、确定该高危特权接口不存在文件操作类安全漏洞。

经过图3所示步骤后,可判断文件操作类的高危特权接口是否存在文件操作类安全漏洞,例如:高危特权接口可以根据传递的文件名进行文件创建,文件名被任意指定为包含“../”的文件名或进行压缩包操作,处理解压文件写入时未对文件名进行过滤等。若待测应用的高危特权接口存在上述文件操作类安全漏洞,则攻击者可以将文件写入终端设备内的任意位置,并尝试覆盖终端设备的代码文件进行攻击,存在远程代码执行风险。

通过图3所示的方法,可判断待测应用中是否存在文件操作类安全漏洞,从而提醒开发者对文件操作类安全漏洞进行修复,防止攻击者利用文件操作类安全漏洞对终端设备进行攻击。

(2)隐私信息获取类接口

参考图4,当高危特权接口为隐私信息获取类接口时,可通过如下检测流程检测高危特权接口存在的安全漏洞:

s401、检测包含高危特权接口的webview组件是否可获取该高危特权接口获取的数据,若是,则执行步骤s402,否则执行步骤s403。

s402、确定该高危特权接口存在泄露隐私信息的安全漏洞。

s403、确定该高危特权接口不存在泄露隐私信息的安全漏洞。

如果待测应用中的webview组件可以获取到隐私信息获取类接口获取的数据,则攻击者可通过webview组件远程获取隐私信息获取类接口获取的用户的隐私信息,从而对用户的个人信息安全或账号安全带来威胁。例如,目前许多应用都包含账号体系,该账号体系可关联多个业务的应用且无需密码授权,可直接通过令牌访问账号密码等相关数据,如果待测应用中的webview组件可以获取到隐私信息获取类接口获取的数据,则攻击者可通过webview组件远程获取隐私信息获取类接口获取的令牌,这样就可以直接构造账号登陆信息获取账号权限。

通过图4所示的方法,可判断待测应用中的webview组件是否可获取隐私信息获取类接口获取的数据,确定待测应用是否存在泄露隐私信息的安全漏洞,从而提醒开发者对文件操作类安全漏洞进行修复,保护用户的隐私信息安全。

(3)安装类接口

参考图5,当高危特权接口为安装类接口时,可通过如下检测流程检测高危特权接口存在的安全漏洞:

s501、检测包含安装类接口的webview组件是否可以调用该高危特权接口,若是,则执行步骤s502,否则执行步骤s508。

具体实施时,可通过控制流分析方法,检测是否存在webview组件到该安装类接口的调用路径,若存在调用路径,则确定webview组件可以调用该安装类接口。若不存在webview组件到该安装类接口的调用路径,则确定webview组件不可以调用该安装类接口,即外部应用无法通过webview组件使用该文件操作类接口,并在终端设备内加载插件或安装应用,表示该安装类接口不存在安全漏洞。

s502、对待测应用进行动态测试,获取动态测试过程中该高危特权接口拉取插件和应用的http流量。

其中,动态测试指在终端设备内操作该应用程序,或者,通过测试设备模仿用户使用该应用程序,测试设备包括自动化测试框架以及运行时流量抓取环境。此处需要测试的是安装类接口,因此,可通过测试设备自动模拟触发终端设备的应用程序下载插件或应用的逻辑,或者需测试人员参与交互,使用待测应用下载插件或应用的逻辑,以使应用程序执行下载安装插件或应用的操作,获取上述过程中安装类接口拉取的流量。

具体实施时,可记录动态测试过程中安装类接口拉取的所有流量,通过流量内的一些特定字段,识别出拉取插件和应用的http流量。若不存在拉取插件和应用的http流量,则表示该安装类接口无法从外部网络获取插件和应用,并加载插件或安装应用,所以表示该安装类接口不存在安全漏洞。

s503、判断拉取的http流量中是否包含请求参数,若否,则执行步骤s504,否则,执行步骤s505。

如果安装类接口拉取插件和应用的流量是http流量,且不包含任何请求参数,则可能存在被外部劫持的风险,存在安全漏洞。

s504、确定高危特权接口存在应用安装类安全漏洞。

s505、判断拉取的http流量中包含的请求参数是否为签名参数,若是,则执行步骤s506,否则,执行步骤s508。

其中,签名参数包括但不限于md5、sha、signature等类型的签名参数。

s506、判断签名参数对应的签名校验代码是否存在安全漏洞,若是,则执行步骤s507,否则,执行步骤s508。

具体实施时,可通过静态扫描待测应用的代码的方式定位签名参数对应的签名校验代码所在的区域,并进一步分析签名校验代码是否存在安全风险。例如,分析是否通过https流量进行签名校验,是否存在校验值被篡改的风险等,若通过https流量进行签名校验或者不存在校验值被篡改的风险,则确定该高危特权接口不存在应用安装类安全漏洞,否则确定该高危特权接口存在签名校验类安全漏洞。

s507、确定该高危特权接口存在签名校验类安全漏洞。

其中,签名校验类安全漏洞为应用安装类安全漏洞中的一种安全漏洞。

s508、确定该高危特权接口不存在应用安装类安全漏洞。

具备扩展插件功能或者安装应用的安装类接口是需要重点关注的,是远程代码执行风险的多发区,攻击者可通过安装类接口直接在终端设备内远程安装木马病毒,达到控制终端设备、窃取信息的目的。

通过图5所示的方法,可对待测应用中的webview组件内的安装类接口进行全面的漏洞检测,从而提醒开发者对安装类接口安全漏洞进行修复,防止攻击者通过安装类接口发起远程攻击。

具体实施时,可综合使用上述提供的检测流程,对待测应用中存在的各类高危特权接口进行全面的扫描检测,从而精准定位到具体的安全漏洞。

具体实施时,还可以记录下存在各类安全漏洞的高危特权接口所在的代码区域,以便后续展示给开发者,帮助开发者快速定位安全漏洞对应的代码区域。

本申请实施例的应用漏洞检测方法,根据不同业务逻辑中常见的高危特权接口,提供了多种检测流程,可检测出恶意文件操作、信息泄漏、恶意插件加载、恶意安装应用、签名校验漏洞等多种安全漏洞,从而得到更细粒度的安全漏洞检测结果,让开发者直观地意识到使用特权接口过程中存在各种安全漏洞,进而有针对性地对安全漏洞进行修复,保证移动跨平台应用中特权接口使用的安全性。此外,本申请实施例中提供的多种检测流程,可覆盖目前常用业务在调用特权接口时存在的安全漏洞,可广泛应用于针对各类应用的测试。

由于jsbridge提供了许多功能强大的特权接口,为了防止特权接口被滥用,通常会采用对特权接口进行权限保护和安全限制。但是,由于开发者安全意识薄弱,依旧存在着很多滥用jsbridge特权接口的案例,对于实施了安全防护机制的特权接口,大部分开发者并未很好的对这些特权接口实施安全保护措施。

为此,在上述任一实施方式的基础上,本申请实施例的应用漏洞检测方法还提出相应的安全机制突破方法,对于存在白名单防护机制的高危特权接口,尝试是否可绕过该白名单防护机制,以确定白名单防护机制是否存在安全漏洞。具体实施时,可通过测试设备模仿攻击者对高危特权接口进行攻击,以检测白名单防护机制是否存在安全漏洞,攻击的手段不限于利用白名单缺陷进行攻击、中间人攻击、xss漏洞攻击等。

参考图6,本申请实施例提供了一种应用漏洞检测方法,具体包括如下步骤:

s601、识别待测应用中包含的允许访问网页的关键特征。

s602、从与允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口。

s603、调用高危特权接口所属的预设高危特权接口类别对应的检测流程,检测高危特权接口存在的安全漏洞。

s604、检测待测应用中是否存在针对高危特权接口的白名单防护机制,若存在,则执行步骤s605,否则结束安全漏洞检测。

s605、检测白名单防护机制是否存在安全漏洞。

进一步地,参考图7,可通过如下方式对白名单防护机制进行安全漏洞检测:

s701、根据高危特权接口生成网页文件。

具体实施时,根据待检测的高危特权接口生成相应的网页文件,将生成的网页文件存储在相应的服务器中,以便在进行安全漏洞检测时,调用与该高危特权接口关联的webview组件访问服务器并从服务器中获取该生成的网页文件。

s702、调用与高危特权接口关联的webview组件访问网页文件。

s703、判断访问该网页文件时是否能成功调用该高危特权接口,若是,则执行步骤s704,否则执行步骤s705。

具体实施时,如果待测应用中存在针对该高危特权接口的白名单防护机制,由于生成的网页文件所在的测试服务器域名不在白名单防护机制中,所以无法成功调用高危特权接口。如果待测应用中不存在针对该高危特权接口的白名单防护机制,则可以通过网页调用与其关联的webview组件中的高危特权接口。

具体实施时,可通过静态分析,判断与高危特权接口关联的webview组件中是否重写了landroid/webkit/webviewclient;->shouldoverrideurlloading,以及重写的shouldoverrideurlloading函数是否有对url参数进行字符串模式匹配,若是,则可以确定该应用实施了针对该高危特权接口的白名单防护机制。

s704、确定高危特权接口存在缺少白名单防护机制的安全漏洞。

s705、识别待测应用中针对高危特权接口的白名单防护机制对应的代码。

具体实施时,可通过静态分析,在待测应用中定位针对高危特权接口的白名单防护机制对应的代码区域。例如,可根据”landroid/webkit/webviewclient;->shouldoverrideurlloading”字段、shouldoverrideurlloading函数,定位白名单防护机制对应的代码区域。

s706、检测白名单防护机制的识别模式是否正确,若是,则执行步骤s708,否则执行步骤s707。

具体实施时,可从回调函数中获取白名单防护机制的识别模式,并检测白名单防护机制的识别模式是否正确,检测白名单防护机制的识别模式是否正确的指标包括:匹配域名的正则表达式是否正确,是否提取了主机名作为模式判断,以及是否使用正确indexof等函数等。

s707、确定白名单防护机制的识别模式存在安全漏洞。

s708、检测白名单中的网站是否存在安全漏洞。

具体实施时,参考图8,可通过如下方式依次检测白名单中的每一个网站是否存在安全漏洞:

s801、检测白名单中的网站是否为http链接,若是,则执行步骤s803,否则执行步骤s802。

s802、利用web漏洞扫描器扫描该网站的域名是否存在xss攻击风险,若是,则执行步骤s804,否则,执行步骤s805。

s803、确定该网站对应的网址存在被劫持的风险。

s804、确定该网站存在安全漏洞。

s805、确定该网站不存在安全漏洞。

本申请实施例的应用漏洞检测方法,通过尝试突破为高危特权接口设置的安全防护机制,来检测白名单防护机制是否存在安全漏洞,提高开发者的安全防护意识,并协助开发者完成针对高危特权接口的白名单防护机制,提高待测应用防御攻击的能力。

在上述任一方法实施例的基础上,在完成安全漏洞的检测后,本申请实施例的应用漏洞检测方法还如下步骤:生成安全检测报告,该安全检测报告中包括检测到的每一项安全漏洞以及预先为每一项安全漏洞配置的修复建议和漏洞案例。

进一步地,安全检测报告中还可以包括各类安全漏洞的高危特权接口所在的代码区域,以协助开发者快速定位安全漏洞对应的代码区域。

具体实施时,安全检测报告可以以应用程序的包名或基于md5信息摘要算法计算的应用程序的md5值作为唯一标识,并将安全检测报告上传到云端平台,开发者可以通过应用程序的包名或md5值获取相关的安全检测报告。

本申请实施例的应用漏洞检测方法,在完成安全漏洞检测后,会记录待测应用中存在的高危特权接口的各类安全漏洞,并针对不同类别的安全漏洞提供相应的修复建议和漏洞案例,生成安全检测报告,能够让开发者直观、全面地掌握到待测应用中的高危特权接口存在的安全风险,并基于修复建议和漏洞案例,快速完成安全漏洞的修复。

如图9所示,基于与上述应用漏洞检测方法相同的发明构思,本申请实施例还提供了一种应用漏洞检测装置90,包括特征识别模块901、接口识别模块902和漏洞检测模块903。

特征识别模块901,用于识别待测应用中包含的允许访问网页的关键特征。

接口识别模块902,用于从与允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口。

漏洞检测模块903,用于调用高危特权接口所属的预设高危特权接口类别对应的检测流程,检测高危特权接口存在的安全漏洞。

可选地,特征识别模块901具体用于:若根据待测应用中的urlscheme接口的配置信息确定urlscheme接口可被外部应用远程调用,则确定urlscheme接口为关键特征;和/或若待测应用中包含预设功能且确定预设功能中存在允许访问网页的业务逻辑,则确定预设功能为关键特征,预设功能包括以下至少一种:浏览网页功能、聊天对话功能、扫描识别功能、消息推送功能。

可选地,漏洞检测模块903具体用于通过以下至少一种检测流程,检测高危特权接口存在的安全漏洞:

检测流程一、若高危特权接口为文件操作类接口,则检测webview组件是否可以调用高危特权接口;若webview组件可以调用高危特权接口,则判断与高危特权接口关联的代码区域中是否存在过滤畸形文件名的代码;若不存在过滤畸形文件名的代码,则确定高危特权接口存在文件操作类安全漏洞;

检测流程二、若高危特权接口为隐私信息获取类接口,则检测webview组件是否可获取高危特权接口获取的数据;若webview组件可获取高危特权接口获取的数据,则确定高危特权接口存在泄露隐私信息的安全漏洞;

检测流程三、若高危特权接口为安装类接口,则检测webview组件是否可以调用高危特权接口;若webview组件可以调用高危特权接口,则对待测应用进行动态测试,获取动态测试过程中高危特权接口拉取插件和应用的http流量;若拉取的http流量中不包含请求参数,则确定高危特权接口存在应用安装类安全漏洞;若拉取的http流量中包含签名参数,则分析签名参数对应的签名校验代码是否存在安全漏洞,若存在,则确定高危特权接口存在签名校验类安全漏洞。

可选地,漏洞检测模块903,还用于根据高危特权接口生成网页文件,调用与高危特权接口关联的webview组件访问网页文件,若访问网页文件时能成功调用高危特权接口,则确定高危特权接口存在缺少白名单防护机制的安全漏洞。

可选地,漏洞检测模块904还用于:

若访问网页文件时不能成功调用高危特权接口,则识别待测应用中针对高危特权接口的白名单防护机制对应的代码,并检测白名单防护机制的识别模式是否正确;

若不正确,则确定白名单防护机制的识别模式存在安全漏洞;

若正确,则检测白名单中的网站是否存在安全漏洞。

可选地,本申请实施例的应用漏洞检测装置90还包括报告生成模块,用于生成安全检测报告,安全检测报告中包括检测到的每一项安全漏洞以及预先为每一项安全漏洞配置的修复建议和漏洞案例。

本申请实施例提的应用漏洞检测装置与上述应用漏洞检测方法采用了相同的发明构思,能够取得相同的有益效果,在此不再赘述。

基于与上述应用漏洞检测方法相同的发明构思,本申请实施例还提供了一种电子设备,该电子设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(personaldigitalassistant,pda)、服务器等。如图10所示,该电子设备100可以包括处理器1001和存储器1002。

处理器1001可以是通用处理器,例如中央处理器(cpu)、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器1002作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器1002还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

本申请实施例提供了一种计算机可读存储介质,用于储存为上述电子设备所用的计算机程序指令,其包含用于执行上述应用漏洞检测方法的程序。

上述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nandflash)、固态硬盘(ssd))等。

以上,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本申请实施例的方法,不应理解为对本申请实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本申请实施例的保护范围之内。

技术特征:

1.一种应用漏洞检测方法,其特征在于,包括:

识别待测应用中包含的允许访问网页的关键特征;

从与所述允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口;

调用所述高危特权接口所属的预设高危特权接口类别对应的检测流程,检测所述高危特权接口存在的安全漏洞。

2.根据权利要求1所述的方法,其特征在于,所述识别待测应用中包含的允许访问网页的关键特征,具体包括:

若根据所述待测应用中的urlscheme接口的配置信息确定所述urlscheme接口可被外部应用远程调用,则确定所述urlscheme接口为所述关键特征;和/或

若所述待测应用中包含预设功能且确定所述预设功能中存在允许访问网页的业务逻辑,则确定所述预设功能为所述关键特征,所述预设功能包括以下至少一种:浏览网页功能、聊天对话功能、扫描识别功能、消息推送功能。

3.根据权利要求1所述的方法,其特征在于,通过以下至少一种检测流程,检测所述高危特权接口存在的安全漏洞:

检测流程一、若所述高危特权接口为文件操作类接口,则检测所述webview组件是否可以调用所述高危特权接口;若所述webview组件可以调用所述高危特权接口,则判断与所述高危特权接口关联的代码区域中是否存在过滤畸形文件名的代码;若不存在过滤畸形文件名的代码,则确定所述高危特权接口存在文件操作类安全漏洞;

检测流程二、若所述高危特权接口为隐私信息获取类接口,则检测所述webview组件是否可获取所述高危特权接口获取的数据;若所述webview组件可获取所述高危特权接口获取的数据,则确定所述高危特权接口存在泄露隐私信息的安全漏洞;

检测流程三、若所述高危特权接口为安装类接口,则检测所述webview组件是否可以调用所述高危特权接口;若所述webview组件可以调用所述高危特权接口,则对所述待测应用进行动态测试,获取动态测试过程中所述高危特权接口拉取插件和应用的http流量;若拉取的http流量中不包含请求参数,则确定所述高危特权接口存在应用安装类安全漏洞;若拉取的http流量中包含签名参数,则分析所述签名参数对应的签名校验代码是否存在安全漏洞,若存在,则确定所述高危特权接口存在签名校验类安全漏洞。

4.根据权利要求1至3中任一所述的方法,其特征在于,还包括:

根据所述高危特权接口生成网页文件;

调用与所述高危特权接口关联的webview组件访问所述网页文件,若访问所述网页文件时能成功调用所述高危特权接口,则确定所述高危特权接口存在缺少白名单防护机制的安全漏洞。

5.根据权利要求4所述的方法,其特征在于,还包括:

若访问所述网页文件时不能成功调用所述高危特权接口,则识别所述待测应用中针对所述高危特权接口的白名单防护机制对应的代码,并检测所述白名单防护机制的识别模式是否正确;

若不正确,则确定所述白名单防护机制的识别模式存在安全漏洞;

若正确,则检测白名单中的网站是否存在安全漏洞。

6.根据权利要求1至3中任一所述的方法,其特征在于,还包括:

生成安全检测报告,所述安全检测报告中包括检测到的每一项安全漏洞以及预先为每一项安全漏洞配置的修复建议和漏洞案例。

7.一种应用漏洞检测装置,其特征在于,包括:

特征识别模块,用于识别待测应用中包含的允许访问网页的关键特征;

接口识别模块,用于从与所述允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口;

漏洞检测模块,用于调用所述高危特权接口所属的预设高危特权接口类别对应的检测流程,检测所述高危特权接口存在的安全漏洞。

8.根据权利要求7所述的装置,其特征在于,所述特征识别模块,具体用于:

若根据所述待测应用中的urlscheme接口的配置信息确定所述urlscheme接口可被外部应用远程调用,则确定所述urlscheme接口为所述关键特征;和/或

若所述待测应用中包含预设功能且确定所述预设功能中存在允许访问网页的业务逻辑,则确定所述预设功能为所述关键特征,所述预设功能包括以下至少一种:浏览网页功能、聊天对话功能、扫描识别功能、消息推送功能。

9.根据权利要求7所述的装置,其特征在于,所述漏洞检测模块,具体用于通过以下至少一种检测流程,检测所述高危特权接口存在的安全漏洞:

检测流程一、若所述高危特权接口为文件操作类接口,则检测所述webview组件是否可以调用所述高危特权接口;若所述webview组件可以调用所述高危特权接口,则判断与所述高危特权接口关联的代码区域中是否存在过滤畸形文件名的代码;若不存在过滤畸形文件名的代码,则确定所述高危特权接口存在文件操作类安全漏洞;

检测流程二、若所述高危特权接口为隐私信息获取类接口,则检测所述webview组件是否可获取所述高危特权接口获取的数据;若所述webview组件可获取所述高危特权接口获取的数据,则确定所述高危特权接口存在泄露隐私信息的安全漏洞;

检测流程三、若所述高危特权接口为安装类接口,则检测所述webview组件是否可以调用所述高危特权接口;若所述webview组件可以调用所述高危特权接口,则对所述待测应用进行动态测试,获取动态测试过程中所述高危特权接口拉取插件和应用的http流量;若拉取的http流量中不包含请求参数,则确定所述高危特权接口存在应用安装类安全漏洞;若拉取的http流量中包含签名参数,则分析所述签名参数对应的签名校验代码是否存在安全漏洞,若存在,则确定所述高危特权接口存在签名校验类安全漏洞。

10.根据权利要求7至9中任一所述的装置,其特征在于,所述漏洞检测模块,还用于:

根据所述高危特权接口生成网页文件;

调用与所述高危特权接口关联的webview组件访问所述网页文件,若访问所述网页文件时能成功调用所述高危特权接口,则确定所述高危特权接口存在缺少白名单防护机制的安全漏洞。

11.根据权利要求10所述的装置,其特征在于,所述漏洞检测模块,还用于:

若访问所述网页文件时不能成功调用所述高危特权接口,则识别所述待测应用中针对所述高危特权接口的白名单防护机制对应的代码,并检测所述白名单防护机制的识别模式是否正确;

若不正确,则确定所述白名单防护机制的识别模式存在安全漏洞;

若正确,则检测白名单中的网站是否存在安全漏洞。

12.根据权利要求7至9任一所述的装置,其特征在于,所述装置还包括报告生成模块,用于生成安全检测报告,所述安全检测报告中包括检测到的每一项安全漏洞以及预先为每一项安全漏洞配置的修复建议和漏洞案例。

13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一项所述方法的步骤。

14.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时实现权利要求1至6任一项所述方法的步骤。

技术总结

本申请涉及计算机技术领域,公开了一种应用漏洞检测方法、装置、电子设备及存储介质,所述方法包括:识别待测应用中包含的允许访问网页的关键特征;从与所述允许访问网页的关键特征关联的webview组件中,识别出属于预设高危特权接口类别的高危特权接口;调用所述高危特权接口所属的预设高危特权接口类别对应的检测流程,检测所述高危特权接口存在的安全漏洞。本申请实施例提供的应用漏洞检测方法、装置、电子设备及存储介质,可以快速有效地检测出使用特权接口过程中存在的安全漏洞,进而有针对性地指导应用开发者对安全漏洞进行修复,保证特权接口使用的安全性。

技术研发人员:李宇翔;钱文祥;伍惠宇

受保护的技术使用者:腾讯科技(深圳)有限公司

技术研发日:.10.30

技术公布日:.02.28

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。