[发明专利]数据流获取方法、获取装置、计算机设备及存储介质在审
申请号: | 201911214846.4 | 申请日: | 2019-12-02 |
公开(公告)号: | CN111858294A | 公开(公告)日: | 2020-10-30 |
发明(设计)人: | 王一岚;张煜昆;潘烁宇 | 申请(专利权)人: | 北京嘀嘀无限科技发展有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 杨泽;刘芳 |
地址: | 100193 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据流 获取 方法 装置 计算机 设备 存储 介质 | ||
本发明提出了一种数据流获取方法、数据流获取装置、计算机设备及计算机可读存储介质。其中,数据流获取方法包括:加载配置文件,获取配置文件中存在的漏洞方法;根据漏洞方法,生成扫描规则代码;执行扫描规则代码,以获取漏洞方法的数据流。本发明提供一种数据流获取方法,针对配置文件中可能存在的漏洞方法,生成扫描规则代码,进而执行该扫描规则代码以获取漏洞方法在Java代码中的数据流。从而避免数据流截断,确保配置文件使Java代码减少的同时,提高漏洞召回率与精准率。
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种数据流获取方法、数据流获取装置、计算机设备及计算机可读存储介质。
背景技术
静态分析安全测试是指不运行被测程序本身,仅通过分析或者检查源程序的语法、结构、过程、接口等来检查被测程序中的安全漏洞,它的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。针对Java语言的静态分析中,存在一个同时影响漏洞(漏洞是指计算机系统安全方面的缺陷,使得系统或其应用数据的保密性,完整性,可用性,访问控制等面临威胁)召回率与精准率的问题:目前大部分Java项目都会使用成熟的第三方框架,通过配置文件实现所需功能,减少实际Java代码。这样给静态分析带来一个严重问题——由于静态分析只针对Java代码,配置文件使Java代码减少的同时,也导致了静态分析时无法分析到减少的这些Java代码,导致数据流被截断。
带有数据流分析功能的Java静态分析工具工作流程如图1所示,语言分析引擎102中包括生成AST、控制流生成、数据流生成,规则分析引擎104中包括加载全部扫描规则、运行扫描规则、生成结果。语言分析引擎102生成的中间结构树与配置文件加载后的结果是分离的,扫描规则在程序中或在扫描配置文件中写定,在规则分析引擎104开始执行扫描规则前全部加载。其中,控制流是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径,它用图的形式表示一个过程内所有基本块执行的可能流向,也能反映一个过程的实时执行过程。数据流是一组有序、有起点和终点的字节的数据序列,包括输入流和输出流。
现有的静态分析工具,扫描规则在扫描前已全部进行加载,因为语言分析引擎102在生成数据流时无法同时跟踪到配置文件中的内容,在漏洞数据流涉及配置文件情况下,数据流会被截断。
这里以Mybatis框架的SQL注入为例:
MyBatis支持两种参数符号,一种是#,另一种是$,在使用$的情况下可能存在SQL注入漏洞。
xml文件示例:
select id=selectPersonparameterType=StringresultType=Hashmap
SELECT*FROM PERSON WHERE name=${name}
/select
规则分析引擎104可以通过正则搜索select语句中的$符号来确定可能存在SQL注入,但由于无法确定selectPerson方法在程序中是否真正被调用,也无法跟踪name参数是否可被用户控制,所以该SQL注入很可能是误报。
因此,如何避免数据流被截断成为亟待解决的问题。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的一个方面在于提出了一种数据流获取方法。
本发明的另一个方面在于提出了一种数据流获取装置。
本发明的再一个方面在于提出了一种计算机设备。
本发明的又一个方面在于提出了一种计算机可读存储介质。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京嘀嘀无限科技发展有限公司,未经北京嘀嘀无限科技发展有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911214846.4/2.html,转载请声明来源钻瓜专利网。