[发明专利]程序的代码审核方法和装置有效
申请号: | 201210271493.3 | 申请日: | 2012-07-31 |
公开(公告)号: | CN103577758A | 公开(公告)日: | 2014-02-12 |
发明(设计)人: | 汪涛 | 申请(专利权)人: | 西门子公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 李慧 |
地址: | 德国*** | 国省代码: | 德国;DE |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序 代码 审核 方法 装置 | ||
1.一种利用漏洞模型审核程序代码的方法,该方法包括:
对程序的源代码进行扫描,当在扫描到功能函数时,确定所述功能函数的输入参数是否被传递到漏洞模型定义的危险函数,和所述输入参数从所述功能函数传递到所述危险函数的路径上是否缺少漏洞模型中定义的检查函数;在确定所述功能函数的输入参数被传递到漏洞模型定义的危险函数,并且所述输入参数从所述功能函数传递到所述危险函数的路径上缺少漏洞模型中定义的检查函数时,将所述功能函数作为新的危险函数加入到漏洞模型中,并确定检测到安全漏洞;所述漏洞模型中至少包含被扫描代码的危险函数和检查函数的定义信息。
2.如权利要求1所述的方法,该方法进一步包括:
在扫描到检查函数时,根据记录在漏洞模型中该检查函数输入值的属性信息,确定经过该检查函数的安全检查后的输入参数是否安全;
在确定输入参数不安全并且该不安全的输入参数被传递到漏洞模型定义的危险函数时,确定检测到安全漏洞。
3.如权利要求1所述的方法,该方法进一步包括:
在扫描到一个检查函数时,根据记录在漏洞模型中的该检查函数返回值的属性信息,确定该检查函数的返回参数是否安全;
在确定返回参数不安全并且该返回参数传递到漏洞模型定义的危险函数时,确定检测到安全漏洞。
4.如权利要求1或2或3所述的方法,在对程序的源代码进行扫描之前,该方法进一步包括:
读取漏洞模型中使用父类定义的源函数,在源代码中查找该父类的子类的函数,并将查找到的函数确定为代码扫描的起始点;和/或,
读取漏洞模型中使用接口定义的源函数,在源代码中查找使用该接口的类的函数,并将查找到的函数确定为代码扫描的起始点;所述源函数为接收程序外部的输入参数的函数。
5.如权利要求1或2或3所述的方法,在将所述功能函数作为新的危险函数加入到漏洞模型中时,该方法进一步包括:
将输入参数从所述功能函数传递到所述危险函数的所述路径上除所述功能函数之外的第一个函数的信息,作为新的危险函数的根原因属性信息记录在漏洞模型中,以用于安全漏洞的原因定位分析。
6.一种利用漏洞模型审查程序代码的方法,该方法包括:
对程序的源代码进行扫描,在扫描到检查函数时:
根据预先定义在漏洞模型中该检查函数输入值的属性信息,确定经过该检查函数的安全检查后的输入参数是否安全;在确定输入参数不安全并且该不安全的输入参数被传递到漏洞模型定义的危险函数时,确定检测到安全漏洞;所述漏洞模型中至少包含被扫描代码的检查函数的定义信息;和/或,
根据预先定义在漏洞模型中该检查函数返回值的属性信息,确定经过该检查函数的返回参数是否安全;在确定返回参数不安全并且该返回参数被传递到漏洞模型定义的危险函数时,确定检测到安全漏洞;所述漏洞模型中至少包含被扫描代码的检查函数的定义信息。
7.如权利要求6所述的方法,在对程序的源代码进行扫描之前,该方法进一步包括:
读取漏洞模型中使用父类定义的源函数,在源代码中查找该父类的子类的函数,并将查找到的函数确定为代码扫描的起始点;和/或,
读取漏洞模型中使用接口定义的源函数,在源代码中查找使用该接口的类的函数,并将查找到的函数确定为代码扫描的起始点;所述源函数为接收程序外部的输入参数的函数。
8.一种用于程序代码审核的漏洞模型的生成方法,该方法包括:
在漏洞模型中使用父类定义源函数,以在代码审核过程中使用该父类的子类的函数作为代码扫描的起始点;和/或,在漏洞模型中使用接口定义源函数,以在代码审核过程中使用该接口的类的函数作为代码扫描的起始点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西门子公司,未经西门子公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210271493.3/1.html,转载请声明来源钻瓜专利网。