发明名称 一种基于场景模型的软件漏洞分析方法
摘要 一种基于场景模型的软件漏洞分析方法,属于网络安全领域,其特征在于,依次含有:扫描软件代码的构建场景集合、分析软件代码的建立场景模型、运行软件系统,记录软件行为、根据用户软件特征选择测试用例以及根据用户的软件运行路径以变换测试用例等步骤,是一种面向浏览器B/服务器S架构的软件漏洞分析方法,能从用户软件系统的代码、模块、接口、函数调用关系等多个方面入手,对用户的软件系统的漏洞进行测试验证,定位漏洞位置,具有通用性强,能发现隐性的权限提升漏洞的优点。
申请公布号 CN103020529B 申请公布日期 2015.12.09
申请号 CN201210424280.X 申请日期 2012.10.31
申请人 中国航天科工集团第二研究院七○六所 发明人 郑亮;刘向东;游春凌;李红;王斌
分类号 G06F21/57(2013.01)I;H04L29/08(2006.01)I 主分类号 G06F21/57(2013.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 楼艮基
主权项 一种基于场景模型的软件漏洞分析方法,其特征在于所述场景模型C的数学表达式为:C={P,F,R,λ},其中P表示软件系统的路径path集合,F表示软件系统文件名file集合,R是软件系统中软件使用的参数para集合,λ是用于描述场景间的直接调用关系的{P,F,R}—&gt;{P,F,R}的映射,所述的一种基于场景的软件漏洞分析方法是一种面向浏览器B/服务器S架构的软件漏洞分析方法,是在互联网中的一个基于场景的软件漏洞分析系统中依次按以下步骤实现的:步骤(1),构建所述的基于场景的软件漏洞分析系统,设立软件静态分析模块、场景建模模块、测试控制模块、测试数据加载模块、测试用例库以及软件通信模块,其中:软件静态分析模块,对软件的可执行代码的语句逐条进行分析,得到:软件的执行路径、用以标记软件的人机接口代码,与其他软件交互的数据接口代码,从中获取:包括软件开发语言、运行平台、数据库、组成文件、功能所用技术以及用户接口在内的软件参数信息,场景建模模块,从所述软件静态分析模块输入所述软件参数信息按照组成的软件文件、功能调用参数建立软件的用户状态集合,得到软件场景模型,测试控制模块,根据从所述软件静态分析模块输入的软件参数信息,从测试用例库中选择初始测试用例,同时根据从所述场景建模模块输入的软件场景模型控制软件测试数据的加载策略,测试数据加载模块,解析测试用例库中的测试用例并把测试数据输入到目标软件中,同时根据测试数据生成策略对测试数据进行变换以适应具体软件,软件通信模块,接收从所述测试数据加载模块输入的发送请求以及从软件行为分析爱模块输入的返回结果,步骤(2),在所述的基于场景的软件漏洞分析系统中依次按以下步骤对所述的浏览器B/服务器S架构的软件进行漏洞分析;步骤(2.1),所述软件静态分析模块,按以下步骤扫描软件代码,构建目标软件系统的场景参数集合:步骤(2.1.1),扫描并分析待分析的目标软件的代码,得到并分析可执行文件的后缀名,再按后缀名的异同进行初步的场景划分,所述可执行文件至少包括:jsp类型文件、asp类型文件、aspx类型文件、php类型文件、pl类型文件,步骤(2.1.2),对步骤(2.1.1)中进行场景划分后的各类可执行文件进行遍历、获取各类可执行文件的参数变量,建立各类可执行文件的参数列表,步骤(2.1.3),对于每一类内各可执行文件在所调用的参数数量、参数名称上的差异,再次进行类内场景划分,从而构建出以可执行文件名,调用参数列表为标识的软件系统场景参数集合E:E={P,F,R,H},其中:所述Path∈P,file∈F,para∈R,H是场景的特征char集合,char∈H,所述场景的特征至少包括:软件开发语言、运行平台、数据库、组成文件、功能调用参数以及用户接口,步骤(2.2)所述场景建模模块对输入的所述软件基本信息中的可执行软件代码进行分析,建立场景模型C:遍历目标软件系统内的每个可执行文件,对每类所述目标软件的跳转指令,调用指令、进行分析,通过其中对触发GET协议、POST协议操作的语句进行分析,提取各GET协议、POST协议提交的文件路径及参数,通过分析场景参数集合S中的三元组{P,F,R}进行比对,完全相同的则建立反映二个场景间的调用关系的软件场景模型C,C={P,F,R,λ},已如上述;步骤(2.3)所述测试控制模块运行用户部署的软件系统,记录软件行为:步骤(2.3.1),所述软件静态分析模块向所述测试控制模块输入目标软件基本信息,所述场景建模模块向测试控制系统输入所述目标软件的软件场景模型,步骤(2.3.2),用户向所述测试控制模块部署用户软件系统,输入测试参数,并请求返回所述用户软件系统的各个功能,同时加载浏览器调试器监视所述用户软件系统运行,步骤(2.3.3)所述用户软件系统内的软件,根据用户的每次请求返回如下各种不同的对应结果:若:超级文本传输协议HTTP返回的编码为200,则,用户本次请求导致的场景切换成功,记录相应的用户请求文件,参数值以及变化前后的场景,若:所述HTTP返回的编码为400、401、403中的任何一种,则,用户本次请求导致的场景切换失败,不记录,若:所述HTTP返回的编码是500,则,可能已经触发漏洞,记录相应的用户请求文件,参数值以及变化前后的场景,并标记漏洞触发数据,步骤(2.3.4)除了切换失败及成功的场景以外,去除步骤(2.3.3)中具有相同的场景转化关系和相同参数值的以序列形式表述的场景变化,简化后的场景变化序列,用I表示其结果,步骤(2.3.5)用户把所有的软件的功能至少运行使用一次,形成初始测试场景U:U={S<sub>O</sub>,E,I},其中:S<sub>O</sub>:初始测试场景中的所有场景参数集合,E:用户提交的数据资源集合,I:简化后的场景变化序列,步骤(2.4)所述测试数据加载模块依次按以下步骤按照用户软件的特征,选择初始测试用例;步骤(2.4.1),从用户输入的测试参数中获取用户软件系统开发语言,运行平台和数据库类型,步骤(2.4.2),从步骤(2.3.5)获取的所述初始测试场景U中的具体参数值中得到参数的类型,其中至少包括整型,字符型以及二进制型中的一种或一种以上,步骤(2.4.3),按照步骤(2.4.2)中的具体参数从所述测试用例库中选择同类的测试用例,针对相应的参数进行数据加载测试,同时加载监视器监视场景变化,步骤(2.4.4),在步骤(2.4.3)加载测试用例过程中,得到如下不同的结果:若:所述HTTP返回的编码是200,则,用户本次请求导致的场景切换成功,记录相应的请求文件,参数值以及变化前后的场景,若:所述HTTP返回的编码是400、401、403中的任何一种,则,用户本次请求导致的场景切换失败,不记录,若:所述HTTP返回的编码是500,则,可能已触发漏洞,记录相应的用户请求文件、参数值以及变化前后的场景,并标记漏洞触发参数及数据,步骤(2.4.5),把步骤(2.4.4)产生异常行为及异常场景转换的数据添加到所述测试用例库中,并记录对应的用户软件信息,包括:软件开发语言运行平台、数据库的基本信息在场景转换中减少的参数类型,以及修改的包括常量参数在内的参数类型及对应的参数值,步骤(2.4.6),所述测试数据加载模块向所述软件通信模块发出发送请求;获准后,发出基于场景的漏洞分析数据。
地址 100854 北京市海淀区永定路51号