新闻资讯
看你所看,想你所想

代码扫描

代码扫描

静态原始码扫描是近年被人提及较多的软体套用安全解决方案之一。它是指在软体工程中,程式设计师在写好原始码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,找出代码当中存在的一些语义缺陷、安全漏洞的解决方案。目前的静态扫描技术已经从90年代时候的,编码规则匹配这种由编译技术拓展过来的分析技术向程式模拟全路径执行的方向发展,由此,这种模拟执行相对的执行路径比动态执行更多,能够发现很多动态测试难以发现的缺陷。

基本介绍

  • 中文名:代码扫描
  • 外文名:static code analysis
  • 性质:软体缺陷发现方法
  • 类别:计算机软体、编译技术
  • 不足:误报、漏报等

概述

信息安全是一个随时都在发展和变化的动态事物,攻击的领域已经由传统的网路和系统层面上升到了套用层面,近期越来越多的套用系统面临攻击威胁。套用系统的安全性能,一方面立足于系统安全方案的分析与设计,而另一方面同样也取决于系统实现过程中是否存在安全性缺陷。为降低套用系统的安全风险,减少软体代码编写中可能出现的安全漏洞,提高套用系统自身安全防护能力,软体的套用方越来越依赖于採用原始码安全扫描工具在软体开发的过程中去帮助软体开发团队快速查找、定位、修复和管理软体代码安全问题,套用静态原始码安全扫描的的主要价值在于能够快速、準确地查找,定位和修复软代码中存在的安全风险,增加工具投资所带来的最大效益,节约代码安全分析的成本,最终开发安全的。可靠的软体。

静态原始码扫描

这个方案的优点在于,无需进行编译、也无需去搭建运行环境,就可以对程式设计师所写的原始码进行扫描。可以节省大量的人力和时间成本,提高开发效率,并且能够发现很多靠人力无法发现的安全漏洞,站在黑客的角度上去审查程式设计师的代码,大大降低项目中的安全风险,提高软体质量。
在静态原始码扫描技术上,现在被普遍套用的是第一代和第二代技术。

不足

第一代技术是指:传统的静态分析,传统的静态分析都是基于语法解析或者编译器,这些方式分析代码的缺陷是以代码所匹配的规则模式(patterns)去评估代码,只要模式匹配或者相似就报出来。需要人工去分辨出其中的真假,主要存在的问题:
– False positive(误报)
– False negative(漏报)
出现上述问题的原因是:
在作静态分析时,要先描绘出代码所有的路径,然后去对每种路径上的变数作计算,并比较。基于语法的解析路径是可以描绘出路径来的,但要计算每个路径上的变数在使用前后的值,并跟蹤他们,目前採用的算法几乎不可能,就是上面的程式也要花费相当长的时间,几乎无法接受。因此目前许多静态工具只是把感染的路径找到,但不计算和不作比较,需要藉助人工去分辨所有可能的情况,这就是他们误报率非常高的原因。
在小量的代码前提下,简单的代码将不是问题,也是可以接受的。但是,如果是大量的代码,複杂的代码,传统的扫描技术将几乎不可行,因为它将大量浪费开发和安全审计人员的时间,有时人眼也无能为力。

改进

近期,美国和以色列的一些技术人员又提出了一种新的代码扫描技术,也称之为第二代的静态原始码扫描技术。
这种技术可简单的理解为,把代码劈开,把待分析的代码及代码之间的关係以对象的方式存放在记忆体中,同时也使用了一种可以接受的算法在有效的时间里描绘出套用的路径图形,并採用了一种特殊的查询语言CxQL来查找安全问题,每一个查询语句就针对一类安全漏洞问题,因此几乎可以达到完美的结果,消除了误报(false positive).其原理有点像建立在资料库为基础的查询引擎、查询语言和查询语句一样)
用户可以利用CxQL语言定製自己的查询语句(规则),查找特定的安全和逻辑的问题,解决漏报(false Negative)问题。使得代码扫描变得更加现实和可用。也可以给项目开发节省大量的时间各人力成本,大大提升软体的安全性能。

转载请注明出处海之美文 » 代码扫描

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com