IAST 技术进阶系列(二):全场景多核驱动

应用缺陷深度检测分析能力是IAST技术的首要基础要求 。 为了满足用户对各类编程语言的检测需求 , IAST交互式应用程序安全测试平台应全面支持Java、Node.Js、PHP、C#、Python、Go等主流编程语言 。 然而 , 目前国内市场上除Contrast、悬镜安全和Synopsys的IAST平台已覆盖全部主流语言外 , 多数IAST平台仅支持一两款语言 , 检测深度和应用范围也严重受限 。 此外 , 运行时插桩精准检测模式配合流量检测模式、日志检测模式和爬虫检测模式进行深度应用安全审查是实现全场景支持的重要手段 。
目前国内IAST技术发展仍处于成长期 , 但企业在落地研发运营安全建设时 , IAST平台已成为优先级较高的配套自动化工具产品 。 行业用户的快速增长 , 使IAST平台正在向规范化和规模化应用发展 , IAST平台对业务全场景支持已成为继应用编程语言覆盖率之后 , 评判IAST平台成熟度的又一主要标准 。
IAST 技术进阶系列(二):全场景多核驱动
文章图片
悬镜安全作为国内DevSecOps体系先行者 , 结合多年创新经验沉淀 , 从技术落地实践视角延伸了IAST的概念:创造性提出交互式应用安全测试不仅可以从应用内部进行实时分析 , 只要是“交互”产生的“流量” , 均应在IAST技术的覆盖范围内 。 即从广义技术来讲 , 一套完整的IAST方案应当至少覆盖以下检测场景:
插桩检测模式
动态污点追踪(被动式插桩)
IAST 技术进阶系列(二):全场景多核驱动】交互式缺陷定位(主动式插桩)
流量检测模式
终端流量代理
主机流量嗅探
旁路流量镜像
日志检测模式
Web日志分析
爬虫检测模式
纵深嗅探扫描
插桩检测模式
动态污点追踪
动态污点追踪是IAST技术的主要检测方式 。 所谓污点追踪 , 是将数据流抽象为<sources、sanitizers、sinks>三元组的一种污点分析技术 。
sources代表污点输入源 , 通常认为 , 任何从外部输入的数据都是不受信任的污点数据 , 都有可能对系统造成危害 。 例如来自用户输入、从文件中读取的数据等 。
sinks代表污点汇聚点 , 通常是指将会产生安全问题的敏感操作 。 例如执行SQL语句、执行操作系统命令等 。
sanitizers是指对污点数据的无害处理 。 例如清洗、校验、过滤等 。
简单来说 , 污点追踪就是去跟踪那些输入到系统中的污点数据(sources) , 在代码中流转、传播的过程中没有经过足够的清洗、校验、过滤等无害化操作(sanitizers) , 就直接进行会产生安全风险的敏感操作(sinks)的数据流 。
IAST 技术进阶系列(二):全场景多核驱动
文章图片
如上图所示 , 插桩探针会追踪每一条污点数据流 , 并找出其中没有经过无害化操作的数据流(变量1→变量3) 。
根据污点追踪分析过程中是否需要运行应用程序 , 可以将污点追踪技术分为“静态分析”和“动态分析”两种 。 和静态污点追踪技术相比 , 动态污点追踪技术是在应用程序运行过程中进行分析 , 因此可以获得更多的应用程序上下文信息 , 并且这些数据流都由交互产生 , 所以可以在最大程度上保证检测结果的有效性 , 大大降低误报的产生 , 也就降低了人工审计结果的成本 。
由于动态污点追踪不会重放测试流量 , 因此在IAST技术中也被称为被动式插桩 。
2、交互式缺陷定位
由于动态污点追踪技术需要跟踪每一条污点数据流 , 这样会占用一定的业务服务器资源 。 为了进一步降低应用插桩带来的性能损耗 , 交互式缺陷定位是在动态污点追踪技术基础上衍生出的新型IAST手段 。 通过减少动态污点追踪中的触发点(hook函数) , 即只对应用执行的关键函数点进行敏感操作判断 , 并通过一些精心构造重放流量的Payload来主动发现潜藏在业务应用里的安全漏洞 , 同时可以精准定位其所在代码行 。 由于主动IAST的特殊技术优势 , 当开发者修复完漏洞后 , 还可以对指定漏洞进行全面回归测试及漏洞修复验证 , 协助用户快速提高漏洞收敛效率 。