Sast/Dast/Iast工具

为了发现软件的安全漏洞和缺陷,确保应用系统是安全可靠的,就需要针对Web系统做应用检测,识别Web应用程序中架构的薄弱环节,以免轻易的受到恶意攻击者的攻击。主要市场上主要的检测技术主要是DAST、SAST、RAST和IAST,每种技术都有一定的优缺点,本节将介绍相关工具特点。

sast/dast/iast介绍

SAST(Static Application Security Testing )

SAST是静态应用安全测试技术,SAST类工具的技术实践大致可分为以下几种:

(1) 正则匹配:代表工具Cobra,Raptor;

(2) 基于语法树:代表工具P3C,Fireline;

(3) java语言可基于class文件:代表工具Findsecbugs;

(4) 基于控制流、数据流、函数调用关系等(商业级SAST类产品)

当然,效果是逐渐递增的,难度也是逐渐增大的,要实现还原代码的数据流、控制流和函数调用关系,需要将编译中的前端模块完全实现一遍,基于中间代码去还原数据流和控制流等,大致流程主要是通过词法和语法分析后,进行语义分析,生成中间代码,再生成数据流、控制流、函数调用关系等,在这些分析的基础上,进行缺陷匹配检测。

词法分析和语法分析一般可以借鉴相应的开源工具可以完成,但是语义分析依赖于各种语言的语法,针对每种语言一般需要单独实现,不同的语言翻译成同一套规范的中间代码,根据翻译来的中间代码,符号表等来恢复数据流、控制流和函数调用关系等,然后根据这些流来确定污点传播过程,进而确认是否存在漏洞。

基于SAST技术的产品具有误报率高、耗时长、内存消耗高的特点,该原因也跟这个复杂流程相关,各个安全厂商自己基于编译原理相关内容实现的代码分析层,也需要针对不同的语言实现不同的语法树从而增加了复杂度和时间成本。另外

还原的数据流、控制流等难以做到100%准确,同时对超过100万行以上代码分析,暂用的资源高(主要是对内存的消耗),复杂度较高,数据流、控制流的构建过程自然就耗时长,导致了SAST类产品误报率高和耗时长这两个问题难以解决。导致即使能够集成到IDE中,开发人员也可能无法忍受较长时间的等待。

 DAST(Dynamic Application Security Testing )

DAST(Dynamic Application Security Testing)是在应用程序处于生产阶段时发现安全漏洞的过程,它包括使用各种测试工具进行手动和自动化测试。这是一种黑盒测试的类型,测试者无需了解架构、网络或者代码,而是从一个恶意攻击者的角度来测试应用程序。应用程序依赖于输入和输出运行,这意味着如果用户的输入有疑点,在响应上会有反馈。DAST 测试可以在正式投入使用之前帮助你在软件中发现漏洞。它不是为特定软件而设计的,而是在易受攻击的应用层上工作。

根据 Internet Live Stats 的数据,全球有超过17亿个网站,因此安全漏洞的数量在不断增加也就不足为奇了。CNBC 的一项研究显示,超过75%的应用程序在某种程度上存在漏洞,而这些漏洞不会很快消失,这就是应用程序安全测试(AST)的用武之地。

南半球的蝴蝶扇动一下翅膀就能在北半球引发一场台风,开发人员轻微的安全错误(例如,用户输入验证不当、服务器版本泄露和使用易受攻击的软件库等)也有可能导致重大的安全问题。而采用 DAST,可以让开发人员在构建应用程序时不必完全依赖自己的知识和过往经验。通过在软件开发生命周期(SDLC)中执行 DAST,开发人员可以在软件公开部署之前捕获应用程序中的漏洞。如果不检查这些漏洞而直接部署应用程序,可能会导致数据泄露,进而造成重大的经济损失和损耗品牌声誉。在软件开发生命周期(SDLC)的某个阶段,人为错误将不可避免,而在 SDLC 中越早发现漏洞,修复的成本就越低。

 IAST(Interactive Application Security Testing )

交互式应用程序安全测试工具标准在国内建立及进展如下:

  1. 2020年9月:由信通院牵头,联合华为、悬镜安全、腾讯云、开源网安、奇安信、安恒、默安科技、西安邮电大学、中兴、新华三等厂商启动《交互式应用程序安全测试工具能力要求》行业标准的预研及编写工作
  2. 2020年10月-2021年3月:通过线下线上的交流研讨持续完善标准内容
  3. 2021年4月:正式启动首批符合标准的安全测试工具评测
  4. 2021年5月:在中国通信标准化协会(CCSA)TC1 WG5工作组会议上成功立项
  5. 2021年7月:首批符合标准的安全测试工具评估结果发布

IAST(Interactive Application Security Testing, 交互式应用安全测试)是一种新一代交互式应用程序安全测试方案,通过服务端部署Agent探针、流量代理/VPN或主机系统软件等,收集、监控web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷,漏洞覆盖主流OWASP Top 10以及 CWE Top 25等漏洞,同时,可准确确定漏洞所在的代码文件、行数、函数及参数。应用程序在进行自动化测试、人工测试等任何与应用程序进行“交互”的同时,能自动分析应用程序安全风险的技术。它可以实时返回结果,因此不会额外增加CI/CD的时间。相比于其他AST技术,IAST只会分析“交互”产生时所影响到相关代码的安全风险,而不是扫描所有代码、配置文件或遍历整个站点。IAST更适合在QA环节使用,让安全团队在相对不影响开发、测试现有流程的情况下,较早地发现应用程序中存在的安全风险。相较于发展较早的SAST技术,IAST技术具有如下优势:

  1. 相较于SAST工具,IAST工具基于请求及运行时上下文信息综合分析,安全漏洞误报率低
  2. IAST工具结果反馈及时,随着业务测试可及时反馈安全测试相关数据,提升研发效率
  3. 在被动插桩技术进行的IAST测试对于业务场景具有侵入性低,不产生脏数据的优点

需要注意的是,与其他AST技术相比,IAST还是一个比较新的概念,其基于请求、代码数据流/控制流来综合分析应用程序的安全风险。IAST运行时插桩技术可以发现更多应用程序本身的安全弱点,以及应用程序中第三方组件的公开漏洞。由于该技术针对不同语言需要研发不同的插桩探针,因此对于厂商而来,其IAST工具每增加对一种语言的支持,即相当于开发一款新产品,也就意味着IAST工具支持的编程语言越多,厂商所需投入的人力成本和经济成本也就越大。

自IAST标准发布起,中国信通院同步启动了首批IAST工具的测试工作。依托标准要求中的34个功能指标项,在统一并发场景下进行性能检测记录。通过对测试结果分析发现,各厂商IAST工具在以下三方面存在较大差异:

1、对主流编程语言支持的覆盖率;

2、对不同安全漏洞类型及结果的定义规范;

3、配置缺陷和弱密码等低危漏洞或信息漏洞的检测结果。

其中,首当其冲的是对主流编程语言的覆盖率问题。在IAST标准当中,“支持的编程语言”被标定为全标准的第一条测试要求,由此可见其重要性。IAST工具是否支持多种主流编程语言,直接决定了其是否能适配客户各种各样的实际开发场景,进而满足助力客户业务发展的需求。IAST技术通常有两种实现模式:插桩模式和基于代理、VPN模式。

IAST技术可基于插桩理论实现,基于插桩的测试场景适合自动化或资产清晰便于部署微探针的情况下,提前在测试应用中间件上进行插桩,插桩模式下支持主动插桩和被动插桩两种模式检测方式。主动插桩模式通过精心构造重放流量的Payload来主动触发潜藏在业务应用里的安全漏洞,并在应用执行的关键函数点进行敏感操作判断和深度的脏数据处理,在发现潜藏漏洞的同时精准定位其所在代码行。由于主动IAST的特殊技术优势,当开发者修复完漏洞后,还可对指定漏洞进行全面回归测试及漏洞修复验证,帮助用户快速提高漏洞收敛效率。

被动插桩依据动态污点追踪原理,该模式通过配合测试人员进行功能测试的同时,对运行时应用进行动态污点跟踪及分析,审计堆栈信息,从而发现业务应用里的安全漏洞。透明接入研发测试流程,检测无感知,并在发现潜藏漏洞的同时精准定位其所在代码行。被动IAST的特殊技术优势在于对于测试人员在不改变原有工作方式、不增加额外工作量的同时,赋予同步发现安全漏洞的能力。 插桩探针会追踪每一条污点数据流,并找出其中没有经过无害化操作的数据流(变量1 → 变量3)。根据污点追踪分析过程中是否需要运行应用程序,可以将污点追踪技术分为“静态分析”和“动态分析”两种。和静态污点追踪技术相比,动态污点追踪技术是在应用程序运行过程中进行分析,因此可以获得更多的应用程序上下文信息,并且这些数据流都由交互产生,所以可以在最大程度上保证检测结果的有效性,大大降低误报的产生,也就降低了人工审计结果的成本。由于动态污点追踪不会重放测试流量,因此在 IAST 技术中也被称为被动式插桩。

基于代理/VPN模式实现的iast,测试人员在客户端配置代理(操作系统、浏览器、移动设备等),将流量转发到 IAST 检测引擎。检测引擎接收到流量后,会直接将原始流量转发到目标应用服务器,然后在这个流量进行修改后重新发送到目标服务器,根据重构流量的响应来判断是否存在相关漏洞。 终端流量代理对于业务的入侵性极低,不依赖业务系统的语言环境,无需对现有业务系统进行修改即可实现高效的检出。适用场景如下:适合开发、测试人员对单个网站进行深度渗透测试,不依赖测试系统语言环境,无须介入测试环境即可进行安全测试。

指标对比

在安全测试中会遇到SAST(Static Application Security Testing )、DAST(Dynamic Application Security Testing )、IAST(Interactive Application Security Testing )的概念区别, 这三种工具各有优劣势,其区别对比列表如下:

比较项

SAST

DAST

IAST

扫描对象

源代码

运行时的应用程序

运行时的应用程序

扫描准备

简单

复杂

复杂

扫描速度

很慢

误报率

覆盖率

对环境的影响

测试方法

白盒

黑盒

黑盒

与开发语言关系

有关

无关

有关

CI/CD集成

支持

不支持

不支持

支持测试阶段

研发、测试、上线

测试、上线

测试、上线

部署

简单

简单

复杂

由于每种工具都有自己的特点,可以根据企业的内部需求,选择合适的工具组合。总体来说,SAST工具效率比较高,但是,有误报的问题,需要人工筛选。DAST基本上没有误报,而且攻击的向量和环境都结合的很好,不需要人工确认,也没有误报,但是,执行速度太慢,在使用敏捷开发的团队,可能很难有效地利用。IAST由于部署比较麻烦,而且和语言的关联性比较大,有的语言不支持IAST的插桩技术,例如:C和C++等语言,就不能使用IAST了,因此,即使没有什么误报,目前应用的还不是很广泛。SAST,即静态应用程序安全测试,通过静态代码分析工具对源代码进行自动化检测,从而快速发现源代码中的安全缺陷。

实践工具选型

收集了一些免费开源和商业产品的项目及工具,可从检测效率、支持的编程语言、第三方工具集成等几因素来综合考虑如何选择工具,随着时间推移,在选择产品时请根据具体情况调研。

1. 百度Open-Rasp

分为开源版本和商业版本,OpenRASP 抛弃了传统防火墙依赖请求特征检测攻击的模式,创造性的使用RASP技术(应用运行时自我保护),直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞,尤其适合大量使用开源组件的互联网应用以及使用第三方集成商开发的金融类应用。另外,OpenRASP 提供的IAST解决方案,相比于与传统的DAST方案有着革命性提升。漏洞检测无需动态爬虫或者旁路代理,扫描更全面;结合应用探针准确的识别漏洞类型,通过针对性扫描大幅度提升检测效率;商业版新增的动态污点追踪能力,还可以在不扫描的情况下,预判接口是否存在漏洞。

2. SonarQube

一款企业级源代码静态分析工具,支持Java、PHP、C#、Python、Go等27种编程语言,而且能够集成在IDE、Jenkins、Git等服务。

3. 悬镜灵脉IAST

21年6月,中国信息通信研究院(以下简称“中国信通院”)正式发布《交互式应用程序安全测试工具能力要求》行业标准(以下简称“IAST标准”),并于首届DevSecOps敏捷安全大会(DSO 2021)首次公开标准解读。目前,中国信通院已完成首批评估测试,悬镜灵脉IAST是全球首个通过该项专业测评认证的IAST工具。

4.洞态 IAST洞态

全球首个开源 IAST ,于2021年9月1日正式开源发布。洞态 IAST 专注于 DevSecOps,具备高检出率、低误报率、无脏数据的特点,帮助企业在应用上线前发现并解决安全风险。自开源发布以来,洞态 IAST 备受开源社区人员和企业的关注,包括工商银行、去哪儿、知乎、同程旅行、轻松筹等在内的上百家企业都已成为洞态用户。

5. VCG(VisualCodeGrepper)

一种适用于 C++、C#、VB、PHP、Java、PL/SQL 和 COBOL 的自动化代码安全审查工具。

6. FindBugs

一款静态分析工具,检查程序潜在bug,在bug报告中快速定位到问题的代码上。

7. Cobra

一款源代码安全审计工具,支持检测多种开发语言源代码中的大部分显著的安全问题和漏洞。

8. Hades

一个静态代码脆弱性检测系统,支持java源码的审计

9. Bandit

一个专门用于查找Python代码中常见安全问题的工具。

10. Brakeman

一个免费的漏洞扫描器,专门为 Ruby on Rails 应用程序设计。它静态分析 Rails 应用程序代码,以在开发的任何阶段查找安全问题。

11. RIPS

一款不错的静态源代码分析工具,主要用来挖掘PHP程序的漏洞。

12. CodeQL

一个免费开源的语义代码分析引擎和查询工具,以一种非常新颖的方式组织代码与元数据,可以通过像SQL查询一样检索代码,并发现其中的安全问题。

13. Find Security Bugs

一个用于 Java Web 应用程序安全审计的 SpotBugs 插件。

sast/dast/iast对比介绍相关推荐

  1. 安全开发基础 -- DAST,SAST,IAST简单介绍

    安全开发基础-- DAST,SAST,IAST 简介 DAST 动态应用程序安全测试(Dynamic Application Security Testing)技术在测试或运行阶段分析应用程序的动态运 ...

  2. b360装服务器系统,B365主板能不能安装Win7系统 B365和B360主板区别对比介绍

    前不久,Intel低调放出了B365芯片组主板,预计将于2月底发布.从名称来看,B365主板似乎是B360的升级版,网传其可能原生支持Win7系统,受到不少电脑爱好者朋友关注.那么B365主板能不能安 ...

  3. php7.0和5.6哪个好,PHP7.0与PHP5.6下Laravel博客的应用性能对比介绍

    PHP7.0与PHP5.6下Laravel博客的应用性能对比介绍 发布时间:2020-04-24 09:49:17 来源:亿速云 阅读:131 作者:小新 这篇文章主要为大家详细介绍了PHP7.0与P ...

  4. php 数据类型 map,es6中Set和Map的对比介绍(附代码)

    本篇文章给大家带来的内容是关于es6中Set和Map的对比介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Set 1.add()方法和size属性{ let list ...

  5. 5G 网络的会话性管理上下文对比介绍

    5G 会话管理上下文对比介绍 会话管理SM 5G对会话管理模型进行了较多的优化和拓展,包括隧道模型从承载粒度改为会话粒度.增加对以太网和非结构化报文等协议类型的支持.引入SSC模式.定义优化的小包传输 ...

  6. Mac和Windows哪个好 ?windows和mac对比介绍

    对于 Windows 和 Mac OS X 到底谁更好的话题从来都没有停过,多年来,Mac和PC一直都是势不两立的两大阵营.而随着Macbook Pro和SurfaceStudio的发布,苹果和微软的 ...

  7. 变革时代 国内通讯云服务厂商对比介绍

    变革时代 国内通讯云服务厂商对比介绍 责任编辑:editor006 |  2014-09-22 17:31:13本文摘自:CSDN 这是一个云计算的时代. 这是一个互联网的时代. 这是一个分工合作,快 ...

  8. 联发科p60和骁龙710哪个好_骁龙670、联发科P60和麒麟710哪个好 详细对比介绍

    2018年中端移动平台竞争可谓激烈,突出表现在今年高通发布了多款中端移动Soc,而华为在今年年中也发布了一款还不错的移动Soc--麒麟710处理器,而联发科还是凭借去年发布的Helio P60一直持续 ...

  9. mx250是什么_MX250和150有什么区别 MX250和MX150区别对比介绍

    NVIDIA早在17年的时候,推出了MX150显卡,主要用于高性能轻薄本,兼顾续航与一般的游戏性能,在低画质下可以勉强吃鸡.时隔两年,新一代MX250显卡正式发布,同样是定位"高性能轻薄本& ...

  10. TensorFlow 、Caffe等9大人工智能框架对比介绍

    TensorFlow .Caffe等9大人工智能框架对比介绍. Tensor Flow https://www.tensorflow.org Tensor Flow来自谷歌家族,是一个强大的开源框架, ...

最新文章

  1. java读取配置文件的几种方法
  2. JavaScript 拾碎[一] ECMAScript 简介
  3. 2021中超1 1006 xor sum
  4. 博士申请 | 上海财经大学语言智能实验室招收2022年秋季入学博士生
  5. 前端学习(1169):实例数组find
  6. 陈平原教授谈博士论文写作经验:讲得太好了!
  7. 攀升电脑九周年:“9”要追新,捍卫热爱
  8. 记一次MongoDB故障排查的过程
  9. 【LeetCode】剑指 Offer 43. 1~n 整数中 1 出现的次数
  10. 【学习】013 Servlet、Cookie、Session的简述
  11. Docker 快速安装教程
  12. android 物业管理系统,基于Android的物业管理系统
  13. 从武汉远程医疗方案看,5G战“疫”是噱头还是福音?
  14. 计算机一级误差怎么计算,(excel最大偏差公式)偏离值怎么计算
  15. vue element UI 学习总结笔记(十一)_vue中打印模板设置
  16. 【vscode简单入门(三)】vscode巨实用的基础插件推荐(不定期更新)
  17. 【CF375C】Circling Round Treasures【XSY1176】大包子环绕宝藏【状压dp】
  18. python从小到大排序
  19. 交通灯keil程序加2位数码管_带数码管显示的十字路口交通灯控制 C 程序
  20. 如何准确测试相位噪声

热门文章

  1. 三维扫描3D打印在创客教育中的实际应用
  2. 电商项目中遇到的经典问题
  3. 理正深基坑弹性计算方法_理正深基坑软件7.0/理正岩土6.5/理正勘察9.0/理正工具箱7.0...
  4. 华为技术专家深度解析Java线程状态
  5. gm21模型python_GM11灰色模型
  6. 图解RGB565、RGB555、RGB16、RGB24、RGB32、ARGB32等格式的区别
  7. 鸿蒙智慧屏安装应用,谁说华为智慧屏不能装APP,我来打脸了,附零难度安装APP教程...
  8. 微信小程序如何测试?
  9. 小程序倒计时,刷新页面不重置
  10. java怎么获取本机的ip地址_java如何获取本机IP