CN102750220B - 一种软件源代码安全缺陷分析的方法和装置 - Google Patents
一种软件源代码安全缺陷分析的方法和装置 Download PDFInfo
- Publication number
- CN102750220B CN102750220B CN201110460378.6A CN201110460378A CN102750220B CN 102750220 B CN102750220 B CN 102750220B CN 201110460378 A CN201110460378 A CN 201110460378A CN 102750220 B CN102750220 B CN 102750220B
- Authority
- CN
- China
- Prior art keywords
- defect
- source code
- data group
- result
- expression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软件源代码安全缺陷分析的方法,包括:S1.设定源代码缺陷类型多个缺陷数据组;S2.调取源代码并解析缺陷原因、结果、表现形式;S3.判断所述的缺陷原因、结果、表现形式是否处于所述的缺陷数据组中,若是,进入步骤S4,若否,进入步骤S31,将所述的缺陷原因和/或结果和/或表现形式加入到所述的缺陷数据组中;S4.生成所述的源代码原因、结果、表现形式并显示。本发明还公开了一种软件源代码安全缺陷分析的装置。本发明使不同工具检测的缺陷用统一的尺度描述,清楚具体,直观性强。
Description
技术领域
本发明涉及源代码检测领域,更具体地说,涉及一种软件源代码安全缺陷分析的方法和装置。
背景技术
随着社会信息化的不断加深,人们不得不开始面对日益突出的信息安全问题。研究表明,相当数量的安全问题是由于软件自身的安全漏洞引起的。软件开发过程中引入的大量缺陷,是产生软件漏洞的重要原因之一。
不同的软件缺陷会产生不同的后果,必须区别对待各类缺陷,分析原因,研究其危害程度,预防方法等。建立一个比较完整的缺陷分类信息,对预防和修复软件安全缺陷具有指导作用。
软件缺陷一般按性质分类,目前已有很多不同的软件缺陷分类法,但在当前实际审查使用中,这些缺陷分类存在以下弊端:
(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注入、内存溢出等。
按照表现形式分类:格式化字符串、赋值的目标存储空间不够、未使用括号保证操作的优先级、尝试修改常量、引用未初始化的变量、使用ClassLoader、错误的clone()方法、Equals()方法错误、多次调用exit()函数等。
表1:“三棵树”式缺陷信息
下面以应用实例解析“三棵树”分类法:
请参阅表2和表3,由于目前各个组织机构,静态分类工具对源代码缺陷描述的方法各不一样,采用“三棵树”分类法能够对不同的缺陷进行描述,使缺陷有统一的分类方法。
“三棵树”分类法的应用例子,抽样部分CWE缺陷(CWE为某一源代码名称),使用“三棵树”缺陷分类法进行描述,抽取的CWE缺陷信息见表1,用“三棵树”缺陷分类法分类后的结果见表2。
表2:抽样CWE缺陷信息
CWEID | 缺陷信息 |
366 | Race Condition within a Thread |
122 | Heap-based Buffer Overflow |
121 | Stack-based Buffer Overflow |
193 | Off-by-one Error |
131 | Incorrect Calculation of Buffer Size |
532 | Information Leak Through Log Files |
526 | Information Leak Through Environmental Variables |
538 | File and Directory Information Exposure |
259 | Use of Hard-coded Password |
260 | Password in Configuration File |
表3:CWE缺陷用“三棵树”缺陷分类法描述
CWEID | 缺陷产生的原因 | 缺陷造成的结果 | 缺陷的表现形式 |
366 | 资源共享与竞争 | 死锁 | 线程之间存在竞争条件 |
122 | 注入缺陷及验证 | 缓冲区溢出 | 堆溢出 |
121 | 注入缺陷及验证 | 缓冲区溢出 | 栈溢出 |
193 | 注入缺陷及验证 | 缓冲区溢出 | Off-by-one错误 |
131 | 注入缺陷及验证 | 缓冲区溢出 | 缓冲区大小计算错误 |
532 | 不安全的代码质量 | 系统信息泄露 | 日志文件信息泄露 |
526 | 不安全的代码质量 | 系统信息泄露 | 环境变量信息泄露 |
538 | 不安全的代码质量 | 系统信息泄露 | 文件目录信息泄露 |
259 | 访问控制及密码失效 | 密码破解 | 使用硬编码 |
260 | 访问控制及密码失效 | 密码破解 | 配置文件中的密码 |
请参阅图2,一种软件源代码安全缺陷分析的装置,用于实现上述的方法,包括:
缺陷数据组设定单元10、源代码缺陷解析单20、源代码缺陷判断单元30、源代码缺陷添加单元35、源代码缺陷显示单40。
缺陷数据组设定单元10:设定源代码缺陷类型多个缺陷数据组,所述的缺陷数据组包括:缺陷原因数据组、缺陷结果数据组、缺陷表现形式数据组;
源代码缺陷解析单元20:与缺陷数据组设定单元10相连,用于调取源代码并解析缺陷原因、结果、表现形式;
源代码缺陷判断单元30:与源代码缺陷解析单元20相连,用于判断所述的缺陷原因、结果、表现形式是否处于所述的缺陷数据组中;
源代码缺陷添加单元35:与源代码缺陷判断单元30相连,用于当新增了新的缺陷时,将所述的缺陷原因和/或结果和/或表现形式加入到所述的缺陷数据组中。即:如果该实例缺陷产生的原因、缺陷造成的结果、缺陷表现形式三者中有一个、两个或三个不在其对应的树中,则将其加入到对应的树中。
源代码缺陷显示单元40:与源代码缺陷判断单元30及源代码缺陷添加单元35相连,用于生成所述的源代码原因、结果、表现形式并显示。
其中,所述的缺陷原因包括内因、外因、主客观原因。
其中,按缺陷产生的原因划分有:注入缺陷及验证、应用程序编程接口错误、访问控制及密码失效、资源共享与竞争、异常处理、不安全源码质量、边界处理、配置错误、恶意代码。
按缺陷造成的结果分类:缓冲区溢出、整数溢出、命令注入、跨站脚本、拒绝服务、路径操纵、进程控制、资源注入、配置操纵、SQL注入、内存溢出等。
按照表现形式分类:格式化字符串、赋值的目标存储空间不够、未使用括号保证操作的优先级、尝试修改常量、引用未初始化的变量、使用ClassLoader、错误的clone()方法、Equals()方法错误、多次调用exit()函数等。
本发明可以是将不同的源代码缺陷用“三棵树”分类法进行统一描述,这样就可以实现将各个商业工具,组织机构对源代码缺陷的不同描述方法用统一的方法进行描述。
由于源代码缺陷检测工具分类各异,应用“三棵树”缺陷分类方法,可以将不同工具检测的缺陷用统一的尺度描述,可用于对源代码缺陷检测工具检测能力的测评,可用于源代码缺陷检测工具的开发。
实施本发明的一种软件源代码安全缺陷分析的方法和装置,具有以下有益的技术效果:
1.不同工具检测的缺陷用统一的尺度描述,清楚具体,直观性强;
2.源代码缺陷检测工具检测能力的测评标准一致,有利于源代码缺陷检测工具的开发。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (8)
1.一种软件源代码安全缺陷分析的方法,其特征在于,包括:
S1.设定源代码缺陷类型多个缺陷数据组,所述的缺陷数据组包括:缺陷原因数据组、缺陷结果数据组、缺陷表现形式数据组;
S2.调取源代码并解析缺陷原因、结果、表现形式;
S3.判断所述的缺陷原因、结果、表现形式是否处于所述的缺陷数据组中,当所述的缺陷原因、结果、表现形式处于所述的缺陷数据组中时,进入步骤S4;
S31.当所述的缺陷原因、结果、表现形式不处于所述的缺陷数据组中时,将所述的缺陷原因和/或结果和/或表现形式加入到所述的缺陷数据组中;
S4.生成所述的源代码原因、结果、表现形式并显示。
2.如权利要求1所述的软件源代码安全缺陷分析的方法,其特征在于,所述的缺陷原因数据组,具体是:注入缺陷及验证、应用程序编程接口错误、访问控制及密码失效、资源共享与竞争、异常处理、不安全源码质量、边界处理、配置错误、恶意代码。
3.如权利要求1所述的软件源代码安全缺陷分析的方法,其特征在于,所述的缺陷结果数据组,具体是:缓冲区溢出、整数溢出、命令注入、跨站脚本、拒绝服务、路径操纵、进程控制、资源注入、配置操纵、SQL注入、内存溢出。
4.如权利要求1所述的软件源代码安全缺陷分析的方法,其特征在于,所述的缺陷表现形式数据组,具体是:格式化字符串、赋值的目标存储空间不够、未使用括号保证操作的优先级、尝试修改常量、引用未初始化的变量。
5.一种软件源代码安全缺陷分析的装置,用于实现权利要求1所述的方法,其特征在于,包括:
缺陷数据组设定单元:设定源代码缺陷类型多个缺陷数据组,所述的缺陷数据组包括:缺陷原因数据组、缺陷结果数据组、缺陷表现形式数据组;
源代码缺陷解析单元:与所述的缺陷数据组设定单元相连,用于调取源代码并解析缺陷原因、结果、表现形式;
源代码缺陷判断单元:与所述的源代码缺陷解析单元相连,用于判断所述的缺陷原因、结果、表现形式是否处于所述的缺陷数据组中;
源代码缺陷添加单元:与源代码缺陷判断单元相连,用于当新增了新的缺陷时,将所述的缺陷原因和/或结果和/或表现形式加入到所述的缺陷数据组中;
源代码缺陷显示单元:与所述的源代码缺陷判断单元相连,用于当所述的缺陷原因、结果、表现形式处于所述的缺陷数据组中时,生成所述的源代码原因、结果、表现形式并显示。
6.如权利要求5所述的软件源代码安全缺陷分析的装置,其特征在于,所述的缺陷原因数据组,具体是:注入缺陷及验证、应用程序编程接口错误、访问控制及密码失效、资源共享与竞争、异常处理、不安全源码质量、边界处理、配置错误、恶意代码。
7.如权利要求5所述的软件源代码安全缺陷分析的装置,其特征在于,所述的缺陷结果数据组,具体是:缓冲区溢出、整数溢出、命令注入、跨站脚本、拒绝服务、路径操纵、进程控制、资源注入、配置操纵、SQL注入、内存溢出。
8.如权利要求5所述的软件源代码安全缺陷分析的装置,其特征在于,所述的缺陷表现形式数据组,具体是:格式化字符串、赋值的目标存储空间不够、未使用括号保证操作的优先级、尝试修改常量、引用未初始化的变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110460378.6A CN102750220B (zh) | 2011-12-31 | 2011-12-31 | 一种软件源代码安全缺陷分析的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110460378.6A CN102750220B (zh) | 2011-12-31 | 2011-12-31 | 一种软件源代码安全缺陷分析的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102750220A CN102750220A (zh) | 2012-10-24 |
CN102750220B true CN102750220B (zh) | 2015-06-17 |
Family
ID=47030430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110460378.6A Active CN102750220B (zh) | 2011-12-31 | 2011-12-31 | 一种软件源代码安全缺陷分析的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102750220B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9384117B2 (en) | 2013-03-01 | 2016-07-05 | Infineon Technologies Ag | Machine and methods for evaluating failing software programs |
WO2018045585A1 (zh) * | 2016-09-12 | 2018-03-15 | 深圳中兴力维技术有限公司 | 一种代码违反项的检查方法及系统 |
CN107357720A (zh) * | 2017-06-16 | 2017-11-17 | 广州云测信息技术有限公司 | 一种软件运行错误的测试方法及系统 |
CN110427316B (zh) * | 2019-07-04 | 2023-02-14 | 沈阳航空航天大学 | 基于访问行为感知的嵌入式软件缺陷修复方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8494832B2 (en) * | 2007-06-20 | 2013-07-23 | Sanjeev Krishnan | Method and apparatus for software simulation |
-
2011
- 2011-12-31 CN CN201110460378.6A patent/CN102750220B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101017458A (zh) * | 2007-03-02 | 2007-08-15 | 北京邮电大学 | 基于源代码静态分析的软件安全代码分析器及其检测方法 |
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102750220A (zh) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ren et al. | Empirical evaluation of smart contract testing: What is the best choice? | |
CN107368417B (zh) | 一种漏洞挖掘技术测试模型的测试方法 | |
CN106650452B (zh) | 一种Android系统内置应用漏洞挖掘方法 | |
CN102542201B (zh) | 一种网页中恶意代码的检测方法及系统 | |
Sadeghian et al. | A taxonomy of SQL injection detection and prevention techniques | |
US9892263B2 (en) | System, method and apparatus to visually configure an analysis of a program | |
CN107659570A (zh) | 基于机器学习与动静态分析的Webshell检测方法及系统 | |
CN105868630A (zh) | 恶意pdf文档检测方法 | |
CN103679030B (zh) | 一种基于动态语义特征的恶意代码分析检测方法 | |
CN106572117A (zh) | 一种WebShell文件的检测方法和装置 | |
CN103761476A (zh) | 特征提取的方法及装置 | |
CN105205397A (zh) | 恶意程序样本分类方法及装置 | |
CN102750220B (zh) | 一种软件源代码安全缺陷分析的方法和装置 | |
CN105045715B (zh) | 基于编程模式和模式匹配的漏洞聚类方法 | |
Li et al. | Large-scale third-party library detection in android markets | |
CN101901184B (zh) | 检查应用程序漏洞的方法、装置和系统 | |
Chen et al. | When chatgpt meets smart contract vulnerability detection: How far are we? | |
Zheng et al. | Turn the rudder: A beacon of reentrancy detection for smart contracts on ethereum | |
Pandey et al. | A framework for producing effective and efficient secure code through malware analysis | |
US9171168B2 (en) | Determine anomalies in web application code based on authorization checks | |
CN116932381A (zh) | 小程序安全风险自动化评估方法及相关设备 | |
Jana et al. | Code-based analysis approach to detect and prevent SQL injection attacks | |
Beksultanova et al. | Analysis tools for smart contract security | |
CN116257847A (zh) | 针对Linux恶意代码的技战术自动化分析系统、方法、介质及设备 | |
US10482279B2 (en) | Pattern-less private data detection on data sets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |