【技术实现步骤摘要】
一种针对Java Web应用的注入型漏洞检测方法及系统
[0001]本专利技术涉及计算机网络安全领域,是针对Java Web应用的注入型漏洞检测系统,更具体地,是一种基于代码属性图的注入型漏洞检测方法及系统。
技术介绍
[0002]随着网络技术的飞速发展,Web应用在社会各个行业都有着广泛的应用,无论是企业业务系统、教育行业的各种应用系统等专业软件,还有如今火爆的短视频平台、外卖平台、网购平台等都使用了Web应用。Java一度被称为是应用最广泛的编程语言,广泛应用于Web应用的服务端编程。JetBrains公司2021年度统计报告指出,在我国,Java语言是使用最广泛的编程语言。在web应用开发方面,Java作为服务端编程语言,由于它跨一次编译随处运行的跨平台特性,更是受到不少开发者的青睐。根据360网络空间测绘引擎的统计数据可知,Java Web应用广泛存在于网络空间中,其中我国共有528,364个网站使用Java进行开发。
[0003]随着Web应用广泛使用,越来越多的安全问题也随之出现。Forrester公司的2021年度《应用安全现状报告》指出虽然近年来人们对应用程序的依赖稳步增强,但Web应用始终是最常见的外部攻击对象,其次才是软件程序。同年,开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)公布了最新的OWASP Top 10漏洞名单,该漏洞名单记录了目前应用程序中危害最严重的10个安全漏洞。从2017年至2021年,注入型漏洞一
【技术保护点】
【技术特征摘要】
1.一种针对Java Web应用的注入型漏洞检测方法,其特征在于,包括以下步骤:1)对Java Web应用程序包解析为Jimple中间表示形式,提取类对象之间的继承关系和接口实现关系以及类方法之间的别名关系,并对类方法Source、Sink和无关函数进行标记,根据提取的关系和标记的函数构建类关系图;2)针对类关系图,以Source函数为起始节点进行广度优先的污点分析,根据语句类型、被调用函数的返回值类型、函数类型进行污点传播,并将函数调用间的污点传播信息存储到Call边中;该Call边由调用函数指向被调用函数和与其具有别名关系的函数,并且针对被指向的函数继续进行污点分析,直到分析完全部函数,最终构建出局部函数调用图;3)污点分析结束后,获取局部函数调用图中所有的Sink节点,并针对Sink节点进行建栈操作,然后基于栈结构进行调用链挖掘;在调用链挖掘过程中,使用Sink节点中记录的初始污点信息以及指向Sink节点的Call边中记录的污点传播信息进行剪枝操作,获得可控的Call边和该Call边中起始节点的污点参数信息;根据起始节点的污点参数信息继续向后追溯,获取指向起始节点的可控Call边,并继续向后追溯,直到追溯到Source节点为止,然后输出挖掘的调用链即注入型漏洞信息。2.如权利要求1所述的方法,其特征在于,步骤1)在对类方法进行标记之前,构建先验知识规则库,其包括Source规则、Sink规则和剪枝规则;根据Source规则标记Source函数,根据Sink规则标记Sink函数,根据剪枝规则标记无关函数。3.如权利要求1所述的方法,其特征在于,步骤1)中,提取类对象之间的接口实现关系和继承关系的步骤包括:获取JavaWeb应用程序内所有的SootClass对象;解析SootClass对象,获取类的属性信息、父类信息、接口信息并存储到ClassReference类对象中;根据ClassReference类对象的父类信息、接口信息依次提取继承关系和接口实现关系;和/或提取类方法之间的别名关系的步骤包括:通过目标方法签名在父类中递归式搜索同名方法,确定类方法之间的别名关系。4.如权利要求3所述的方法,其特征在于,步骤1)中构建类关系图的步骤包括:对SootClass对象中存储的所有SootMethod对象逐个提取代码语义信息,将信息存储到MethodReference类对象中,构建ClassReference类对象与MethodReference类对象之间的Has边;根据提取的继承关系在两个类之间建立Extend边;根据提取的接口实现关系在两个类对象之间建立Extend边;根据类方法之间的别名关系,在两个方法之间建立Alias边;由上述的Has边、Extend边、Alias边构建类关系图。5.如权利要求1所述的方法,其特征在于,步骤1)中在标记完成后,将Source函数存储到WorkList列表中,然后在步骤2)中以WorkList列表中的Source函数为起始节点进行广度优先的污点分析,对Source节点进行数据流分析。6.如权利要求1所述的方法,其特征在于,步骤2)中根据语句类型进行污点传播的步骤包括:
对于代码片段中的语句,首先判断该语句的类型;如果语句是非调用类型,则直接通过分析表达式运算进行污点传播,记录污点参数的污点来源信息;如果语句是调用类型,则判断参数中是否存在污点参数,若不存在污点参数,则继续分析下条语句。7.如权利要求6所述的方法,其特征在于,步骤2)中,根据被调用函数的返回值类型、函数类型进行污点传播的步骤包括:对于调用类型的语句,如果参数中存在污点参数且函数不为Sink函数和过滤函数,则根据被调用函数的返回值类型以及函数类型进行污点传播;如果返回值类型为字符串、类对象、字节数组类...
【专利技术属性】
技术研发人员:刘潮歌,李香龙,刘奇旭,陈星辰,刘清越,谭儒,汪旭童,尹捷,
申请(专利权)人:中国科学院信息工程研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。