应用程序的漏洞挖掘方法及装置制造方法及图纸

技术编号:37157060 阅读:28 留言:0更新日期:2023-04-06 22:19
本申请涉及网络安全技术领域,提供一种应用程序的漏洞挖掘方法及装置。所述方法包括:对应用程序的源代码进行静态分析,确定安全漏洞;从所述安全漏洞对应的污点源的类信息中,获取注解内容和方法参数,以根据所述注解内容和所述方法参数,生成测试链接;根据所述测试链接进行漏洞请求测试,确定所述安全漏洞的验证结果。本申请实施例提供的应用程序的漏洞挖掘方法,能够提高挖掘出的应用程序的漏洞的准确性,减少漏洞误报率。减少漏洞误报率。减少漏洞误报率。

【技术实现步骤摘要】
应用程序的漏洞挖掘方法及装置


[0001]本申请涉及网络安全
,具体涉及一种应用程序的漏洞挖掘方法及装置。

技术介绍

[0002]为确保应用程序的安全性,会在应用上线前对应用程序进行应用程序的漏洞挖掘,以检测出其中存在的漏洞。相关技术中,对应用程序进行应用程序的漏洞挖掘的方式,通常是对应用程序的源代码进行静态分析,以挖掘出应用程序的漏洞。然而,由于静态分析时应用程序的代码并没有运行,因此若代码中存在多个模块或者组件的调用关系时,可能会在静态分析中被误判断为应用程序的漏洞,导致静态分析挖掘出的漏洞误报率高。

技术实现思路

[0003]本申请旨在至少解决相关技术中存在的技术问题之一。为此,本申请提出一种应用程序的漏洞挖掘方法,能够提高挖掘出的应用程序的漏洞的准确性,减少漏洞误报率。
[0004]本申请还提出一种应用程序的漏洞挖掘装置。
[0005]本申请还提出一种电子设备。
[0006]本申请还提出一种计算机可读存储介质。
[0007]根据本申请第一方面实施例的应用程序的漏洞挖掘方法,包括:
[0008]对应用程序的源代码进行静态分析,确定安全漏洞;
[0009]从所述安全漏洞对应的污点源的类信息中,获取注解内容和方法参数,以根据所述注解内容和所述方法参数,生成测试链接;
[0010]根据所述测试链接进行漏洞请求测试,确定所述安全漏洞的验证结果。
[0011]本申请实施例提供的应用程序的漏洞挖掘方法,通过对应用程序的源代码进行静态分析,挖掘出安全漏洞后,从安全漏洞对应的污点源的类信息中获取注解内容和方法参数,以利用污点源的注解内容和方法参数,来生成可准确覆盖安全漏洞所处的位置的测试链接,以通过该测试链接的漏洞请求测试来对挖掘出的安全漏洞进行验证,从而有效地验证该安全漏洞是否存在,进而能够提高挖掘出的应用程序的漏洞的准确性,减少漏洞误报率。
[0012]根据本申请的一个实施例,对应用程序的源代码进行静态分析,确定安全漏洞,包括:
[0013]对所述源代码进行解析,获取所述源代码的抽象语法树;
[0014]对所述抽象语法树的各类声明进行遍历,从各所述类声明中,获取存在Contro l l er注解的目标声明,以从所述抽象语法树的各节点中,获取存在所述目标声明的各目标节点;
[0015]将存在Contro l l er方法参数的所述目标节点作为所述污点源,以所述污点源为起点,对各所述目标节点进行遍历,获取所述污点源的传播路径;
[0016]检测所述传播路径中调用的过滤函数,根据所述过滤函数的调用检测结果,确定
所述安全漏洞。
[0017]根据本申请的一个实施例,根据所述过滤函数的调用检测结果,确定所述安全漏洞,包括:
[0018]所述传播路径中当前目标节点的子目标节点不存在所述过滤函数的调用,且所述子目标节点调用了入参可控的漏洞函数,确定存在所述安全漏洞。
[0019]根据本申请的一个实施例,根据所述测试链接进行漏洞请求测试,确定所述安全漏洞的验证结果,包括:
[0020]调用所述测试链接,请求预设的dns l og地址;
[0021]所述dns l og地址未接收到根据所述测试链接生成的请求,确定所述验证结果为所述安全漏洞存在。
[0022]根据本申请的一个实施例,还包括:
[0023]获取s i nk埋点在所述测试链接调用时的堆栈信息;
[0024]确定所述堆栈信息存在所述污点源的污点标记,生成所述安全漏洞的告警信息。
[0025]根据本申请的一个实施例,获取s i nk埋点的堆栈信息,包括:
[0026]从所述源代码的各预设埋点中,获取被所述请求触发的各目标埋点;
[0027]确定所述目标埋点包括所述s i nk埋点,获取所述s i nk埋点的堆栈信息。
[0028]根据本申请的一个实施例,各预设埋点由对各方法名为start,且方法描述为()Ljava/l ang/Process;的类进行埋点后得到。
[0029]根据本申请第二方面实施例的应用程序的漏洞挖掘装置,包括:
[0030]静态分析模块,用于对应用程序的源代码进行静态分析,确定安全漏洞;
[0031]链接生成模块,用于从所述安全漏洞对应的污点源的类信息中,获取注解内容和方法参数,以根据所述注解内容和所述方法参数,生成测试链接;
[0032]动态分析模块,用于根据所述测试链接进行漏洞请求测试,确定所述安全漏洞的验证结果。
[0033]根据本申请第三方面实施例的电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述计算机程序时实现上述任一实施例所述的应用程序的漏洞挖掘方法。
[0034]根据本申请第四方面实施例的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的应用程序的漏洞挖掘方法。
[0035]根据本申请第五方面实施例的计算机程序产品,包括:所述计算机程序被处理器执行时实现如上述任一实施例所述的应用程序的漏洞挖掘方法。
[0036]本申请实施例中的上述一个或多个技术方案,至少具有如下技术效果之一:
[0037]通过对应用程序的源代码进行静态分析,挖掘出安全漏洞后,从安全漏洞对应的污点源的类信息中获取注解内容和方法参数,以利用污点源的注解内容和方法参数,来生成可准确覆盖安全漏洞所处的位置的测试链接,以通过该测试链接的漏洞请求测试来对挖掘出的安全漏洞进行验证,从而有效地验证该安全漏洞是否存在,进而能够提高挖掘出的应用程序的漏洞的准确性,减少漏洞误报率。
[0038]进一步的,通过在利用静态分析,挖掘出安全漏洞后,再调用由从污点源的类信息中提取的注解内容和方法参数生成的测试链接,来请求预设的dns l og地址,以根据请求
结果来验证安全漏洞是否存在,从而进一步提高挖掘出的安全漏洞的准确性。
[0039]进一步的,通过在调用测试链接后,再基于调用测试链接时s i nk埋点的堆栈信息的动态代码分析方式,来判断堆栈信息是否存在污点源的污点标记,并在确定堆栈信息存在污点源的污点标记时,再生成安全漏洞的告警信息。这样,便可实现通过查看s i nk埋点的堆栈信息,来验证污点源引入的数据是否能够不经无害处理而直接传播到污点汇聚点,进一步提高挖掘得到的安全漏洞的准确性,减少漏洞误报率。
附图说明
[0040]为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041]图1是本申请实施例提供的应用程序的漏洞挖掘方法的流程示意图;
[0042]图2是对图1的应用程序的漏洞挖掘方法中源代码的静态分析作进一步细化的流本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种应用程序的漏洞挖掘方法,其特征在于,包括:对应用程序的源代码进行静态分析,确定安全漏洞;从所述安全漏洞对应的污点源的类信息中,获取注解内容和方法参数,以根据所述注解内容和所述方法参数,生成测试链接;根据所述测试链接进行漏洞请求测试,确定所述安全漏洞的验证结果。2.根据权利要求1所述的应用程序的漏洞挖掘方法,其特征在于,对应用程序的源代码进行静态分析,确定安全漏洞,包括:对所述源代码进行解析,获取所述源代码的抽象语法树;对所述抽象语法树的各类声明进行遍历,从各所述类声明中,获取存在Controller注解的目标声明,以从所述抽象语法树的各节点中,获取存在所述目标声明的各目标节点;将存在Controller方法参数的所述目标节点作为所述污点源,以所述污点源为起点,对各所述目标节点进行遍历,获取所述污点源的传播路径;检测所述传播路径中调用的过滤函数,根据所述过滤函数的调用检测结果,确定所述安全漏洞。3.根据权利要求2所述的应用程序的漏洞挖掘方法,其特征在于,根据所述过滤函数的调用检测结果,确定所述安全漏洞,包括:所述传播路径中当前目标节点的子目标节点不存在所述过滤函数的调用,且所述子目标节点调用了入参可控的漏洞函数,确定存在所述安全漏洞。4.根据权利要求1所述的应用程序的漏洞挖掘方法,其特征在于,根据所述测试链接进行漏洞请求测试,确定所述安全漏洞的验证结果,包括:调用所述测试链接,请求预设的dnslog地址;所述dnslog地址接收到根据所述测试链接生...

【专利技术属性】
技术研发人员:何翔宇李闪闪郭勇生张黎元
申请(专利权)人:北京天融信科技有限公司北京天融信软件有限公司
类型:发明
国别省市:

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

1