IAST

IAST 交互式应用程序安全测试

通过在服务端部署Agent持续收集、监控Web应用程序运行,准确识别安全缺陷及漏洞。

特点

IAST不是扫描器!!
IAST误报率极低、可定位到代码行数、展示污点调用过程等

代理模式(很少用了,类似DAST)

不需要在测试服务器上部署Agent,只需要测试人员配置代理,测试流量转发给IAST设备,这种模式无法定位到代码片段,会有一定的脏数据。

插桩模式

核心在于探针,需要根据不同的语言进行开发,如Java、C#、python、NodeJs。不支持C/C++/Golang语言。
dongtai属于被动式插桩IAST,Agent只收集数据,不做检测。即不执行payload来测试。而是基于Agent传过来的请求响应数据,进行污点传播数据流监控,分析判断是否存在漏洞。
优点:精准定位漏洞在代码行的位置。

  • 源代码插桩:直接在源码中的每行可执行语句中加入计数器。该方案开发成本太高,且影响包大小和运行时性能
  • 中间文件插桩:在编译过程的中间文件插入汇编代码,成本低,速度快,是理想的插桩方案
  • 可执行文件插桩:目前暂时没有合理的方案。

污点分析

污点分析可以抽象成一个三元组<sources,propagator,sinks>的形式:
1、source即污点源,代表直接引入不受信任的数据或者机密数据到系统中;
2、propagator即污点传播,在传播过程中,有没有做sanitizer,即无害处理,代表通过数据加密或者移除危害操作等手段使数据传播不再对软件系统的信息安全产生危害。
3、sink即污点汇聚点,代表直接产生安全敏感操作(违反数据完整性)或者泄露隐私数据到外界(违反数据保密性);

优点

传统的黑/白盒扫描工具误报率非常高,需要安全人员二次验证漏洞。
IAST最大的优势就是降低漏洞误报率。而且覆盖面比DAST高。
IAST能发现黑客已经掌握但未公开的0day漏洞,即发现开源组件中潜在的漏洞。

缺点

IAST采用的是插桩方式,会侵入代码内部,而且Agent频繁与IAST Server通讯,会造成应用程序端变慢。

IAST总结

IAST收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。
RASP和IAST技术基本一样,区别是一个部署在测试、一个部署在生产。
IAST是SAST和DAST的一个合集,包括代码和HTTP流量的分析,因此IAST的规则是SAST和DAST的一个功能合集

Q&A

Q:在测试环境服务器上,有项目源代码么?没有源代码,IAST如何定位有漏洞的代码行
A:没有项目源代码。但java的class文件里面包含有代码行号与具体指令行对应的属性,IAST采用ASM字节码插桩的技术来定位有漏洞的代码行。
Q:外购的第三方商业系统,安装IAST agent能否定位代码行?
A:理论上可以定位到代码行,但无法获取源代码文件
报错代码行
Q:某一个业务应用下面的所有服务器都要部署IAST agent?若涉及多个服务调用,如RPC远程调用或API调用其他系统的服务,该业务所依赖的RPC业务树,会不会一起部署IAST?
A:理论上只部署应用后端服务器,DB服务器不需要部署agent。如涉及其他服务调用,万一漏洞在其他服务里面,所依赖的机器上也是要部署agent的。