静态分析安全测试(SAST)优缺点探析

静态分析安全测试(SAST)是指不运行被测程序本身,仅通过分析或者检查源程序的语法、结构、过程、接口等来检查程序的正确性,那么采用静分析安全测试的方法有什么优缺点呢,且让小编给你说道说道。

许多公司都投资于 HP Fortify、IBM AppScan Source、 Checkmarx 或 Coverity 之类的静态分析安全测试(Static Analysis Security Testing,SAST)解决方案。如果使用得当,SAST 解决方案的确能大放异彩:相比于动态分析或运行时测试方案,它们能在开发阶段,而不是开发完成之后,探测出源码中的安全漏洞,从而大大降低修复安全问题的成本。它们还能找到许多动态分析工具通常无法找到的漏洞。而且,得益于其自动化的特性,SAST 工具能在成百上千款应用间实现伸缩,而这是仅靠人为分析方法无法企及的。

在对 SAST 解决方案投资之后,一些公司便放弃了在应用安全领域的进一步投资。这类公司的股东往往认为:静态分析方法覆盖了绝大多数软件安全漏洞,或是诸如 OWASP 前十的重要高风险漏洞,因此已经足够好了。这些公司往往不会在软件开发初期就考虑安全问题,而是止步于在应用部署到生产环境之前,获得一份来自扫描工具的“无瑕疵报告”。其实,这种心态非常危险,因为它无视了 SAST 技术的基本限制。

《用静态分析方法确保编程安全(Secure Programming with Static Analysis)》一书详细描述了静态分析技术的基本原理。此书的作者 Brian Chess 与 Jacob West 是 Fortify Software 公司背后的技术骨干,此公司后来被惠普收购。在书中,作者谈到:“一半的安全问题都源自软件的设计,而非源码。”之后,他们列举了软件安全问题的类别,比如与上下文特定的缺陷(这类问题往往在代码中可见)等等。他们还指出:“没有人敢断言,源码检查就能找出所有问题。”

静态分析工具相当复杂。为了正常发挥其功能,它们需要从语义上理解程序的代码、依赖关系、配置文件以及可能不是用同一种语言写的组件。与此同时,它们还必须保持一定的速度以及准确性,从而降低误报的数量。此外,JavaScript、Python 之类的动态类型语言,在编译时往往无法决定对象所属的类或类型,因此进一步影响了静态分析工具的效率。因此,找到大多数软件安全漏洞不是不切实际,就是不可能的。

NIST SAMATE 项目力求测量静态分析工具的效率,从而帮助公司改善该技术的使用情况。它们对一些开源软件包分别执行了静态分析以及人工代码检查,并对比两者的结果。分析显示,在所发现的全部漏洞中,1/8 到 1/3 的漏洞属于简单漏洞。进一步的研究发现,这些工具只能发现简单的实现错误,对于需要深入理解代码结构或设计的漏洞往往束手无策。在流行的开源工具 Tomcat 上运行时,面对26个常见漏洞,静态分析工具只对其中4个(15.4%)发出了警告。

这些统计数据与 Gartner 论文《应用安全:大胆想象,从关键入手 ( Application Security: Think Big, Start with What Matters ) 》中的发现相互呼应。在这篇论文中,作者谈到:“有趣的是,通常认为 SAST 只能覆盖10%到20%的代码问题,DAST 覆盖另外的10%到20%。”按照这种观点,如果一个公司自主开发了一个类似 Tomcat 的工具,并以静态分析为主要的应用安全措施,这意味着,会有22个常见的安全漏洞原封不动地遗留在他们部署的应用中。

Gary McGraw 博士将静态分析无法找出的诸多安全问题归为瑕疵,而非程序错误。这些瑕疵的性质与应用相关,静态分析可能无法找出的问题包括:

  • 机密数据的存储与传输,尤其是当这些数据的程序设定与非机密数据无异时。
  • 与身份认证相关的问题,比如蛮力攻击敏感系数,密码重置效力等。
  • 与非标准数据随机选择的熵相关的问题
  • 与数据保密性相关的问题,比如数据保持以及其它合规性问题(比如:确保信用卡号在显示时是部分掩盖的)。

与普遍观点相反,许多静态分析工具的覆盖缺口隐含着巨大的组织风险。而且,多数公司组织都无法接触源代码,导致 SAST 工具可能无法理解某种特定的语言或框架,再加上大规模部署这一技术以及处理错误警报带来的挑战,这一风险变得更为复杂了。

尽管静态分析是确保安全开发的重要技术,但显而易见,它比不上从建立应用之初就考虑安全问题的策略。公司组织只有将安全理念融入产品需求与设计中去,并以静态分析等技术加以验证,才最有可能创造出牢固安全的软件。

原文链接:http://infosecisland.com/blogview/24620-Understanding-the-Strengths-and-Limitations-of-Static-Analysis-Security-Testing-SAST.html

时间: 2024-09-28 01:06:57

静态分析安全测试(SAST)优缺点探析的相关文章

探析置换滤镜(“伸展以适合”置换规律的研究)之一

滤镜 重温置换原理: ps的帮助中有如下几点关于置换图的明说.注:[]中是作者加的.老外翻译的东西就是不好理解. 1."置换"滤镜使用置换图中的颜色值[其实就是按照指定的通道的灰度值]改变选区[像素的移动] - 0 是最大的负向改变值,255 是最大的正向改变值,灰度值 128 不产生置换. 2.如果置换图[只]有一个通道,则图像沿着由水平比例和垂直比例所定义的对角线改变[像素的移动]. 如果置换图有多个通道,则第一个通道控制水平[方向像素的]置换,第二个通道控制垂直[方向像素的]置换

网络渠道运营探析与对比

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 据不完全的数据报告获悉,按照国内绝大部分的"贴牌"制造业现状,大多仍处于传统商业模式的格局之内,这一反映基本上决定了行业扩展方式的走向.由口耳相传转为电话营销以及客户拜访的套路演变,显然易见的是传统销售方式正处于目前市场当中的绝对劣势. 针对细分行业网络市场与传统线下的对比之下,大多都是属于渠道运营与资源成本的优劣所在.由

浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入_javascript技巧

在<浏览器环境下JavaScript脚本加载与执行探析之defer与async特性>中,我们研究了延迟脚本(defer)和异步脚本(async)的执行时机.浏览器支持情况.浏览器bug以及其他的细节问题.而除了defer和async特性,动态脚本和Ajax脚本注入也是两种常用的创建无阻塞脚本的方法.总的来看,这两种方法都能达到脚本加载不影响页面解析和渲染的作用,但是在不同的浏览器中,这两种技术所创建的脚本的执行时机还是有一定差异,今天我们再来探讨一下通过动态脚本技术和Ajax注入的脚本在这些方

浏览器环境下JavaScript脚本加载与执行探析之defer与async特性_javascript技巧

defer和async特性相信是很多JavaScript开发者"熟悉而又不熟悉"的两个特性,从字面上来看,二者的功能很好理解,分别是"延迟脚本"和"异步脚本"的作用.然而,以defer为例,一些细节问题可能开发者却并不一定熟悉,比如:有了defer特性的脚本会延迟到什么时候执行:内部脚本和外部脚本是不是都能够支持defer:defer后的脚本除了会延迟执行之外,还有哪些特殊的地方等等.本文结合已有的一些文章以及MDN文档中对两个特性的阐述,对de

探析Windows下将gvim8配置为Python IDE的方法_win服务器

Windows下将gvim8配置为Python IDE大概分为以下四步,每步介绍的都非常详细,一起看看吧. 1.准备工作 将下面的安装包或者文件下载好 1) Python 2.7  http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi 2) gvim8.0   http://www.vim.org/download.php 3) Exuberant Ctags http://ctags.sourceforge.net/ 4) Taglis

全球通信监管体制改革走势探析

工信部电信研究院政策经济所 马源 为适应技术进步,推动通信市场竞争,自上世纪80年代以来全球各国不断探索如何推进通信监管体制改革,并逐步形成了各具特色的通信监管体制,挖掘这些监管体制的共性规律及其决定因素,对于探析我国监管体制改革走向具有重要意义. 一.全球通信体制改革历程概要 上世纪80年代起,全球多数国家的通信体制都经历了一场深刻变革,其关键词是"民营化",改革重点是企业产权多元化,实施政企分开.以英国为例,为降低财政负担,相继推动国有电信企业的政企分开.股份化.民营化改造.引入新

国内SAAS应用的前景探析

本文讲的是国内SAAS应用的前景探析,[IT168 资讯]SaaS是随着互联网技术的发展和应用软件的成熟,而在21世纪开始兴起的一种完全创新的软件应用模式.在这种模式下,客户不再像传统模式那样花费大量投资用于硬件.软件.人员,而只需要支出一定的租赁服务费用,通过互联网便可以享受到相应的硬件.软件和维护服务,享有软件使用权和不断升级,这是网络应用最具效益的营运模式. 在欧美等发达国家,SaaS已经被广泛采用.而在我国,SaaS应用还处于初期探索阶段,面临着诸多困惑,在推广和应用中存在很多挑战.直到

大数据时代下的云安全准则探析

云计算和大数据是目前比较流行的技术,可是这两者之间存在什么联系呢?云计算为大数据提供了基础设施,大数据需要灵活的计算环境,而后者可以快速.自动地进行扩展以支持海量数据.基础设施云可以精准地提供这些需求.498)this.width=498;' onmousewheel = 'javascript:return big(this)' border="0" alt="大数据时代下的云安全准则探析" src="http://s5.51cto.com/wyfs02

SAP MM 采购订单中&quot;Delivery Completed&quot; Indicator(”交货已完成”标记)之含义探析

SAP MM 采购订单中"Delivery Completed" Indicator("交货已完成"标记)之含义探析    "Delivery Completed" Indicator指定了该采购订单的项目行是否考虑关闭了,如果勾选了这个标记就意味着该item将不再收货了. 举例来说,假设采购订单的项目行有200件,已经对该采购订单项目行收货了180件,此时手工对该行的"Delivery Completed" Indicato