法律状态公告日
法律状态信息
法律状态
2015-06-17
授权
授权
2012-12-19
实质审查的生效 IPC(主分类):G06F11/36 申请日:20111231
实质审查的生效
2012-10-24
公开
公开
技术领域
本发明涉及源代码检测领域,更具体地说,涉及一种软件源代码安全缺陷分 析的方法和装置。
背景技术
随着社会信息化的不断加深,人们不得不开始面对日益突出的信息安全问 题。研究表明,相当数量的安全问题是由于软件自身的安全漏洞引起的。软件 开发过程中引入的大量缺陷,是产生软件漏洞的重要原因之一。
不同的软件缺陷会产生不同的后果,必须区别对待各类缺陷,分析原因, 研究其危害程度,预防方法等。建立一个比较完整的缺陷分类信息,对预防和 修复软件安全缺陷具有指导作用。
软件缺陷一般按性质分类,目前已有很多不同的软件缺陷分类法,但在当 前实际审查使用中,这些缺陷分类存在以下弊端:
(1)专门针对代码审查阶段发现缺陷的分类较少。现有的分类法一般包括动 态测试发现的缺陷类型和文档缺陷等,而在代码审查中这些缺陷类型并不是审 查关注的重点。
(2)有些代码缺陷分类中的缺陷类型不适应当前代码审查实情,而一些新的 代码缺陷类型则没有被包括。
(3)目前源代码缺陷分类种类繁多,标准不一,各有欠缺。没有一个专门针 对源代码缺陷的,比较仔细,完善的分类。
发明内容
本发明要解决的技术问题在于,提供一种对不同工具检测获得的软件源代 码的缺陷用统一的尺度描述的软件源代码安全缺陷分析的方法和装置。
本发明公开了一种软件源代码安全缺陷分析的方法,包括:
S1.设定源代码缺陷类型多个缺陷数据组,所述的缺陷数据组包括:缺陷原 因数据组、缺陷结果数据组、缺陷表现形式数据组;
S2.调取源代码并解析缺陷原因、结果、表现形式;
S3.判断所述的缺陷原因、结果、表现形式是否处于所述的缺陷数据组中, 若是,进入步骤S4,若否,进入步骤S31,将所述的缺陷原因和/或结果和/或表现 形式加入到所述的缺陷数据组中;
S4.生成所述的源代码原因、结果、表现形式并显示。
在本发明所述的软件源代码安全缺陷分析的方法中,所述的缺陷原因包括 内因、外因、主客观原因。
在本发明所述的软件源代码安全缺陷分析的方法中,所述的缺陷原因数据 组,具体是:注入缺陷及验证、应用程序编程接口错误、访问控制及密码失效、 资源共享与竞争、异常处理、不安全源码质量、边界处理、配置错误、恶意代 码。
在本发明所述的软件源代码安全缺陷分析的方法中,所述的缺陷结果数据 组,
具体是:缓冲区溢出、整数溢出、命令注入、跨站脚本、拒绝服务、路径操纵、 进程控制、资源注入、配置操纵、SQL注入、内存溢出。
在本发明所述的软件源代码安全缺陷分析的方法中,所述的缺陷表现形式 数据组,具体是:格式化字符串、赋值的目标存储空间不够、未使用括号保证 操作的优先级、尝试修改常量、引用未初始化的变量。
本发明公开了一种软件源代码安全缺陷分析的装置,用于实现上述的方法, 包括:
缺陷数据组设定单元:设定源代码缺陷类型多个缺陷数据组,所述的缺陷数 据组包括:缺陷原因数据组、缺陷结果数据组、缺陷表现形式数据组;
源代码缺陷解析单元:与所述的缺陷数据组设定单元相连,用于调取源代 码并解析缺陷原因、结果、表现形式;
源代码缺陷判断单元:与所述的源代码缺陷解析单元相连,用于判断所述 的缺陷原因、结果、表现形式是否处于所述的缺陷数据组中;
源代码缺陷显示单元:与所述的源代码缺陷判断单元相连,用于生成所述 的源代码原因、结果、表现形式并显示。
在本发明所述的软件源代码安全缺陷分析的装置中,所述的缺陷原因包括 内因、外因、主客观原因。
在本发明所述的软件源代码安全缺陷分析的装置中,所述的缺陷原因数据 组,具体是:注入缺陷及验证、应用程序编程接口错误、访问控制及密码失效、 资源共享与竞争、异常处理、不安全源码质量、边界处理、配置错误、恶意代 码。
在本发明所述的软件源代码安全缺陷分析的装置中,所述的缺陷结果数据 组,具体是:缓冲区溢出、整数溢出、命令注入、跨站脚本、拒绝服务、路径 操纵、进程控制、资源注入、配置操纵、SQL注入、内存溢出。
在本发明所述的软件源代码安全缺陷分析的装置中,所述的缺陷表现形式 数据组,具体是:格式化字符串、赋值的目标存储空间不够、未使用括号保证 操作的优先级、尝试修改常量、引用未初始化的变量。
实施本发明的一种软件源代码安全缺陷分析的方法和装置,具有以下有益的 技术效果:
1.不同工具检测的缺陷用统一的尺度描述,清楚具体,直观性强;
2.源代码缺陷检测工具检测能力的测评标准一致,有利于源代码缺陷检测 工具的开发。
附图说明
图1是本发明实施例一种软件源代码安全缺陷分析的方法流程图;
图2为本发明实施例一种软件源代码安全缺陷分析的装置模块方框图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合 实施方式并配合附图详予说明。
源代码,也可以称作为源程序,是指未编译的文本代码。是一系列人类可 读的计算机语言指令。
我们可以把它理解成源文代码,就拿我们当前看到的这个网页来说吧,其 实它是由一大堆的源代码组成,通过我们的IE(Microsoft Internet Explorer) 浏览器(或服务器)翻译成现在我们所看到的这个样子。
源代码就是用汇编语言和高级语言写出来的代码。主要对象是面向开发 者;我们平常使用的应用程序都是经过源码编译打包以后发布的,呈现的最 后结果是面向使用者,最终客户的。
而随着互联网应用的不断创新与发展,信息与网络安全也面临着前所未有 的严峻问题,网络安全领域所面临的挑战日益严峻,网络安全问题也日益被人 们重视。通常意义上的网络安全的最大威胁是程序上的漏洞,程序漏洞检测主 要分为运行时检测和静态分析方法。几乎所有的源代码程序都存在或大或小的 缺陷,如何及早发现缺陷,成为人们经常面临的问题。
请参阅图1,本发明实施例一种软件源代码安全缺陷分析的方法,包括:
S1.设定源代码缺陷类型多个缺陷数据组,所述的缺陷数据组包括:缺陷原 因数据组、缺陷结果数据组、缺陷表现形式数据组;
S2.调取源代码并解析缺陷原因、结果、表现形式;
S3.判断所述的缺陷原因、结果、表现形式是否处于所述的缺陷数据组中, 若是,进入步骤S4,若否,进入步骤S31,将所述的缺陷原因和/或结果和/或表现 形式加入到所述的缺陷数据组中;
S4.生成所述的源代码原因、结果、表现形式并显示。
本发明的方法中,我们将缺陷原因数据组、缺陷结果数据组、缺陷表现形 式数据组看作是“三棵树”,请参阅下表1,本发明提出的“三棵树”缺陷分 类法,从三个角度对软件源代码缺陷进行分类。
第一棵树:缺陷产生的原因(兼顾内因、外因和主客观原因);第二棵树: 缺陷造成的结果;第三棵树:缺陷的表现形式。
其中,按缺陷产生的原因划分有:注入缺陷及验证、应用程序编程接口错 误、访问控制及密码失效、资源共享与竞争、异常处理、不安全源码质量、边 界处理、配置错误、恶意代码。
按缺陷造成的结果分类:缓冲区溢出、整数溢出、命令注入、跨站脚本、 拒绝服务、路径操纵、进程控制、资源注入、配置操纵、SQL注入、内存溢出等。
按照表现形式分类:格式化字符串、赋值的目标存储空间不够、未使用 括号保证操作的优先级、尝试修改常量、引用未初始化的变量、使用Class Loader、错误的clone()方法、Equals()方法错误、多次调用exit()函数等。
表1:“三棵树”式缺陷信息
下面以应用实例解析“三棵树”分类法:
请参阅表2和表3,由于目前各个组织机构,静态分类工具对源代码缺陷 描述的方法各不一样,采用“三棵树”分类法能够对不同的缺陷进行描述,使 缺陷有统一的分类方法。
“三棵树”分类法的应用例子,抽样部分CWE缺陷(CWE为某一源代码名称), 使用“三棵树”缺陷分类法进行描述,抽取的CWE缺陷信息见表1,用“三棵树” 缺陷分类法分类后的结果见表2。
表2:抽样CWE缺陷信息
表3:CWE缺陷用“三棵树”缺陷分类法描述
请参阅图2,一种软件源代码安全缺陷分析的装置,用于实现上述的方法, 包括:
缺陷数据组设定单元10、源代码缺陷解析单20、源代码缺陷判断单元30、 源代码缺陷添加单元35、源代码缺陷显示单40。
缺陷数据组设定单元10:设定源代码缺陷类型多个缺陷数据组,所述的缺陷 数据组包括:缺陷原因数据组、缺陷结果数据组、缺陷表现形式数据组;
源代码缺陷解析单元20:与缺陷数据组设定单元10相连,用于调取源代码 并解析缺陷原因、结果、表现形式;
源代码缺陷判断单元30:与源代码缺陷解析单元20相连,用于判断所述的 缺陷原因、结果、表现形式是否处于所述的缺陷数据组中;
源代码缺陷添加单元35:与源代码缺陷判断单元30相连,用于当新增了新 的缺陷时,将所述的缺陷原因和/或结果和/或表现形式加入到所述的缺陷数据 组中。即:如果该实例缺陷产生的原因、缺陷造成的结果、缺陷表现形式三者 中有一个、两个或三个不在其对应的树中,则将其加入到对应的树中。
源代码缺陷显示单元40:与源代码缺陷判断单元30及源代码缺陷添加单元 35相连,用于生成所述的源代码原因、结果、表现形式并显示。
其中,所述的缺陷原因包括内因、外因、主客观原因。
其中,按缺陷产生的原因划分有:注入缺陷及验证、应用程序编程接口错 误、访问控制及密码失效、资源共享与竞争、异常处理、不安全源码质量、边 界处理、配置错误、恶意代码。
按缺陷造成的结果分类:缓冲区溢出、整数溢出、命令注入、跨站脚本、 拒绝服务、路径操纵、进程控制、资源注入、配置操纵、SQL注入、内存溢出等。
按照表现形式分类:格式化字符串、赋值的目标存储空间不够、未使用 括号保证操作的优先级、尝试修改常量、引用未初始化的变量、使用Class Loader、错误的clone()方法、Equals()方法错误、多次调用exit()函数等。
本发明可以是将不同的源代码缺陷用“三棵树”分类法进行统一描述,这 样就可以实现将各个商业工具,组织机构对源代码缺陷的不同描述方法用统一 的方法进行描述。
由于源代码缺陷检测工具分类各异,应用“三棵树”缺陷分类方法,可以 将不同工具检测的缺陷用统一的尺度描述,可用于对源代码缺陷检测工具检测 能力的测评,可用于源代码缺陷检测工具的开发。
实施本发明的一种软件源代码安全缺陷分析的方法和装置,具有以下有益 的技术效果:
1.不同工具检测的缺陷用统一的尺度描述,清楚具体,直观性强;
2.源代码缺陷检测工具检测能力的测评标准一致,有利于源代码缺陷检测 工具的开发。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述 的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本 领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保 护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
机译: 一种在分析过程中控制其源代码中固有的软件文件的算法不变的方法
机译: 用于软件源代码分析和软件元数据分析的系统,方法和算法
机译: 用于软件源代码分析和软件元数据分析的系统,方法和算法