
作者:未知
【 摘 要 】 随着计算机网络的迅速发展,有关于硬件的安全性问题越发的凸显出来。源代码安全漏洞评估正是基于计算机硬件安全为出发点研发起来的相关科技。论文探讨了源代码安全漏洞的几种常见检测方式,并对这种技巧的优缺点进行了相当,以期能为计算机网络安全提供一些参考意见。
【 关键词 】 源代码;漏洞;安全测试方式
【 中图分类号 】 TP309.2
【 文献标识码 】 A
Discussion on Detection Method of Source Code Security Vulnerabilities
Ma Hong-zhe
(Institute of Electric Power Research,Guangxi Power Grid Company Limited GuangxiNanning 530023)
【 Abstract 】 With the rapid development of computer network, there are more and more prominent on the security of software. Source code security vulnerability detection is based on the computer software security as the starting point of the research and development of related technologies. This paper analyzes several common detection methods of source code security vulnerabilities, and compares the advantages and disadvantages of these methods in order to provide some reference for computer network security.
【 Keywords 】 source code; vulnerability; security detection method

1 引言
身处于现代信息时代,网络的安全难题已变成全社会关注的热点问题。计算机平台中的任何漏洞都可能导致包括经济、政治、军事、社会、科技等多方面的严重安全隐患。只有从本质上解决计算机硬件的安全漏洞问题,才能从根本上保证网络信息的安全。然而硬件安全漏洞有极大的潜藏特性,如不产生对它的触发,很难注意到它的存在。
因此,目前全球各地都投入了长期精力,用于源代码安全漏洞评估方式的研发研究。
2 源代码漏洞的产生因素和准确体现
源代码漏洞是指在程序设计之初,由于考量不周等弊端,导致写代码的之后,一些代码写的不建立,由此留下了可以被入侵的后门,从而形成的可能会对程序原本、系统或数据带来潜在伤害的代码问题。源代码问题如果被看到、利用,所产生的弊端不可估量。代码漏洞可以体现在这些方面,算法本身以及代码原本的弊端都可能会造成代码漏洞。
代码漏洞的详细表现主要包含几个方面。
对输入的数据没有进行有效的检测。或者是进行过检查之后检查不周,也或许是处理不当,此类难题很常导致缓冲区漏洞的发生。比如在对某账号进行密码的修改输入时,如果程序已对密码的长度进行限制,用户则或许出于安全考量输入超长的密码,由此可能会导致存储密码时对其他的数据进行覆盖,引发一系列的问题。
代码逻辑设计缺憾或出错。这类问题通常是由程序员的疏忽大意造成的。比如判断时因考量不周而少漏条件,当见到特殊数据和状况时,导致程序发生不可预估的出错。
算法本身的漏洞。实现源代码的安全无漏洞,首先要保证在写代码时进行严格的算法系统漏洞检测程序,算法本身出现了漏洞,则必定造成众多弊端的存在。比如采取非常简单的加密算法,会为信息泄露留下操作的可能性。
3 常见的源代码安全测试方式
3.1 抽象解释
抽象解释是把程序代码的执行过程看成各种抽象状态的迁移过程,并借助对抽象状态进行预测来确认程序的性质。初始抽象状态需要是初始实际状况的安全近似,而且经常状态迁移需要维持恰当的关系,这样就能确保分析结果的恰当。理论上,正确的抽象从而找出程序中所有可能的缓冲区溢出漏洞。但也相应的带来众多的误报。在实际使用中,为减少误报率,用户必须按照被测程序的特点,选择适合的解释变量跟抽象域等。
3.2 词法分析
词法分析是最早被拿来进行缓冲区溢出漏洞评估的方式之一。这种技巧是对软件源程序进行扫描分析,同时与特性库进行匹配,当看到某个片与“危险片段库中的数据”匹配时,则能找出软件程序中或许存在的溢出漏洞。这种方式的局限性在于容易造成漏报或误报,并且它也不能理解工具程序的词义。因此必须进一步的进行上下文分析。
3.3 规则检查
安全性一直是程序编程过程中必需考虑的个别,因此在编程时才会从安全性的视角设定一些需要遵守的规则。而借助对这些规则的检查,就能找到源代码中的这些漏洞。规则检查在进行的程序安全检查时,可以借助选择相关的规则对某一类型的安全难题进行迅速分析,但正是受这些检查法自身特性的束缚,使得它没法对特定种类的弊端进行检测系统漏洞检测程序,无法推动全面的源代码漏洞评估。
3.4 类型推导
如果将安全属性看成一种类型,那么通过类别计算检查,就能找出源代码中的不安全漏洞类型。这种方式忽略了代码执行条件跟顺序,只是运用定型规则确认代码中零件的的类别,所以在进行源代码漏洞评估时处理速度迅速。 一般状况下,类型计算能分为三个阶段:首先是定型断言,确定变量的初始类型;其次是计算规则,即进行推断系统规则集的构建;最后是检测规则,即判定推论结果能否具备“危害性”。
类型计算法针对硬件安全漏洞的迅速检测量方备很高的优势,能进行程序的安全性分析,但鉴于约束变量取值为无穷,所以这些方式也没法用来测试特定类别的源代码漏洞。
3.5 数据流分析

数据流分析在源代码的安全评估中,用途非常广泛。这种方式从对源代码的词义信息进行构造函数切入,采用代数方式对函数进行定义跟使用的确认。
数据流分析方式基于这种一个事实,数据流沿程序控制图传播。当所有程序点的预测状态超过不动点时,传播停止,同时受到程序性质的解。但是数据流分析方式不能精确追踪指令的控制条件,所以这些测试方式受到的结果不够精确。
3.6 约束分析
通过形成、求解程序的约束条件,约束分析即可确认程序的性质。约束分析方式构建的局部化约束形成的规则可知道的表述指令副作用乃至控制条件。
约束分析测试分为约束形成跟约束求解两个阶段。约束形成阶段是进行包含变量种类跟预测状态在内的约束系统的建立,对这个平台进行求解的过程即为了约束求解阶段。
这种检测法常见于可能导致缓冲区溢出的字符串操作的测试。但是,这种方式不容易处理精确循环:程序中存在循环,且循环控制条件之间存在依赖关系时,则确立的约束条件或许无解。
3.7 符号执行
符号执行是借助采用抽象符号取代变量,对模式敏感的程序控制流进行模拟,在约束求解中对或许出现的出错解进行测试的方式。在评估中,如果发生像一组抽象符号的解满足,则能判断程序中存在错误。符号执行法的测量能力完全取决于求解工具的约束条件跟求解能力。虽然这些方式的评估时间较长,但它的特点是可以进行非常准确的检查,程序中这些细微的逻辑错误都可被找到,对于那些特定问题的检测更有必要。
3.8 模型测试
作为形式化的验证技术的一种,模型测试运用的是借助状态迁移描述程序的行为。这种方式用时序逻辑和推导树逻辑等来表示程序平台的性质,将系统属性(安全与否)的检测问题变换为搜索不符合逻辑推导的状况问题。首先,进行抽象模型的构筑,这里必需注意,只有有限状态的程序能够进行建模构建;然后模型验证要遍历程序的所有状况空间进行验证。这种测试有两种常用的方式:符号化模型测试和建模转换自动机,两者均为并发系统方式。符号化模型测试是借助将抽象模型中的状况转变为语法树描述的逻辑推导,对定理进行能满足性验证,而模型转换自动机则是借助在安全时序的基础上,构建一个新的自动机进行验证。

在协议验证和软件测试领域,模型检查的应用较为常见。模型检测无法看到程序中存在复杂语义上的出错,从而精确发现程序中潜在的安全性漏洞,但现存的建模检验软件普遍预测源程序的形式化的表示(数学表述),而不是以源程序作为输入,如必须源程序的物理建模。通常可以借助程序分析(数据流分析,控制流分析,程序切片工具)来自动完成源程序的建模的生成。程序切片提取程序的精简了的建模,其中程序分析是基础,除了语法剖析之外,更需要涉及语义的剖析,包括控制流分析跟数据流分析。
由于程序的复杂性导致了建模更加庞大的弊端,因此建模测试不仅只能预测这些有限状态的平台,还有只能对于程序中的某一个属性构造抽象模型的弊端,有较大的局限性。
4 各种测试方式的非常分析
以上介绍的几种源代码安全漏洞评估法,既有差别又存在内在的联系。比如抽象解释就是其他方式的理论基础。这些方式都有各自的优缺点,不可能处理所有的源代码安全漏洞评估问题,因此必须对这种方式的特点有一个综合的知道,在实际应用时,合理的采用几种方法的综合评估,能更好地完成源代码安全漏洞评估工作。关于这种方式的优缺点,如表1所示。
参考文献
[1] 周诚,张涛,马媛媛,李伟伟.一种高效检测源代码安全漏洞的代码审查方式[J].现代电子科技,2015,05:83-86.
[2] 时志伟,赵亮.一种关于PHP源代码安全漏洞的静态测试方式[J].信息安全与通信保密,2011,11:80-82.
[3] 朱圣才,徐御,王火剑.常见源代码安全漏洞分析与探究[J].信息网络安全,2014,02:48-52.
作者简介:
马虹哲(1987-),女,汉族,,硕士,工程师;主要研究方向和关注领域:信息安全。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-143431-1.html
加表情什么鬼