一种检测python代码漏洞的方法及装置的制造方法_4

文档序号:9489381阅读:来源:国知局
据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0139]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0140]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0141]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0142]显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1.一种检测python代码漏洞的方法,其特征在于,包括: 对待检测的python代码进行语法解析,生成相应的语法树,以及对语法树进行数据流分析,提取出使用的危险函数; 对提取出的危险函数的外层函数所包含的参数进行跟踪,将赋值类型满足预设传递规则的参数确定为可控参数,组成可控参数集合; 将获得的危险函数中包含的参数与可控参数集合中的每一个可控参数进行匹配,若匹配成功,则确定危险函数中包含的参数为可控参数; 根据包含有可控参数的危险函数确定相应的代码漏洞。2.如权利要求1所述的方法,其特征在于,进一步包括: 在对python代码进行语法解析的过程中,根据指示删除非必要代码。3.如权利要求1所述的方法,其特征在于,进一步包括, 在进行数据流跟踪的过程中,基于输入import机制,从数据流以及python代码的环境变量中获取引入的第三方模块或/和第三方函数,并对所述第三方模块或/和第三方函数进行解析; 根据解析结果判断所述第三方模块或/和第三方函数包含的参数在整个函数处理过程是否发生改变,将未发生改变的参数归属于可控参数集合中。4.如权利要求1、2或3任一项所述的方法,其特征在于,将赋值类型满足预设传递规则的参数确定为可控参数,具体包括: 将赋值类型满足以下规则中的一种或任意组合的参数确定为可控参数: 参数的赋值类型为:指定的属性取值; 参数的赋值类型为:字符串拼接,且被拼接的字符串中包含已认定的可控参数; 参数的赋值类型为:分片符取值; 参数的赋值类型为:列表解析式,且所述列表解析式基于至少一个可控因子进行迭代,或者,且所述列表解析式为包含有可控因子的列表相加; 参数为赋值类型为:经字符串操作函数处理的返回值,或/和,经未过滤函数处理的返回值。5.如权利要求4所述的方法,其特征在于,进一步包括: 对所述语法树进行类分析,在分析过程中将各个类的初始化参数归属于所述可控参数集合,以及对各个类的变量赋值进行跟踪,若任一危险函数中使用了类的变量,则确定所述任一危险函数包含有可控参数。6.如权利要求4所述的方法,其特征在于,确定任一危险函数中包含的参数为可控参数后,在根据所述任一危险函数确定相应的代码漏洞之前,进一步包括: 采用用户预设的安全函数或者python自带的安全函数对所述任一危险函数包含的可控参数进行处理,确定经处理后的可控参数仍可控时,最终判定所述任一危险函数为真正的危险函数。7.—种检测python代码漏洞的装置,其特征在于,包括: 提取单元,用于对待检测的python代码进行语法解析,生成相应的语法树,以及对语法树进行数据流分析,提取出使用的危险函数; 处理单元,用于对提取出的危险函数的外层函数所包含的参数进行跟踪,将赋值类型满足预设传递规则的参数确定为可控参数,组成可控参数集合; 匹配单元,用于将获得的危险函数中包含的参数与可控参数集合中的每一个可控参数进行匹配,若匹配成功,则确定危险函数中包含的参数为可控参数; 确定单元,用于根据包含有可控参数的危险函数确定相应的代码漏洞。8.如权利要求7所述的装置,其特征在于,所述提取单元进一步用于: 在对python代码进行语法解析的过程中,根据指示删除非必要代码。9.如权利要求7所述的装置,其特征在于,所述处理单元进一步用于, 在进行数据流跟踪的过程中,基于输入import机制,从数据流以及python代码的环境变量中获取引入的第三方模块或/和第三方函数,并对所述第三方模块或/和第三方函数进行解析; 根据解析结果判断所述第三方模块或/和第三方函数包含的参数在整个函数处理过程是否发生改变,将未发生改变的参数归属于可控参数集合中。10.如权利要求7、8或9任一项所述的装置,其特征在于,将赋值类型满足预设传递规则的参数确定为可控参数时,所述处理单元具体用于: 将赋值类型满足以下规则中的一种或任意组合的参数确定为可控参数: 参数的赋值类型为:指定的属性取值; 参数的赋值类型为:字符串拼接,且被拼接的字符串中包含已认定的可控参数; 参数的赋值类型为:分片符取值; 参数的赋值类型为:列表解析式,且所述列表解析式基于至少一个可控因子进行迭代,或者,且所述列表解析式为包含有可控因子的列表相加; 参数为赋值类型为:经字符串操作函数处理的返回值,或/和,经未过滤函数处理的返回值。11.如权利要求10所述的装置,其特征在于,所述处理单元进一步用于: 对所述语法树进行类分析,在分析过程中将各个类的初始化参数归属于所述可控参数集合,以及对各个类的变量赋值进行跟踪,若任一危险函数中使用了类的变量,则确定所述任一危险函数包含有可控参数。12.如权利要求10所述的装置,其特征在于,确定任一危险函数中包含的参数为可控参数后,在根据所述任一危险函数确定相应的代码漏洞之前,所述处理单元进一步用于: 采用用户预设的安全函数或者python自带的安全函数对所述任一危险函数包含的可控参数进行处理,确定经处理后的可控参数仍可控时,最终判定所述任一危险函数为真正的危险函数。
【专利摘要】本发明涉及计算机技术,公开了一种检测python代码漏洞的方法及装置,用于提高python代码漏洞的检测精准度。该方法为:基于待检测python代码生成相应的语法树,提取出危险函数;再对危险函数的外层函数所包含的参数进行跟踪,将赋值类型满足预设传递规则的参数确定为可控参数,组成可控参数集合,以及确定危险函数中包含的参数归属于上述可控参数组合时,确定危险函数中包含有可控参数;最后,再根据包含有可控参数的危险函数确定相应的代码漏洞。这样,大大提高了python代码漏洞检测的准确性,解决了python代码语法灵活维护困难的问题,由于是自动化的跟踪参数,降低了操作复杂度。
【IPC分类】G06F11/36
【公开号】CN105243019
【申请号】CN201510708735
【发明人】廖新喜
【申请人】北京神州绿盟信息安全科技股份有限公司, 北京神州绿盟科技有限公司
【公开日】2016年1月13日
【申请日】2015年10月27日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1