CN115391793B - 一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质 - Google Patents
一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质 Download PDFInfo
- Publication number
- CN115391793B CN115391793B CN202211314916.5A CN202211314916A CN115391793B CN 115391793 B CN115391793 B CN 115391793B CN 202211314916 A CN202211314916 A CN 202211314916A CN 115391793 B CN115391793 B CN 115391793B
- Authority
- CN
- China
- Prior art keywords
- web application
- target web
- flowdroid
- vulnerability detection
- tool
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质,属于计算机漏洞检测技术领域。所述系统包括:实时监控模块,用于在检测到目标Web应用的内容发生变化时,向所述中央服务器发送所述目标Web应用变化的上下文信息;中央服务器,用于在接收到所述目标Web应用变化的上下文信息后,确定所述目标Web应用的最新版本,并将所述目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中;漏洞检测模块,根据所述消息队列中的URL地址,下载所述目标Web应用的目标项目,并基于所述当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果。本申请旨在增强Web应用程序的安全性。
Description
技术领域
本申请实施例涉及计算机漏洞检测技术领域,具体而言,涉及一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质。
背景技术
在近几十年中,Web应用程序的安全性变得越来越重要,越来越多的企业基于Web的应用程序处理敏感的金融、医疗等数据,如果这些数据被泄露,会对系统安全造成严重威胁,甚至导致数千万的经济损失。
Imperva应用防御中心(Imperva Application Defense Center)对来自于电子商务、在线银行等250多个Web应用程序网站进行调研,发现至少92%的Web应用程序受到某种形式的黑客攻击。因此,对于Web应用程序受到黑客攻击的检测与防御至关重要。
目前,Java已经成为构建大型复杂的Web系统的首选语言,J2EE等平台也促进了大型Web应用程序(如购物网站、银行网站等)的发展,典型的Web应用程序接受来自用户浏览器的输入,并与后端数据库交互以服务于用户请求,J2EE提供了servlet和Java ServerPage(JSP)的抽象,使一些常见任务易于编码。
然而,在编码的过程中,有可能出现逻辑编程错误,从而导致SQL注入和目录遍历等漏洞,而一个简单的编程错误会使J2EE Web应用程序更容易受到未经授权的数据访问、未经授权的数据更新或删除,从而引起J2EE Web应用程序遭到拒绝服务等攻击,为系统安全带来巨大隐患。
发明内容
本申请实施例提供一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质,旨在增强Web应用程序的安全性。
第一方面,本申请实施例提供一种基于FlowDroid工具的实时漏洞检测系统,所述系统包括:实时监控模块、中央服务器以及漏洞检测模块,其中:
所述实时监控模块,用于在检测到目标Web应用的内容发生变化时,向所述中央服务器发送所述目标Web应用变化的上下文信息;
所述中央服务器,用于在接收到所述目标Web应用变化的上下文信息后,确定所述目标Web应用的最新版本,并将所述目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中;
所述漏洞检测模块,用于根据所述消息队列中的URL地址,下载所述目标Web应用的目标项目,并基于所述当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果。
可选地,所述系统还包括后台管理模块;
所述后台管理模块,用于实时获取并显示检测过程的进度,以及显示所述变化后的目标Web应用的漏洞检测结果。
可选地,所述基于FlowDroid工具的实时漏洞检测系统还包括文件服务器;
所述文件服务器,用于存储由所述实时监控模块在检测到所述目标Web应用的内容发生变化时上传的所述目标Web应用变化的文件内容,以及存储所述目标Web应用当前的最新版本;还用于向中央服务器提供用于下载所述目标Web应用的最新版本的URL地址;
所述中央服务器包括增量计算单元,所述增量计算单元用于在接收到所述上下文信息后,在所述文件服务器上下载所述目标Web应用所有变化的文件内容以及所述目标Web应用当前的最新版本,通过增量计算确定所述目标Web应用变化后的最新版本,并将所述目标Web应用变化后的最新版本上传至所述文件服务器进行存储。
可选地,所述中央服务器还包括:
安全规则收集单元,用于在所述中央服务器接收到所述目标Web应用变化的上下文信息后,在博客与公共漏洞和暴露中记录的J2EE Web应用程序漏洞中,收集当前检测的安全规则。
可选地,所述漏洞检测模块包括:
编译子模块,用于将所述目标Web应用的J2EE Web应用程序编译为Jimple文件;
检测子模块,用于基于所述当前检测的安全规则,通过改进的FlowDroid工具对所述目标Web应用的Jimple文件进行漏洞检测,生成变化后的目标Web应用的漏洞检测结果,并将所述漏洞检测结果以及将所述当前检测的安全规则中使用了的安全规则通过所述消息队列返回所述中央服务器;其中,所述漏洞检测结果包括漏洞类型与错误路径。
可选地,所述编译子模块包括:
第一编译单元,用于将所述目标Web应用的JSP文件编译成Java代码;
第二编译单元,用于将编译成的Java代码编译成Java字节码;
第三编译单元,用于将所述Java字节码编译成Jimple文件。
可选地,所述第二编译单元包括:
第一编译子单元,用于对于所述Java代码中的原始Java源代码,直接检索存储在默认路径中的Java字节码,或通过自动化工具Maven执行Java字节码的编译过程;
第二编译子单元,用于对于所述Java代码中的Jasper生成的Java代码,通过javaccompile命令编译生成对应的Java字节码。
可选地,所述漏洞检测模块还包括:
改进FlowDroid模块,用于定义FlowDroid工具应用于J2EE Web应用程序的分析入口点;还用于根据污染分析原理,利用污染源、污染汇聚点以及清洗器构建FlowDroid工具检测J2EE Web应用程序的安全规则,以涵盖多种类型的Web应用程序漏洞,其中,所述多种类型的Web应用程序漏洞包括:SQL注入、目录遍历和远端命令执行。
第二方面,本申请实施例提供一种基于FlowDroid工具的实时漏洞检测方法,所述方法包括:
在目标Web应用的内容发生变化时,确定所述目标Web应用的最新版本,并将所述目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中;
根据所述消息队列中的URL地址,下载所述目标Web应用变化后的目标项目,并基于所述当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如实施例第二方面所述的基于FlowDroid工具的实时漏洞检测方法。
有益效果:
当实时监控模块在检测到目标Web应用的内容发生变化时,向中央服务器发送目标Web应用变化的上下文信息;中央服务器接收到目标Web应用变化的上下文信息后,确定目标Web应用的最新版本,并将目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中;漏洞检测模块,根据消息队列中的URL地址下载目标Web应用的目标项目,并基于当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果。
FlowDroid工具是为Android应用程序缺陷检测所设计的一款静态污染分析工具,可以发现程序中更深层次的语义错误,本申请通过对FlowDroid工具进行改进并应用于对变化后的目标Web应用进行漏洞检测,同时实时监测目标Web应用的变化,自动对发生变化的目标Web应用进行漏洞检测,减少由于编程错误而引起的J2EE Web应用程序遭到攻击,增强Web应用程序的安全性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提出的基于FlowDroid工具的实时漏洞检测系统的功能模块图;
图2是本申请一实施例提出的基于FlowDroid工具的实时漏洞检测方法的操作流程图;
图3是本申请一实施例提供的基于FlowDroid工具的实时漏洞检测方法的步骤流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
Java语言与J2EE等平台促进了大型Web应用程序(如购物网站、银行网站等)的发展,同时随着数据安全意识的增强,Web应用程序的安全性变得越来越重要,调研发现至少92%的Web应用程序受到了某种形式的黑客攻击。Web应用程序受到攻击的原因很多,例如在编码的过程中出现的逻辑编程错误会导致SQL注入和目录遍历等漏洞,而一个简单的编程错误或漏洞会使J2EE Web应用程序更容易受到未经授权的数据访问、未经授权的数据更新或删除,从而引起J2EE Web应用程序遭到拒绝服务等攻击,为系统安全带来巨大隐患。
为了保障J2EE Web应用程序的安全,可以在Web应用程序的内容进行编码后进行漏洞检测,目前市场上有许多用于检测J2EE Web应用程序漏洞的工具,虽然这些工具的分析速度很快,但它们只对源代码进行分析,因此它们可以检测JSP或Java源文件中预定义的模式错误,但是由于Java字节码中的语义错误需要工具更多地理解程序语义,而目前检测J2EE Web应用程序的工具很难发掘基于Java字节码中的语义错误;同时,与其他软件程序不同的是,Web应用程序时刻会面临外部攻击的威胁,因此对于Web应用的安全性的要求更高,需要对Web应用进行实时的、自动化的漏洞检测,但是现有的检测工具缺乏实时自动化检测的支持。
FlowDroid是一款基于Java字节码进行程序语义分析的静态污染分析工具,可以帮助发现程序中更深层次的语义错误,但是它最初的设计是用于发现Android应用程序漏洞,本方法提供了一种基于FlowDroid工具的实时漏洞检测系统,可以将用于Android应用程序漏洞的FlowDroid工具应用于Web应用程序的漏洞检测过程,并且可以对Web应用进行实时自动化的漏洞检测。
参照图1,示出了本申请实施例提供的基于FlowDroid工具的实时漏洞检测系统的功能模块图,参照图2,示出了本申请实施例提供的基于FlowDroid工具的实时漏洞检测系统的操作流程图,所述系统包括实时监控模块100、中央服务器200以及漏洞检测模块300,具体地:
所述实时监控模块100,用于在检测到目标Web应用的内容发生变化时,向所述中央服务器200发送所述目标Web应用变化的上下文信息。
示例地,实时监控模块100可以对目标Web应用的项目所在的文件目录进行实时监控,当目标Web应用的项目的文件内容出现变化时,例如出现文件内容的增加、修改和删除时,表明目标Web应用的内容发生了变化,需要对该变化后的目标Web应用进行漏洞检测。
实时监控模块100向中央服务器200发送的目标Web应用变化的上下文信息,包括当前监控的主机信息、目标Web应用的项目信息、以及目标Web应用变化的文件信息。
所述中央服务器200,主要用于在接收到所述目标Web应用变化的上下文信息后,确定所述目标Web应用的最新版本,并将所述目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中,以通知漏洞检测模块300对目标Web应用进行漏洞检测。
由于目标Web应用产生了变化,需要进行漏洞检测的对象是变化后的目标Web应用,因此首先需要确定的是目标Web应用的最新版本;为了便于确定目标Web应用的最新版本,在一种可行的实施方式中,基于FlowDroid工具的实时漏洞检测系统还包括文件服务器400,文件服务器400主要用于存储目标Web应用的相关项目文件。
具体地,在实时监控模块100检测到目标Web应用的内容发生变化时,可以通过HTTP协议将目标Web应用变化的文件内容上传至文件服务器400中进行存储。
所述中央服务器200包括增量计算单元,所述增量计算单元用于在接收到所述上下文信息后,在所述文件服务器400上下载所述目标Web应用所有变化的文件内容以及所述目标Web应用当前的最新版本,通过增量计算确定所述目标Web应用变化后的最新版本,示例地,增量计算单元根据下载的目标Web应用的项目、更改的文件以及更改的文件类型,执行增量计算后确定变化后的目标Web应用的项目,并将变化后的目标Web应用的项目作为最新版本上传至所述文件服务器400进行存储,在具体实施时,为了节省文件服务器400的存储空间,可以使增量计算单元增量更新后的最新版本覆盖之前的版本。
通过由文件服务器400存储目标Web应用的相关文件,由中央服务器200采用增量计算确定目标Web应用的最新版本可以有效提高计算效率;文件服务器400在接收到中央服务器200上传的目标Web应用变化后的最新版本后,向中央服务器200返回用于下载目标Web应用变化后的最新版本的URL地址。
中央服务器200除了确定目标Web应用变化后的最新版本,还需要确定当前检测的安全规则;由于FlowDroid使用的默认安全规则是为Android应用程序准备的,不适用于J2EE Web应用程序,因此,对于J2EE Web应用程序中常见的缺陷类型的安全规则仍然缺乏,可以通过收集J2EE Web应用程序检测中的安全规则帮助FlowDroid进行漏洞检测。
具体地,所述中央服务器200还可以包括安全规则收集单元,用于在所述中央服务器200接收到所述目标Web应用变化的上下文信息后,在博客与公共漏洞和暴露中记录的J2EE Web应用程序漏洞中,收集当前检测的安全规则。
接着中央服务器200将用于下载目标Web应用变化后的最新版本的URL地址和收集到的当前检测的安全规则放入消息队列中,通知漏洞检测检测模块对变化后的目标Web应用进行检测。
漏洞检测模块300主要从消息队列中获取本次漏洞检测的目标或者对象,根据所述消息队列中的URL地址,下载所述目标Web应用的目标项目,并基于所述当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果。
在一种可行的实施方式中,漏洞检测模块300包括编译子模块301与检测子模块302,由于FlowDroid工具在查找Web应用程序漏洞时,需要Jimple文件作为输入来进行污染流分析,因此首先需要由编译子模块301将目标Web应用的J2EE Web应用程序编译为Jimple文件。
编译子模块301可以包括第一编译单元、第二编译单元以及第三编译单元,其中,第一编译单元先将所述目标Web应用的JSP文件编译成Java代码,在具体实施时,可以采用集成Tomcat的Jasper编译模块,将所有JSP文件转换为Java代码,即编译后的JSP servlet。
然后由第二编译单元将编译成的Java代码编译成Java字节码;由于Java代码包括原始Java源代码和Jasper生成的Java代码,因此还可以将第二编译单元进一步分为第一编译子单元和第二编译子单元。
第一编译子单元对于所述Java代码中的原始Java源代码,直接检索存储在默认路径中的Java字节码,或通过自动化工具Maven执行Java字节码的编译过程;因为对于原始Java源代码,若目标Web应用的项目之前已经成功构建,则直接检索存储在默认路径中的Java字节码作为已编译文件,即在这种情况下不需要将原始Java源代码编译成字节码;否则,将执行从Java代码到字节码的复杂编译过程,但是该任务通常受到依赖性问题的限制,实现时并不容易,本实施例中通过使用主流构建自动化工具Maven来实现编译过程,Maven工具可以帮助自动下载配置文件中描述的JAR文件,然后执行从Java源代码到字节码的复杂编译过程。
第二编译子单元对于所述Java代码中的Jasper生成的Java代码,通过javaccompile命令编译生成对应的Java字节码;对于Jasper生成的java代码,即JSP servlet文件,本实施例使用javac compile命令以一种简单的方式完成编译的过程,因为JSP文件用于描述网页样式,很少调用第三方库的复杂逻辑处理,因此可以通过采用javac命令来编译Jasper生成的JSP servlet文件,而无需其他外部依赖。
最后由第三编译单元将所述Java字节码编译成Jimple文件,在实际实施时可以采用集成Soot编译模块,将Java字节码编译为Jimple文件。
由编译子模块301将目标Web应用程序编译为Jimple文件后,检测子模块302基于当前检测的安全规则,通过改进的FlowDroid工具对目标Web应用的Jimple文件进行漏洞检测,生成变化后的目标Web应用的漏洞检测结果。
本实施例中,漏洞检测模块300还包括改进FlowDroid模块,改进FlowDroid模块主要用于将适用于Android应用程序进行改进,使其可以适用于J2EE Web应用程序。
改进FlowDroid模块对于FlowDroid工具的改进主要包括两个方面,其一是:定义FlowDroid工具应用于J2EE Web应用程序的分析入口点;其二是:构建检测过程中所需的安全规则。
由于FlowDroid工具是为Android应用程序设计的静态污染分析工具,需要入口点才能开始执行,虽然FlowDroid工具提供了许多推荐的入口点,但这些入口点是为Android应用程序量身定制的,无法直接用于J2EE Web应用程序,因此使用FlowDroid的默认入口点,J2EE Web应用程序的分析无法启动。
因此,在使用FlowDroid工具对J2EE Web应用程序进行漏洞检测时,首先需要定义FlowDroid工具应用于J2EE Web应用程序的分析入口,在一种实施方式中,可以选取JSPservlet中的_jspService方法、servlet中的doGet和doPost方法作为分析入口点,因为这3种方法是响应前端请求的入口,通过这3种方法作为分析入口点,可以到达所有响应的处理逻辑。
FlowDroid工具一般是基于污染分析原理来检测漏洞的,其原理是找到一条路径,在该路径中,数据可以从污染源source流向污染汇聚点sink,而不经过清洗器sanitizer;也就是说,利用FlowDroid工具进行污染分析时,source、sink和sanitizer是必要的输入,可以通过source、sink和sanitizer构建FlowDroid工具检测J2EE Web应用程序的安全规则。
但是FlowDroid使用的默认安全规则是为Android应用程序准备的,并不适用于J2EE Web应用程序,因此J2EE Web应用程序中常见的缺陷类型的安全规则仍然缺乏;本实施例为了满足分析需求,通过收集不同的漏洞对应的source、sink和sanitizer来构建FlowDroid工具可以应用于J2EE Web应用程序的安全规则;利用安全规则,如果存在从source流入sink而不经过sanitizer的错误路径,则可以发现潜在漏洞,这些安全规则可以涵盖多种类型的Web应用程序漏洞,示例地,多种类型的Web应用程序漏洞包括:SQL注入、目录遍历和远端命令执行,收集覆盖这些漏洞的安全规则的方式包括:博客、公共漏洞和暴露(Common Vulnerabilities and Exposures,CVE)中记录的真实的J2EE Web应用程序漏洞。
在一种可行的实施方式中,对每种漏洞类型收集相应的source、sink和sanitizer时,对于清洗器sanitizer,FlowDroid工具总结了来自不同包的5个clear()函数,例如java.util.List:void clear(),在本实施例中,clear()函数仍然被用作sanitizer。
对于污染源source和污染汇聚点sink,通过为SQL注入收集102个source和42个sink,为远程命令执行收集113个source和49个sink,为路径遍历收集112个source和39个sink,可以将它们描述为classType:returnType methodName(argType)的形式,例如,java.applet.Applet:java.lang.String getParameter(java.lang.String)代表来源于java.applet.Applet包中的getParameter方法能够将不受信任的数据作为source导入。
改进FlowDriod工具时,根据污染分析原理,利用污染源、污染汇聚点以及清洗器构建FlowDroid工具检测J2EE Web应用程序的安全规则,在每次需要使用改进的FlowDroid工具对目标Web应用进行漏洞检测时,中央服务器200通过收集当前检测的安全规则,在安全规则的帮助下,可以使用FlowDriod提供的污染分析方法来检测J2EE Web应用程序中的SQL注入、目录遍历和远端命令执行漏洞,即成功将改进的FlowDriod工具应用于J2EE Web应用程序的漏洞检测过程中。
在实际应用中,检测子模块302应用改进的FlowDriod工具实现对目标Web应用的漏洞检测,生成的漏洞检测结果包括漏洞类型与错误路径,在生成漏洞检测结果后,可以将漏洞检测结果以及将当前检测的安全规则中使用了的安全规则通过消息队列返回中央服务器200。
为了便于向用户显示漏洞检测过程的进度与漏洞检测结果,在一种可行的实施方式中,基于FlowDroid工具的实时漏洞检测系统还包括后台管理模块500,后台管理模块500可以实时获取并显示检测过程的进度,以及显示通过改进的FlowDroid工具生成的漏洞检测结果。
具体地,实际实施的过程中可以通过浏览器使用本实施例提出的实时自动化的漏洞检测系统,后台管理模块500可以基于Vue架构进行开发,并选取中央服务器200来作为后台管理模块500的服务器,进而中央服务器200的数据可以被后台管理模块500轻松共享,用户可以实时通过后台管理模块500获取详细的系统信息,例如,当实时监控模块100被触发时,用户可以通过后台管理模块500观察被监控的主机和项目等信息;用户通过后台管理模块500可以实时查看漏洞检测的进度和检测的结果,还可以查看对目标Web应用进行的漏洞检测中使用到的安全规则。
本申请提出的基于FlowDroid工具的实时漏洞检测系统至少具有以下有益效果:
1、对FlowDroid工具进行改进,使其可以应用于J2EE Web应用程序的漏洞检测过程中,可以发现Web应用程序中更深层次的语义错误,进一步增强Web应用程序的安全性。
2、通过实时监测目标Web应用的变化,自动对发生变化的目标Web应用进行漏洞检测,可以及时高效地找出Web应用程序的漏洞。
本实施例还提供了本申请提出的基于FlowDroid工具的实时漏洞检测系统对Juliet Test Suite测试集的测试结果。
具体地,测试用例根据通用缺陷列表(Common Weakness Enumeration,CWE)进行分类,包括CWE78-命令注入、CWE23&36-路径遍历以及CWE89-SQL注入,并且每个测试用例均由一个bug用例和一个没有bug的good用例组成。
表1示出了本次的测试结果,根据本方法对每个CWE的结果,测量了结果的真阳性(True Positive,TP)、假阳性(False Positive,FP)和假阴性(False Negative,FN)的数量,其中,TP指的是原本是一个bug用例,本方法中改进的FlowDroid将其识别为bug;FP指的是原本不是一个bug用例,本方法中改进的FlowDroid将其识别为bug;FN指的是原本是一个bug用例,本方法中改进的FlowDroid将其识别为非bug。
表1:测试结果
其中,表1中的用于衡量检测结果的精度(Precision)、召回率(Recall)和F值(F-score)的定义为:
通过表1所展示的本方法中改进的FlowDroid工具对三种类型的漏洞的检测能力,在3552个bug用例中,发现了3456个bug,Precision、Recall和F-score值分别为1.000、0.973和0.986,可以看出改进后的FlowDroid工具虽然漏掉了一些bug用例,导致96个误报,但是误报的占比很小,仍然可以高精度地检测Web应用程序的漏洞。
参照图3,示出了本申请实施例提供的一种基于FlowDroid工具的实时漏洞检测方法的步骤流程图,具体地,所述方法包括以下步骤:
S101:在目标Web应用的内容发生变化时,确定所述目标Web应用的最新版本,并将所述目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中。
S102:根据所述消息队列中的URL地址,下载所述目标Web应用变化后的目标项目,并基于所述当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果。
在实际实施时,可以实时监控多个目标Web应用各自所在目录,对于文件内容发生变化的目标Web应用执行本方法,以检测变化后的目标Web应用是否存在漏洞。
在一种可行的实施方式中,步骤S101包括以下子步骤:
S1011:在目标Web应用的内容发生变化时,获取所述目标Web应用所有变化的文件内容以及所述目标Web应用当前的最新版本,通过增量计算确定所述目标Web应用变化后的最新版本。
在实际实施时,存储目标Web应用变化的文件内容与当前的最新版本的服务器和执行增量计算的服务器可以是同一个服务器,也可以是不同的服务器,例如本实施例中提供的基于FlowDroid工具的实时漏洞检测系统中,文件服务器用于执行存储功能,中央服务器执行增量计算,可以根据实际实施的需求自定义设置,本方法不做限制。
S1012:基于所述目标Web应用变化后的最新版本,生成用于下载所述目标Web应用变化后的最新版本的URL地址。
S1013:在博客与公共漏洞和暴露中记录的J2EE Web应用程序漏洞中,收集当前检测的安全规则。
S1014:将所述目标Web应用变化后的最新版本的URL地址和所述当前检测的安全规则放入消息队列中。
在实际实施的过程中,若多个目标Web应用的文件内容出现变化,则按照时间的先后顺序排列每个目标Web应用各自对应的最新版本的URL地址以及各自对应的当前检测的安全规则,由改进的FlowDroid工具依次对各个目标Web应用进行漏洞检测。
在一种可行的实施方式中,步骤S102包括以下子步骤:
S1021:根据所述消息队列中的URL地址,下载所述目标Web应用变化后的目标项目,并将所述目标Web应用的J2EE Web应用程序编译为Jimple文件。
S1022:基于所述当前检测的安全规则,通过改进的FlowDroid工具对所述目标Web应用的Jimple文件进行漏洞检测,并生成变化后的目标Web应用的漏洞检测结果。
具体地,步骤S1021中对目标Web应用的J2EE Web应用程序进行编译的过程包括以下步骤:
A1:将所述目标Web应用的JSP文件编译成Java代码。
示例地,可以采用集成Tomcat的Jasper编译模块,将所有JSP文件转换为Java代码,即编译后的JSP servlet。
A2:将编译成的Java代码编译成Java字节码。
其中,对于所述Java代码中的原始Java源代码,可以直接检索存储在默认路径中的Java字节码,或通过自动化工具Maven执行Java字节码的编译过程;对于所述Java代码中的Jasper生成的Java代码,可以通过javac compile命令编译生成对应的Java字节码。
A3:将所述Java字节码编译成Jimple文件。
示例地,可以采用集成Soot编译模块,将Java字节码编译为Jimple文件。
编译的过程与使用的编译工具可以根据实际实施时的需求进行不同的选择,本实施例并不做限制。
可选地,所述方法还包括:
S103:实时获取并显示检测过程的进度,以及所述改进的FlowDroid工具生成的变化后的目标Web应用的漏洞检测结果。
在实际实施的过程中,可以设置人机交互页面,在人机交互页面上显示每个目标Web应用的检测进度以及各自的漏洞检测结果,还可以显示当前消息队列的数量,便于工作人员直观地获知检测进度与检测结果。
可选地,所述方法还包括改进FlowDroid单元的过程,改进FlowDroid单元的过程具体如下:
B1:定义FlowDroid工具应用于J2EE Web应用程序的分析入口点。
示例地,可以选取JSP servlet中的_jspService方法、servlet中的doGet和doPost方法作为分析入口点。
B2:根据污染分析原理,利用污染源、污染汇聚点以及清洗器构建FlowDroid工具检测J2EE Web应用程序的安全规则,以涵盖多种类型的Web应用程序漏洞。
示例地,根据污染分析原理,通过收集不同的漏洞对应的source、sink和sanitizer来构建FlowDroid工具可以应用于J2EE Web应用程序的安全规则,这些安全规则可以涵盖多种类型的Web应用程序漏洞,如SQL注入、目录遍历和远端命令执行;收集覆盖这些漏洞的安全规则的方式包括:博客、公共漏洞和暴露(Common Vulnerabilities andExposures,CVE)中记录的真实的J2EE Web应用程序漏洞。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现实施例所述的基于FlowDroid工具的实时漏洞检测方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,本文中第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;对于本领域的一般技术人员,依据本申请的思想,具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种基于FlowDroid工具的实时漏洞检测系统,其特征在于,所述系统包括:实时监控模块、中央服务器以及漏洞检测模块,其中:
所述实时监控模块,用于在检测到目标Web应用的内容发生变化时,向所述中央服务器发送所述目标Web应用变化的上下文信息;
所述中央服务器,用于在接收到所述目标Web应用变化的上下文信息后,确定所述目标Web应用的最新版本,并将所述目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中;
所述漏洞检测模块,用于根据所述消息队列中的URL地址,下载所述目标Web应用的目标项目,并基于所述当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果;
其中,所述漏洞检测模块包括改进FlowDroid模块,所述改进FlowDroid模块用于定义FlowDroid工具应用于J2EE Web应用程序的分析入口点;还用于根据污染分析原理,利用污染源、污染汇聚点以及清洗器构建FlowDroid工具检测J2EE Web应用程序的安全规则,以涵盖多种类型的Web应用程序漏洞,其中,所述多种类型的Web应用程序漏洞包括:SQL注入、目录遍历和远端命令执行。
2.根据权利要求1所述的基于FlowDroid工具的实时漏洞检测系统,其特征在于,所述系统还包括后台管理模块;
所述后台管理模块,用于实时获取并显示检测过程的进度,以及显示所述变化后的目标Web应用的漏洞检测结果。
3.根据权利要求1所述的基于FlowDroid工具的实时漏洞检测系统,其特征在于,所述基于FlowDroid工具的实时漏洞检测系统还包括文件服务器;
所述文件服务器,用于存储由所述实时监控模块在检测到所述目标Web应用的内容发生变化时上传的所述目标Web应用变化的文件内容,以及存储所述目标Web应用当前的最新版本;还用于向中央服务器提供用于下载所述目标Web应用的最新版本的URL地址;
所述中央服务器包括增量计算单元,所述增量计算单元用于在接收到所述上下文信息后,在所述文件服务器上下载所述目标Web应用所有变化的文件内容以及所述目标Web应用当前的最新版本,通过增量计算确定所述目标Web应用变化后的最新版本,并将所述目标Web应用变化后的最新版本上传至所述文件服务器进行存储。
4.根据权利要求1所述的基于FlowDroid工具的实时漏洞检测系统,其特征在于,所述中央服务器还包括:
安全规则收集单元,用于在所述中央服务器接收到所述目标Web应用变化的上下文信息后,在博客与公共漏洞和暴露中记录的J2EE Web应用程序漏洞中,收集当前检测的安全规则。
5.根据权利要求1-4任一所述的基于FlowDroid工具的实时漏洞检测系统,其特征在于,所述漏洞检测模块包括:
编译子模块,用于将所述目标Web应用的J2EE Web应用程序编译为Jimple文件;
检测子模块,用于基于所述当前检测的安全规则,通过改进的FlowDroid工具对所述目标Web应用的Jimple文件进行漏洞检测,生成变化后的目标Web应用的漏洞检测结果,并将所述漏洞检测结果以及将所述当前检测的安全规则中使用了的安全规则通过所述消息队列返回所述中央服务器;其中,所述漏洞检测结果包括漏洞类型与错误路径。
6.根据权利要求5所述的基于FlowDroid工具的实时漏洞检测系统,其特征在于,所述编译子模块包括:
第一编译单元,用于将所述目标Web应用的JSP文件编译成Java代码;
第二编译单元,用于将编译成的Java代码编译成Java字节码;
第三编译单元,用于将所述Java字节码编译成Jimple文件。
7.根据权利要求6所述的基于FlowDroid工具的实时漏洞检测系统,其特征在于,所述第二编译单元包括:
第一编译子单元,用于对于所述Java代码中的原始Java源代码,直接检索存储在默认路径中的Java字节码,或通过自动化工具Maven执行Java字节码的编译过程;
第二编译子单元,用于对于所述Java代码中的Jasper生成的Java代码,通过javaccompile命令编译生成对应的Java字节码。
8.一种基于FlowDroid工具的实时漏洞检测方法,其特征在于,所述方法包括:
在目标Web应用的内容发生变化时,确定所述目标Web应用的最新版本,并将所述目标Web应用变化后的最新版本的URL地址和当前检测的安全规则放入消息队列中;
根据所述消息队列中的URL地址,下载所述目标Web应用变化后的目标项目,并基于所述当前检测的安全规则,通过改进的FlowDroid工具生成变化后的目标Web应用的漏洞检测结果,包括:定义FlowDroid工具应用于J2EE Web应用程序的分析入口点;并根据污染分析原理,利用污染源、污染汇聚点以及清洗器构建FlowDroid工具检测J2EE Web应用程序的安全规则,以涵盖多种类型的Web应用程序漏洞,其中,所述多种类型的Web应用程序漏洞包括:SQL注入、目录遍历和远端命令执行。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求8所述的基于FlowDroid工具的实时漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211314916.5A CN115391793B (zh) | 2022-10-26 | 2022-10-26 | 一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211314916.5A CN115391793B (zh) | 2022-10-26 | 2022-10-26 | 一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115391793A CN115391793A (zh) | 2022-11-25 |
CN115391793B true CN115391793B (zh) | 2023-02-17 |
Family
ID=84127810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211314916.5A Active CN115391793B (zh) | 2022-10-26 | 2022-10-26 | 一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391793B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
CN107623738A (zh) * | 2017-09-28 | 2018-01-23 | 中南大学 | 一种面向安卓应用的WebView桥接口污点映射及分析方法 |
US10579803B1 (en) * | 2016-11-17 | 2020-03-03 | Jpmorgan Chase Bank, N.A. | System and method for management of application vulnerabilities |
CN114116455A (zh) * | 2021-11-03 | 2022-03-01 | 郑州埃文计算机科技有限公司 | 一种面向开源基础组件库的集群化模糊测试方法及装置 |
-
2022
- 2022-10-26 CN CN202211314916.5A patent/CN115391793B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
US10579803B1 (en) * | 2016-11-17 | 2020-03-03 | Jpmorgan Chase Bank, N.A. | System and method for management of application vulnerabilities |
CN107623738A (zh) * | 2017-09-28 | 2018-01-23 | 中南大学 | 一种面向安卓应用的WebView桥接口污点映射及分析方法 |
CN114116455A (zh) * | 2021-11-03 | 2022-03-01 | 郑州埃文计算机科技有限公司 | 一种面向开源基础组件库的集群化模糊测试方法及装置 |
Non-Patent Citations (4)
Title |
---|
"Towards supporting software assurance assessments by detecting security patterns";Michaela Bunke 等;《Software Quality Journal》;20200505;全文 * |
"WebView组件漏洞自动化检测与验证方法";王嘉捷 等;《北京理工大学学报》;20200229;第40卷(第2期);全文 * |
"一种基于匹配的Android系统漏洞检测方法";张嘉元;《研究与开发》;20160531;全文 * |
"三网融合:变亦不变——兼谈地方广电传媒的生存和发展之机";周旻;《中国广播电视学刊》;20100430;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115391793A (zh) | 2022-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chen et al. | Mystique: Uncovering information leakage from browser extensions | |
US9715593B2 (en) | Software vulnerabilities detection system and methods | |
Wei et al. | Practical blended taint analysis for JavaScript | |
Sen et al. | Jalangi: A selective record-replay and dynamic analysis framework for JavaScript | |
US8930884B2 (en) | Efficient extraction of software dependencies from program code | |
US9411616B2 (en) | Classloader/instrumentation approach for invoking non-bound libraries | |
Junaid et al. | Dexteroid: Detecting malicious behaviors in android apps using reverse-engineered life cycle models | |
Arzt et al. | Using targeted symbolic execution for reducing false-positives in dataflow analysis | |
Karim et al. | Mining android apps to recommend permissions | |
Kim et al. | Efficient patch-based auditing for web application vulnerabilities | |
Li et al. | Large-scale third-party library detection in android markets | |
Xu et al. | A dynamic taint analysis tool for android app forensics | |
Zhou et al. | Minerva: browser API fuzzing with dynamic mod-ref analysis | |
Hassanshahi et al. | Gelato: Feedback-driven and guided security analysis of client-side web applications | |
Yang et al. | FSAFlow: Lightweight and fast dynamic path tracking and control for privacy protection on Android using hybrid analysis with state-reduction strategy | |
Zhang et al. | Firmware fuzzing: The state of the art | |
Cam et al. | Detecting sensitive data leakage via inter-applications on Android using a hybrid analysis technique | |
Wu et al. | CydiOS: A Model-Based Testing Framework for iOS Apps | |
CN115391793B (zh) | 一种基于FlowDroid工具的实时漏洞检测系统、方法与存储介质 | |
Hermann et al. | Getting to know you: Towards a capability model for java | |
Youssef et al. | Quantitave dynamic taint analysis of privacy leakage in android arabic apps | |
Herczeg et al. | Towards the efficient use of dynamic call graph generators of node. js applications | |
Hu et al. | Elix: Path-selective taint analysis for extracting mobile app links | |
Salvia et al. | Intents analysis of Android apps for confidentiality leakage detection | |
Ma et al. | Detecting Memory Errors in Python Native Code by Tracking Object Lifecycle with Reference Count |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |