IAST 技术进阶系列(二):全场景多核驱动
作者: 日期:2021年09月29日 阅:9,365

应用缺陷深度检测分析能力是 IAST 技术的首要基础要求。为了满足用户对各类编程语言的检测需求,IAST 交互式应用程序安全测试平台应全面支持 Java、Node.Js、PHP、C#、Python、Go 等主流编程语言。然而,目前国内市场上除 Contrast、悬镜安全和 Synopsys 的 IAST 平台已覆盖全部主流语言外,多数 IAST 平台仅支持一两款语言,检测深度和应用范围也严重受限。此外,运行时插桩精准检测模式配合流量检测模式、日志检测模式和爬虫检测模式进行深度应用安全审查是实现全场景支持的重要手段。

目前国内 IAST 技术发展仍处于成长期,但企业在落地研发运营安全建设时,IAST 平台已成为优先级较高的配套自动化工具产品。行业用户的快速增长,使 IAST 平台正在向规范化和规模化应用发展,IAST 平台对业务全场景支持已成为继应用编程语言覆盖率之后,评判 IAST 平台成熟度的又一主要标准。

悬镜安全作为国内 DevSecOps 体系先行者,结合多年创新经验沉淀,从技术落地实践视角延伸了 IAST 的概念:创造性提出交互式应用安全测试不仅可以从应用内部进行实时分析,只要是“交互”产生的“流量”,均应在 IAST 技术的覆盖范围内。即从广义技术来讲,一套完整的 IAST 方案应当至少覆盖以下检测场景:

插桩检测模式

  • 动态污点追踪(被动式插桩)
  • 交互式缺陷定位(主动式插桩)

流量检测模式

  • 终端流量代理
  • 主机流量嗅探
  • 旁路流量镜像

日志检测模式

  • Web 日志分析

爬虫检测模式

  • 纵深嗅探扫描

插桩检测模式

1、动态污点追踪

动态污点追踪是 IAST 技术的主要检测方式。所谓污点追踪,是将数据流抽象为<sources、sanitizers、sinks>三元组的一种污点分析技术。

  • sources 代表污点输入源,通常认为,任何从外部输入的数据都是不受信任的污点数据,都有可能对系统造成危害。例如来自用户输入、从文件中读取的数据等。
  • sinks 代表污点汇聚点,通常是指将会产生安全问题的敏感操作。例如执行 SQL 语句、执行操作系统命令等。
  • sanitizers 是指对污点数据的无害处理。例如清洗、校验、过滤等。

简单来说,污点追踪就是去跟踪那些输入到系统中的污点数据(sources),在代码中流转、传播的过程中没有经过足够的清洗、校验、过滤等无害化操作(sanitizers),就直接进行会产生安全风险的敏感操作(sinks)的数据流。

如上图所示,插桩探针会追踪每一条污点数据流,并找出其中没有经过无害化操作的数据流(变量1 → 变量3)。

根据污点追踪分析过程中是否需要运行应用程序,可以将污点追踪技术分为“静态分析”和“动态分析”两种。和静态污点追踪技术相比,动态污点追踪技术是在应用程序运行过程中进行分析,因此可以获得更多的应用程序上下文信息,并且这些数据流都由交互产生,所以可以在最大程度上保证检测结果的有效性,大大降低误报的产生,也就降低了人工审计结果的成本。

由于动态污点追踪不会重放测试流量,因此在 IAST 技术中也被称为被动式插桩。

2、交互式缺陷定位

由于动态污点追踪技术需要跟踪每一条污点数据流,这样会占用一定的业务服务器资源。为了进一步降低应用插桩带来的性能损耗,交互式缺陷定位是在动态污点追踪技术基础上衍生出的新型 IAST 手段。通过减少动态污点追踪中的触发点(hook 函数),即只对应用执行的关键函数点进行敏感操作判断,并通过一些精心构造重放流量的 Payload 来主动发现潜藏在业务应用里的安全漏洞,同时可以精准定位其所在代码行。由于主动 IAST 的特殊技术优势,当开发者修复完漏洞后,还可以对指定漏洞进行全面回归测试及漏洞修复验证,协助用户快速提高漏洞收敛效率。

如上图所示,插桩探针仅收集关键数据,不会追踪整个污点数据流。服务器收到从插桩探针返回的数据后,会向应用服务器发送构造好的重放流量来验证风险是否存在。

通过交互式缺陷定位的检测模式,不仅解决了传统 DAST 无法精确定位漏洞位置的问题,还有着比传统 SAST 技术低得多的误报率。此外,在脏数据处理上也有着不错的表现,并且可以针对应用测试结果进行全方位复现和验证测试,相比动态污点追踪有着更低的系统开销,对业务系统稳定性的影响也更小。在非复杂数据包加密、内部测试流量管控等特殊场景下,它更加符合敏捷开发和 DevOps 模式下软件产品快速迭代、快速交付的要求。

由于交互式缺陷定位会主动发送 Payload 来验证漏洞,因此在 IAST 技术中也被称为主动插桩。

流量检测模式

1、终端流量代理

终端流量代理检测是流量检测模式中检测成本最低的一种方式,只需要在测试人员的主机配置代理/VPN,将测试流量转发至检测引擎,检测引擎在将正常流量转发至业务服务器的同时,也会将重构的流量同时发送到业务服务器进行安全检测。

如上图所示,测试人员在客户端配置代理(操作系统、浏览器、移动设备等),将流量转发到 IAST 检测引擎。检测引擎接收到流量后,会直接将原始流量转发到目标应用服务器,然后在这个流量进行修改后重新发送到目标服务器,根据重构流量的响应来判断是否存在相关漏洞(如上图中红色部分)。

终端流量代理对于业务的入侵性极低,不依赖业务系统的语言环境,无需对现有业务系统进行修改即可实现高效的检出。

2、主机流量嗅探

主机流量嗅探监测业务服务器的流量网卡,通过嗅探节点将经过主机网卡的所有流量复制到检测引擎端,由引擎端对流量进行重构,重新发送到业务服务器进行检测。

3、旁路流量镜像

旁路流量镜像是基于交换机的镜像功能,将经过交换机下的所有流量通过镜像口导出,在网络出口旁路部署流量镜像,再将测试流量复制到检测引擎端,由引擎端对流量进行重构,重新发送到业务服务器进行检测。

日志检测模式

1、Web 日志分析

Web 日志分析是将 Nginx、Apache 等 Web 服务的日志,通过转发器转发至 Kafka 等消息队列中,再由 IAST 引擎进行消费,引擎端分析日志数据并生成重构流量,发送到业务服务器进行检测。

通过对 Web 日志的分析,可以快速从反向代理服务器中梳理出应用程序资产,并对它们进行安全检 测。

爬虫检测模式

1、纵深嗅探扫描

纵深嗅探扫描采用主动 PoC 漏洞验证技术,即通过 Web 爬虫获取网站 Sitemap 后向目标系统发送真实的“攻击”载荷,分析目标系统变化和返回内容,判断是否存在漏洞。使用纵深嗅探扫描需要的成本极低,只需提供 URL 即可自动进行分析。

IAST 全场景支持的必要性

与传统开发模式将安全作为补充相比,DevOps 动态环境下的开发安全要求将安全融合于软件开发的全流程,DevSecOps 理念将安全融入软件开发的规划、设计、编码、测试、上线运行等各个环节,强调安全无处不在。IAST 作为 DevSecOps 建设落地的关键平台,通过主被动插桩、流量、日志分析多种检测模式的结合,为动态持续的软件开发环境提供最佳安全测试服务。由此可见,好的 IAST 平台一定能适应各类业务场景。

目前,悬镜灵脉 IAST 灰盒安全测试平台,已兼具主被动插桩、流量、爬虫、日志分析等检测模式,率先实现了全场景支持,可以达到低门槛、低侵入、低消耗的基本要求,柔和无感知地接入业务发布流程。

无论是已有上千个应用资产的企业内部业务系统,还是企业自建的 DevOps 研发运维一体化业务开发模式,亦或是企业采购的第三方开发应用系统,通过灵脉 IAST 全场景支持的检测模式,能够发现新开发业务系统中存在的通用 Web 漏洞、业务逻辑缺陷、系统服务漏洞,以及第三方开源组件成分分析及关联漏洞检查,将安全漏洞的发现和修复时间前置到开发测试环节,大大提升修复效率。


相关文章