IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

代码安全的历史与发展现状

发布时间:2017-10-10 17:27文章来源:互联网文章作者: 互联网点击次数:
一、代码安全概况 随着计算机和通信技术的飞速发展,软件已经成为信息化建设的重要基础设施,无数事实证明软件中的安全漏洞是导致安全事件频繁发生的根本原因。而软件功能的多样化和结构的复杂性必然带来信息系统和基础设施受攻击面的增加,大幅提升安全威胁

一、代码安全概况

随着计算机和通信技术的飞速发展,软件已经成为信息化建设的重要基础设施,无数事实证明软件中的安全漏洞是导致安全事件频繁发生的根本原因。而软件功能的多样化和结构的复杂性必然带来信息系统和基础设施受攻击面的增加,大幅提升安全威胁产生概率。因此,尽早发现软件安全漏洞并进行修复一直以来都是学术界、产业界努力的方向。 源代码作为软件的最初原始形态,其安全缺陷是导致软件漏洞的直接根源。因此,通过静态方法分析发现源代码中的安全缺陷是降低软件潜在漏洞的重要方法。并且由于该工作在程序上线之前实施,能够大大降低修复成本。经过40余年的发展,源代码分析技术和工具的功能和性能都有很大的提高,并且基于它们的软件代码安全保障方法也蓬勃发展。目前,许多国家和企业也逐渐意识到源代码分析和保障的重要性,通过各种政策和方法论规范此方面的工作。

二、主流代码安全分析技术

源代码静态分析技术的发展与编译技术和计算机硬件设备的进步息息相关。源代码安全分析技术多是在编译技术或程序验证技术的基础上提出的,目前主流的分析技术主要包括以下四大类:

1. 词法分析(lexical analysis)技术

词法分析只对代码的文本或Token流与已知归纳好的缺陷模式进行相似匹配,不深入分析代码的语义和代码上下文。词法分析检测效率较高,但是只能找到简单的缺陷,并且误报率较高。

2. 抽象解释(abstract interpretation)技术

此类技术用于证明一段代码没有错误,但不保证报告错误的真实性。该技术的基本原理是将程序变量的值映射到更加简单的抽象域上并模拟程序的执行情况。因此,该技术的精度和性能取决于抽象域对真实程序值域的近似情况。

3. 程序模拟(programsimulation)技术

该类技术模拟程序执行得到所有执行状态,分析结果较为精确,主要用于查找逻辑复杂和触发条件苛刻的缺陷,但性能提高难度大。主要包括模型检查(model checking)和符号执行(symbolic execution)两种技术。模型检查将软件构造为状态机或者有向图等抽象模型,并使用模态/时序逻辑公式等形式化的表达式来描述安全属性,对模型遍历验证这些属性是否满足;符号执行使用符号值表示程序变量值,并模拟程序的执行来查找满足漏洞检测规则的情况。

4. 定理证明(theorem proving)技术

该技术将程序错误的前提和程序本身描述成一组逻辑表达式,然后基于可满足性理论(satisfiability theory)并利用约束求解器求得可能导致程序错误的执行路径。该方法较为灵活性,能够使用逻辑公式方便地描述软件缺陷,并可根据分析性能和精度的不同要求调整约束条件,对于大型工业级软件的分析较为有效。

三、软件代码安全保障现状

美国等发达国家非常重视软件代码安全保障工作,从政府、研究机构、产业界等各个层面推进代码安全保障工作的落地实施,目前已经形成了总体设计、标准规范、缺陷资源、工具研发、开源计划等的较为完整的体系。但我国的代码安全保障在国家或行业信息系统安全保障体系中的位置还不够突出,其作用尚未得到较好的发挥。 早在2005年,美国总统信息技术咨询委员会关于信息安全的年度报告中就指出:美国政府和军队等重要部门使用的软件产品,必须加强安全检测措施,尤其是应该进行软件代码层面的安全检测。 在美国国土安全部(DHS)和国家安全局(NSA)的共同资助下,MITRE公司开展了对软件代码缺陷的研究工作,并建立了软件代码缺陷分类库CWE(Common Weakness Enumeration),以统一分类和标识软件代码缺陷。 美国国土安全部资助了“软件安全保障计划(SAP)”,将减少软件安全风险置于一个非常突出的位置;资助了“内建安全(BSI)”的开发,其基本原则是:软件安全本质上是一个软件工程问题,必须在整个软件开发生命周期中以一种系统的方式进行管理;此外,在其资助下,美国国家标准与技术研究院(NIST)提出并进行软件保障度量和工具检测项目SAMATE的研究,其中源代码缺陷分析是重要组成部分,这个数据库包含实际的软件应用程序和已知的错误或漏洞,便于进行漏洞分析和查找;DHS还资助了开源软件代码测试计划,该计划自2006年开始,由美国Coverity公司承担,其目的是针对广泛应用的开源软件代码进行安全隐患的筛查和加固,具体检测数据不对外公开,截至2017年2月,累计检测各种开源软件7000多个,发现了大量安全缺陷。 美国CERT、SANS、OWASP等第三方研究机构也在软件代码安全保障领域开展了许多工作,例如CERT发布了一系列安全编程(C/C++/Java等)标准,SANS和OWASP则每年分别发布了严重代码缺陷TOP25和TOP10,用于指导开发人员进行安全的编码,尽量避免代码中的安全缺陷。 在企业界,包括微软、思科、英特尔、SAP、Juniper、EMC等大型公司都已经或正在部署软件源代码缺陷分析系统。此外,微软、思科等公司还提出了安全开发生命周期(SDL)的概念,将安全措施贯穿于软件生命周期的整个过程,以尽量减少设计、代码和文档中的漏洞。Gartner公司于2012年提出了DevSecOps的概念,旨在将安全贯穿于敏捷开发和运营的始末,并且强调:“如有可能,安全控制必须是可编程的和自动化的”,这使得代码安全和安全开发的重要性更加突出,目前许多团队都在致力于DevSecOps在企业内部的落地。
代码安全的历史与发展现状
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/netsafe/Website/1074310.html

标签分类:

上一篇:上一篇:逆天而行:我们如何在云中发掘僵尸网络
下一篇: 下一篇:没有了
无觅关联推荐,快速提升流量