一种页面漏洞检测装置及检测方法制造方法及图纸

技术编号:9463082 阅读:82 留言:0更新日期:2013-12-19 00:37
本发明专利技术涉及一种页面漏洞检测装置,其包括:抽象语法树管理模块,用于管理被检测程序源码的抽象语法树;符号表模块,用于管理被检测程序源码的符号表信息;以及污点回溯模块,用于从抽象语法树管理模块处读取抽象语法树,并遍历抽象语法树以得到所有预先配置的触发节点的集合,针对每个触发节点根据符号表信息回溯其所有相关变量,如果有相关变量可被攻击者可控制的输入改变则视为所述触发节点处存在漏洞并输出漏洞信息。所述页面漏洞检测装置可以提高漏洞覆盖率并降低误报率。此外,本发明专利技术还提供一种页面漏洞检测方法。

【技术实现步骤摘要】
一种页面漏洞检测装置及检测方法
本专利技术涉及网页安全技术,尤其涉及一种页面漏洞检测装置及检测方法,具体地,涉及一种PHP页面漏洞检测装置及检测方法。
技术介绍
目前检测各种活动页面如PHP页面漏洞的方法主要是黑盒扫描。通过构造大量畸形的用例,访问PHP页面,然后判断返回页面的内容。如果返回页面中具有特定数据,则认为该PHP页面不能正确处理输入,存在漏洞。黑盒扫描方式有以下几个缺点:第一、其效果依赖构造用例的方式,如果用例太少,则覆盖的PHP页面源码路径不够,会有大量漏报。如果用例构造不全面,则依然覆盖路径不够,大量漏报。第二、用例可能需要特定模式,如以"http"字符串开头PHP页面才会继续处理,否则所有用例都会被丢弃,进不到内层逻辑,达不到测试效果,依然是大量漏报。第三,黑盒扫描依赖返回页面来判断测试结果,如果PHP页面没返回,则会漏报。第四、黑盒扫描依赖PHP页面的正确部署,只能测试已经全面部署好的能正常访问的PHP页面,单独给出一个未部署的PHP页面源码时,黑盒扫描不能工作。另外的页面漏洞扫描方法就是特征字符串匹配,在PHP页面中查找危险函数,如eval()函数,如果找到这类危险函数,则认为该PHP页面存在漏洞。特征字符串匹配方式的缺点是误报太多,因为危险函数的输入如果是固定的,不能被攻击者控制的,则危险函数的使用不会产生漏洞。
技术实现思路
有鉴于此,有必要提供一种页面漏洞检测装置及检测的方法,其相比于传统的黑盒扫描及特征字符串匹配方式具有更低的误报率及更高的漏洞覆盖率。以上所述的页面漏洞检测装置是通过以下技术方案实现的:一种页面漏洞检测装置,包括:抽象语法树管理模块,用于管理被检测程序源码的抽象语法树;符号表模块,用于管理被检测程序源码的符号表信息;以及污点回溯模块,用于从抽象语法树管理模块处读取抽象语法树,并遍历抽象语法树以得到所有预先配置的触发节点的集合,针对每个触发节点根据符号表信息回溯其所有相关变量,如果有相关变量可被攻击者可控制的输入改变则视为所述触发节点处存在漏洞并输出漏洞信息。作为上述技术方案的进一步改进,上述符号表模块还用于:通过抽象语法管理模块读取抽象语法树信息,解析所有赋值语句,得到包含每个变量信息的符号表信息,并将所述符号表信息提供给所述污点回溯模块。作为上述技术方案的进一步改进,上述页面漏洞检测装置进一步包括:词法语法分析模块,用于读入被检测程序源码,将被检测程序源码转换为抽象语法树,并将抽象语法树输出至抽象语法树管理模块。作为上述技术方案的进一步改进,上述页面漏洞检测装置进一步包括:预处理模块,用于解析抽象语法树中的常量定义节点以及包含节点,并回写解析信息至抽象语法树中。作为上述技术方案的进一步改进,上述页面漏洞检测装置进一步包括:函数摘要模块,用于解析抽象语法树中的函数声明节点,然后解析函数的返回值和参数的关系得到函数摘要。作为上述技术方案的进一步改进,上述污点回溯模块还用于:当抽象语法树中具有包含节点时,抽象语法树管理模块、符号表模块及污点回溯模块跳转至处理包含节点的被包含文件,当被包含文件处理完毕后返回至处理被检测源码。作为上述技术方案的进一步改进,上述污点回溯模块还用于:当抽象语法树中具有函数声明节点时,遍历函数声明节点的子节点得到触发节点的集合,针对每个触发节点根据所述符号表信息回溯其所有相关变量,如果有相关变量可被攻击者可控制的输入改变则视为所述触发节点处存在漏洞并输出漏洞信息。作为上述技术方案的进一步改进,当所述函数声明节点内具有包含节点时,抽象语法树管理模块、符号表模块及污点回溯模块跳转至处理包含节点的被包含文件,当被包含文件处理完毕后返回至处理函数声明节点。以上所述的页面漏洞检测方法是通过以下技术方案实现的:一种页面漏洞检测方法,包括:步骤一、提供被检测程序源码的抽象语法树及符号表信息;步骤二、遍历抽象语法树得到所有触发节点的集合,触发节点是指抽象语法树中与敏感操作语句对应的节点;针对每个触发节点执行:步骤三、根据符号表提取其所有相关变量的集合;以及步骤四、回溯每个相关变量,如果发现相关变量可被攻击者可控制的输入改变则视为找到一处漏洞并输出漏洞信息。作为上述技术方案的进一步改进,步骤一还包括:读取抽象语法树信息,解析所有赋值语句,得到包含每个变量信息的符号表信息。作为上述技术方案的进一步改进,步骤一之前包括读取被检测程序源码,进行词法语法分析得到抽象语法树,并进一步解析抽象语法树中所有赋值节点得到符号表信息。作为上述技术方案的进一步改进,步骤一中抽象语法树及符号表信息是由外部程序提供的。作为上述技术方案的进一步改进,上述方法还包括:当所述抽象语法树中具有包含节点时,解析抽象语法树中的所有包含节点,并回写被包含文件的路径至所述抽象语法树中。作为上述技术方案的进一步改进,上述方法还包括:当抽象语法树中具有包含节点时,暂停被检测程序源码的处理流程,转至针对被包含文件递归执行步骤一至步骤四。作为上述技术方案的进一步改进,上述方法还包括:当抽象语法树中具有常量定义节点时,对常量定义节点的子节点进行分析以得到常量定义值并将常量定义值回写至抽象语法树中。作为上述技术方案的进一步改进,上述方法还包括:当抽象语法树中具有函数声明节点时,解析函数的返回值和参数的关系得到函数摘要并回写至抽象语法树中。作为上述技术方案的进一步改进,上述方法还包括:针对函数声明节点执行步骤二至步骤四,如果直接在函数内部就发现有触发节点可被攻击者可控制输入改变,则视为漏洞并输出漏洞信息。作为上述技术方案的进一步改进,上述方法还包括:当所述函数内部具有包含节点时,针对所述包含节点的被包含文件递归执行所述步骤一至步骤四。以上所述的页面漏洞检测装置及检测方法中,通过程序编译原理,将程序源码转换为抽象语法树,针对漏洞触发点回溯与触发点相关的变量,如果有变量是攻击者可控的,则表明该触发点处有漏洞。相比于现有技术中的黑盒扫描,本实施例的页面漏洞检测装置能完整的覆盖所有可能的漏洞,提高了漏洞覆盖率;而相比于现有技术中的关键字搜索方式,可以避免将那些使用了危险语句,但其相关变量攻击者并不可控的情形视为漏洞,降低了误报率。为让本专利技术的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。附图说明图1为本专利技术第一实施例提供的页面漏洞检测装置的模块框图。图2为本专利技术第一实施例提供的抽象语法树节点示意图。图3为本专利技术第二实施例提供的页面漏洞检测方法的流程图。具体实施方式为更进一步阐述本专利技术为实现预定专利技术目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本专利技术提出的页面漏洞检测装置及检测方法的具体实施方式、结构、特征及其功效,详细说明如后。第一实施例参阅图1,第一实施例提供一种页面漏洞检测装置,其包括:词法语法分析模块11、抽象语法树(AbstractSyntaxTree,AST)管理模块12、预处理模块13、符号表模块14、函数摘要模块15及污点回溯模块16。词法语法分析模块11用于读入程序源码,通过编译原理的词法、语法分析过程,把源码转成AST,并交由AST管理模块进行管理。举例来说,程序源码中的每个语句会对应转成AST的一个节点。参阅图2,如if(){}会本文档来自技高网...
一种页面漏洞检测装置及检测方法

【技术保护点】
一种页面漏洞检测装置,其特征在于,包括:抽象语法树管理模块,用于管理被检测程序源码的抽象语法树;符号表模块,用于管理被检测程序源码的符号表信息;以及污点回溯模块,用于从所述抽象语法树管理模块处读取所述抽象语法树,并遍历所述抽象语法树以得到所有预先配置的触发节点的集合,针对每个触发节点根据所述符号表信息回溯其所有相关变量,如果有相关变量可被攻击者可控制的输入改变则视为所述触发节点处存在漏洞并输出漏洞信息。

【技术特征摘要】
1.一种页面漏洞检测装置,其特征在于,包括:抽象语法树管理模块,用于管理被检测程序源码的抽象语法树;符号表模块,用于管理被检测程序源码的符号表信息;以及污点回溯模块,用于从所述抽象语法树管理模块处读取所述抽象语法树,并遍历所述抽象语法树以得到所有预先配置的触发节点的集合,针对每个触发节点根据所述符号表信息记录的每个变量赋值关系,找到再上一层影响所述触发点的相关变量集合,并回溯其所有相关变量,如果有相关变量可被攻击者可控制的输入改变则视为所述触发节点处存在漏洞并输出漏洞信息。2.如权利要求1所述的页面漏洞检测装置,其特征在于,所述符号表模块,还用于:通过抽象语法管理模块读取抽象语法树信息,解析所有赋值语句,得到包含每个变量信息的符号表信息,并将所述符号表信息提供给所述污点回溯模块。3.如权利要求1所述的页面漏洞检测装置,其特征在于,进一步包括:词法语法分析模块,用于读入被检测程序源码,将被检测程序源码转换为抽象语法树,并将抽象语法树输出至所述抽象语法树管理模块。4.如权利要求1所述的页面漏洞检测装置,其特征在于,进一步包括:预处理模块,用于解析所述抽象语法树中的常量定义节点以及包含节点,并回写解析信息至所述抽象语法树中。5.如权利要求1所述的页面漏洞检测装置,其特征在于,进一步包括:函数摘要模块,用于解析所述抽象语法树中的函数声明节点,然后解析所述函数的返回值和参数的关系得到函数摘要。6.如权利要求1所述的页面漏洞检测装置,其特征在于,所述污点回溯模块还用于:当所述抽象语法树中具有包含节点时,所述抽象语法树管理模块、符号表模块及污点回溯模块跳转至处理包含节点的被包含文件,当被包含文件处理完毕后返回至处理所述被检测程序源码。7.如权利要求1所述的页面漏洞检测装置,其特征在于,所述污点回溯模块还用于:当所述抽象语法树中具有函数声明节点时,遍历所述函数声明节点的子节点得到触发节点的集合,针对每个触发节点根据所述符号表信息回溯其所有相关变量,如果有相关变量可被攻击者可控制的输入改变则视为所述触发节点处存在漏洞并输出漏洞信息。8.如权利要求1所述的页面漏洞检测装置,其特征在于,当所述抽象语法树中的函数声明节点内具有包含节点时,所述抽象语法树管理模块、符号表模块及污点回溯模块跳转至处理包含节点的被包含文件,当被包含文件处理完毕后返回至处理所述函数声明节...

【专利技术属性】
技术研发人员:钟同圣王金锭李佳
申请(专利权)人:深圳市腾讯计算机系统有限公司
类型:发明
国别省市:

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

1