SQL注入缺陷检测方法、系统、设备及存储介质技术方案

技术编号:20517972 阅读:24 留言:0更新日期:2019-03-06 02:41
本发明专利技术提供了一种SQL注入缺陷检测方法、系统、设备及存储介质,所述方法包括:输入待检测的程序;生成待检测的程序中各个函数的符号表达式图,符号表达式图包括节点和连接节点的边,节点包括值节点和运算符节点,边包括数据依赖性边和控制依赖性边,其中,数据依赖性边是将节点连接到与其有直接数据依赖关系的值节点的有方向性的边,控制依赖性边是当存在限定变量的条件时将变量连接到条件的有方向性的边;以及检测各个函数的符号表达式图中是否存在从用户输入节点到查询语句节点之间的路径且路径约束条件均满足,如果是,则发现SQL注入缺陷。本发明专利技术通过符号表达式图中路径和路径约束条件的判断,能够高效地检测SQL注入缺陷。

SQL Injection Defect Detection Method, System, Equipment and Storage Media

The invention provides an SQL injection defect detection method, a system, a device and a storage medium. The method includes: input the program to be tested; generate the symbolic expression diagram of each function in the program to be tested. The symbolic expression diagram includes the edges of nodes and connecting nodes, nodes include value nodes and operator nodes, edges include data dependent edges and control dependent edges. The data dependency side connects nodes to directional edges of value nodes with direct data dependency, the control dependency side connects variables to directional edges of conditions when there are restrictive variables, and detects whether there is a path and path constraint between user input node and query statement node in the symbolic expression graph of each function. Conditions are met, and if so, defects in SQL injection are found. The invention can efficiently detect SQL injection defects by judging the path and path constraint conditions in the symbolic expression diagram.

【技术实现步骤摘要】
SQL注入缺陷检测方法、系统、设备及存储介质
本专利技术涉及计算机应用
,尤其涉及一种SQL注入缺陷检测方法、系统、设备及存储介质。
技术介绍
SQL(StructuredQueryLanguage,结构化查询语言)注入(SQLInjection)是一种代码注入技术,用于攻击数据驱动的应用程序,其中恶意的SQL语句被插入到输入字段中从而被恶意执行。SQL注入缺陷在SQL查询的元素源自不可信源的应用程序中出现。如果没有预防措施,不可信数据可能会恶意更改查询,导致信息泄漏或数据修改。SQL注入缺陷最早在2000年左右被提出,其后学者们对SQL注入的检测和防护展开了一系列的研究。典型的一种SQL注入例子如下:(1)用户登录Web应用系统时,需要进行身份认证,主要输入用户名和密码两个变量v_usr和v_pwd;(2)Web系统执行合法性检查的SQL语句为:“Select*fromuserswhereusername=‘”+v_usr+“’andpassword=‘”+v_pwd+“’”,如果用户登录时用户取为‘admin’or1=1--,那么合法性检查的SQL语句等效于Select*fromuserswhereusername=‘admin’or1=1;显然,用户名取‘admin’or1=1--时,无论密码输入多少,都可以登录系统。SQL注入缺陷的检测和防护方式目前主要有两大类,一是系统上线前检测,也称为静态检测;二是系统在线运行防御,也称为动态检测。动态检测方式是一种黑盒检测方法,对上线的系统进行SQL注入缺陷扫描,编制SQL注入攻击脚本对Web系统进行试探,通过检查Http的回应报文内容来判断是否发生SQL注入攻击,从而确定是否存在SQL注入漏洞。AppScan等工具可执行此类安全检测。一篇参考文献:GOULDC,SUZ,DEVANBUP.JDBCchecker:astaticanalysistoolforSQL/JDBCapplications[C].Proceedingofthe26thInternationalconferenceonSoftwareEngineering(ICSE).WashingtonDC:IEEEcomputerSociety,2004以及另一篇参考文献:GOULDC,SUZ,DEVANBUP.Staticcheckingofdynamicallygeneratedqueriesindatabaseapplications[C].Proceedingsof26thInternationalConferenceonSoftwareEngineering,2004给出了一种动态生成SQL语句进行类型正确性检查的方法来检测是否存在SQL注入,该方法的的缺点在于只能检测句法结构或语句类型出现异常的SQL注入问题。静态检测方法是一种白盒检测方法,通过静态语法解析查找Web应用代码中可能引发SQL注入的环节,在Web应用发布前检查代码质量。Fortify等工具可执行此类安全检测。静态检测方法可以参照参考文献:WILLIAMGJ,VIEGASHJ,ORSOA.AclassificationofSQLinjectionattacksandcountermeasures[C].Proc.ofInternationalSymposiumonSecureSoftwareEngineering.2006。此外,参考文献:WASSERMANNG,SUZ.AnanalysisframeworkforsecurityinWebapplications[C].ProceedingsoftheFSEWorkshoponSpecificationandVerificationofComponentBasedSystem,2004提出一种自动推理机的方法对添加了输入值后的SQL语句进行检查,该方法的缺点在于只能检测出重言式的SQL注入攻击。此外,还有一些学者采用机器学习算法对SQL注入缺陷进行检测,这一类检测方法的检测率和误报率往往依赖于训练集的大小,机器学习算法检测的方法可以参考文献:HUANGYW,HUANGSK,LINTP,etal.Webapplicationsecurityassessmentbyfaultinjectionandbehaviormonitoring[C].Porceedingofthe11thInternationalWorldWideConferecne,2002。因此,需要提出一种有效的SQL注入缺陷检测的方案。
技术实现思路
针对现有技术中的问题,本专利技术的目的在于提供一种SQL注入缺陷检测方法、系统、设备及存储介质,通过符号表达式图中路径和路径约束条件的判断,能够高效地检测SQL注入缺陷。本专利技术实施例提供一种SQL注入缺陷检测方法,所述方法包括如下步骤:输入待检测的程序;生成待检测的程序中各个函数的符号表达式图,所述符号表达式图包括节点和连接节点的边,所述节点包括值节点和运算符节点,所述边包括数据依赖性边和控制依赖性边,其中,所述数据依赖性边是将节点连接到与其有直接数据依赖关系的值节点的有方向性的边,所述控制依赖性边是当存在限定变量的条件时将变量连接到条件的有方向性的边;以及检测各个函数的符号表达式图中是否存在从用户输入节点到查询语句节点之间的路径且路径约束条件均满足,如果是,则发现SQL注入缺陷。可选地,所述检测各个函数的符号表达式图中是否存在从用户输入节点到查询语句节点之间的路径且路径约束条件均满足,包括如下步骤:对于各个函数的符号表达式图,从用户输入节点开始对所述符号表达式图进行逆向的深度优先遍历;遍历到达查询语句节点时,根据所述控制依赖性边查找用户输入节点到查询语句节点之间的路径约束条件,并判断路径约束条件是否均满足,如果是,则发现SQL注入缺陷。可选地,所述方法还包括如下步骤:生成各个函数的函数摘要,所述函数摘要包括符号摘要,所述符号摘要包括函数输入、函数输出以及函数输入节点到函数输出节点之间路径的约束集。可选地,对于一函数的符号表达式图,如果存在从用户输入节点到查询语句节点的路径,则该函数的函数摘要还包括输入摘要、输出摘要和传递摘要,其中:所述输入摘要包括函数输入到查询语句节点的摘要;所述输出摘要包括用户输入节点到函数输出的摘要;所述传递摘要包括函数输入到用户输入节点的摘要。可选地,判断路径约束条件是否均满足,包括如下步骤:判断当前检测函数中从用户输入节点到查询语句节点之间的路径中是否存在被调函数;如果是,则将所述被调函数的函数摘要嵌入当前检测函数的符号表达式图,判断当前检测函数中与该被调函数对应的路径约束条件是否满足。可选地,生成待检测的程序中各个函数的符号表达式图,包括如下步骤:从所述待检测的程序的底层函数依次向上层函数建立各个函数的符号表达式图;检测各个函数的符号表达式图时,从底层函数依次向上层函数检测,并从底层函数依次向上层函数生成函数摘要;检测上层函数的符号表达式图时,将该上层函数的下层函数的函数摘要嵌入该上层函数的符号表达式图中。可选地,所述输入摘要包括函数输入、函数输入节点到查询语句节点之间路径的约束、分析结果报告、生成报告摘要的相应描述和检查本文档来自技高网
...

【技术保护点】
1.一种SQL注入缺陷检测方法,其特征在于,所述方法包括如下步骤:输入待检测的程序;生成待检测的程序中各个函数的符号表达式图,所述符号表达式图包括节点和连接节点的边,所述节点包括值节点和运算符节点,所述边包括数据依赖性边和控制依赖性边,其中,所述数据依赖性边是将节点连接到与其有直接数据依赖关系的值节点的有方向性的边,所述控制依赖性边是当存在限定变量的条件时将变量连接到条件的有方向性的边;以及检测各个函数的符号表达式图中是否存在从用户输入节点到查询语句节点之间的路径且路径约束条件均满足,如果是,则发现SQL注入缺陷。

【技术特征摘要】
2017.09.01 CN 20171078115801.一种SQL注入缺陷检测方法,其特征在于,所述方法包括如下步骤:输入待检测的程序;生成待检测的程序中各个函数的符号表达式图,所述符号表达式图包括节点和连接节点的边,所述节点包括值节点和运算符节点,所述边包括数据依赖性边和控制依赖性边,其中,所述数据依赖性边是将节点连接到与其有直接数据依赖关系的值节点的有方向性的边,所述控制依赖性边是当存在限定变量的条件时将变量连接到条件的有方向性的边;以及检测各个函数的符号表达式图中是否存在从用户输入节点到查询语句节点之间的路径且路径约束条件均满足,如果是,则发现SQL注入缺陷。2.根据权利要求1所述的SQL注入缺陷检测方法,其特征在于,所述检测各个函数的符号表达式图中是否存在从用户输入节点到查询语句节点之间的路径且路径约束条件均满足,包括如下步骤:对于各个函数的符号表达式图,从用户输入节点开始对所述符号表达式图进行逆向的深度优先遍历;遍历到达查询语句节点时,根据所述控制依赖性边查找用户输入节点到查询语句节点之间的路径约束条件,并判断路径约束条件是否均满足,如果是,则发现SQL注入缺陷。3.根据权利要求1所述的SQL注入缺陷检测方法,其特征在于,所述方法还包括如下步骤:生成各个函数的函数摘要,所述函数摘要包括符号摘要,所述符号摘要包括函数输入、函数输出以及函数输入节点到函数输出节点之间路径的约束集。4.根据权利要求3所述的SQL注入缺陷检测方法,其特征在于,对于一函数的符号表达式图,如果存在从用户输入节点到查询语句节点的路径,则该函数的函数摘要还包括输入摘要、输出摘要和传递摘要,其中:所述输入摘要包括函数输入到查询语句节点的摘要;所述输出摘要包括用户输入节点到函数输出的摘要;所述传递摘要包括函数输入到用户输入节点的摘要。5.根据权利要求3或4所述的SQL注入缺陷检测方法,其特征在于,判断路径约束条件是否均满足,包括如下步骤:判断当前检测函数中从用户输入节点到查询语句节点之间的路径中是否存在被调函数;如果是,则将所述被调函数的函数摘要嵌入当前检测函数的符号表达式图,判断当前检测函数中与该被调函数对应的路径约束条件是否满足。6.根据权利要求5所述的SQL注入缺陷检测方法,其特征在于,生成待检测的程序中各个函数的符号表达式图,包括如下步骤:从所述待检测的程序的底层函数依次向上层函数建立各个函数的符号表达式图;检测各个函数的符号表达式图时,从底层函数依次向上层函数检测,并从底层函数依次向上层函数生成函数摘要;检测上层函数的符号表达式图时,将该上层函数的下层函数的函数摘要嵌入该上层函数的符号表达式图中。7.根据权利要求4所述的SQL注入缺陷检测方法,其特征在于,所述输入摘要包括函数输入、函数输入节点到查询语句节点之间路径的约束、分析结果报告、生成报告摘要的相应描述和检查器特定信息;所述输出摘要包括用户输入、用户输入节点到函数输出节点之间路径的约束、分析结果报告、生成报告摘要的相应描述和检查器特定信息;所述传递摘要包括函数输入、函数输入节点到用户输入节点之间路径的约束、分析结果报告、生成报告摘要的相应描述和检查器特定信息。8.根据权利要求7所述的SQL注入缺陷检测方法,其特征在于,所述输入摘要的检查器特定信息包括函数输入节点到查询语句节点的路径约束的判断条件,分析结果报告是函数输入节点到查询语句节点之间路径约束是否满足的结果报告,生成报告摘要的相应描述是函数输入节点...

【专利技术属性】
技术研发人员:肖枭时清凯周金果范刚张川
申请(专利权)人:深圳市源伞新科技有限公司
类型:发明
国别省市:广东,44

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

1