freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

主动式IAST、被动式IAST、DAST有什么不一样
2022-03-01 13:32:56
所属地 浙江省

背景

主动式IAST、被动式IAST、DAST有什么不一样,名字很像,但是检测能力、使用方式和适用场景截然不同。

IAST :交互式应用安全测试(Interactive Application Security Testing),2012年被Gartner咨询公司列为网络安全领域的Top 10技术之一(网传),随着市场的孕育和发展,近两年,IAST逐渐成为了一款家喻户晓的工具。IAST分为主动式(Active)和被动式(Passive)两种,检测原理也很不一样,下文开始分开介绍

DAST:动态应用程序安全测试(Dynamic Application Security Testing),DAST是一种成熟的安全工具,目前市面上已经有很多优秀的产品。

图文无关,实在没找到2012年的文章

image

原理

主动式(Active) IAST:主动式就像是DAST的升级版,DAST是孤军奋战,主动式IAST是派了一个特务去应用内部盯着资源

  • 组成
    主动式IAST由发包器和agent两部分组成,发包器负责拿到流量并遍历替换流量的参数(输入点)为poc,并重放流量,agent的职责分为两部分,应用启动时:负责对应用中的目标方法或者函数(执行漏洞的方法或函数)进行插桩,给目标方法加上一个代理层,应用运行时:捕获进入应用的流量,在代理层捕获方法的参数。
  • 过程
    • agent对应用进行插桩
    • 发包器读取收集到的流量,对流量进行改造,并将流量依次发送给应用
    • agent收到流量且在代理层捕获到方法参数
    • 在确认是来自发包器的流量后,agent将流量特征和方法上下文信息发送给发包器
    • 发包器根据方法名、方法参数等信息判断poc是否能顺利打入目标方法来决定是否存在漏洞。

image

被动式(Passive):被动式的技术实现难度比较高,实现的技术思路较为大胆

  • 组成
    被动式IAST只有一个agent部分,职责也分为两部分,应用启动时:负责对应用中的目标方法或者函数进行插桩,给目标方法加上一个代理层,应用运行时:捕获进入应用的流量,在代理层进行污点分析。

  • 过程

    • agent根据预先设计好的目标方法列表进行插桩

    目标方法列表会把方法分为三类,source、propagate和sink,source:应用获取外界输入数据的方法,例如:request.getRequestParameter(string);propagate:应用内用于处理数据的方法,例如:String.substring(int,int);sink:执行漏洞的方法或函数,例如:Runtime.exec(string)。

    • 用户正常使用该应用,或者进行业务测试,或者进行自动化脚本测试
    • agent捕获进入系统的流量,进行污点跟踪和分析
      image
    • agent在sink点的代理层判断是否有外界的输入流向该sink点,如果有则认为该方法的参数可以被外界控制
      image
      DAST:DAST的原理较为简单,就是拿着流量一通输出
  • 组成
    DAST只有一个发包器部分,发包器负责拿到流量并遍历替换流量的参数(输入点)为poc,并重放流量,再根据返回包的情况判断是否存在洞

  • 过程
    image

    • 发包器读取收集到的流量,对流量进行改造,并将流量依次发送给应用
    • 应用正常处理后,返回应答

优点

主动式IAST:

  • 极地的误报率
  • 相比于DAST,里应外合,可以发现无回显的漏洞
  • 相比于DAST,可以使用一定的手段限制脏数据的产生
  • 相比于被动式,主动式IAST可以规避应用内的过滤导致的误报

被动式IAST:

  • 较低的误报率
  • 无需发包,无脏数据产生
  • 支持加密和一次性验签的场景
  • 可以发现无回显的漏洞

不用发包了 666

DAST:

  • 对应用环境无侵入性
  • 在应用的外部检测漏洞,可以更准确的检测某些漏洞
  • 无需兼容语言和框架

缺点

主动式IAST:

  • 在有加密、验签和一次性资源消耗型的场景中很可能发不进去包

系统成熟了,也就打不进去了

被动式IAST:

  • 太怕过滤,有过滤就有误报
  • 测试覆盖率随着业务测试覆盖率而变,业务测试不充分也会导致漏洞测试不充分

DAST:

  • 在有加密、验签和一次性资源消耗型的场景中很可能发不进去包
  • 检测不了某些无回显的漏洞

疯狂输出就是了

适用场景

主动式IAST:主动式IAST更适合做漏洞验证类的工作,比如被动式IAST测试出了漏洞,主动式则发包做验证,判断输入点是否有过滤

被动式IAST:更适合配合自动化测试脚本工作,这样才能有最完善的测试覆盖率

DAST:更适合一些有前端动作的漏洞,比如xss,信息泄露等

未来展望

主动式IAST:

  • 主动式IAST发的包还是很臃肿的(拿到流量,装上poc,一通输出),如果被动式IAST或sast能提供一份关于输入点可疑性的信息,那主动式IAST的发包精确度就会大大增加,发包数量也自然下降了,测试效率就提升了。

什么叫输入点可疑性,比如被动式IAST或sast对某个应用进行检测,检测完后,发现某个API的P1参数被传播到漏洞执行函数里面去了,那么就可以认为P1这个输入点比较可疑,值得做被动式IAST poc测试,如果发现P2这个参数从未被使用过,这认为P2可信,不进行下一步的被动式IAST poc测试。

  • 为提升在加密、验签和一次性资源消耗的场景下的测试覆盖,可以尝试在客户端和服务器之间加一个代理(能在应用内部修改更佳),当有业务测试流量经过时,代理替换参数为poc

被动式IAST:

  • 被动式IAST最怕的就是过滤,虽然被动式IAST一般都会提供安全函数功能,但安全函数并不能应对框架级过滤、业务逻辑过滤和类型转换过滤等场景,但是如果企业在做安全管理时,能将被动式IAST和安全sdk深度结合,则可以从管理层视角屏蔽过滤导致的误报的问题,也可以让两款产品互相赋能,走向更高的水平
  • 被动式IAST是在应用内部工作的,它最清楚应用的情况,它能较为准确的获取到API、输入点、输入点可疑性和可能存在的漏洞类型等信息,这些信息如果能有效的共享给其他产品,那一定能提升其他产品的能力。

参考来源

https://www.synopsys.com/glossary/what-is-IAST.html

https://www.contrastsecurity.com/security-influencers/why-the-difference-between-sast-DAST-and-IAST-matters

https://hdivsecurity.com/bornsecure/sast-DAST-vs-IAST-all-you-need-to-know-about-ast-tools/

# web安全 # 企业安全 # 安全产品 # DevSecOps # IAST技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者