干货分享 | 一文了解交互式应用程序安全测试(IAST)技术

news2025/7/10 17:57:13

软件开发过程中,安全检测极为重要。带有漏洞的软件一旦被恶意利用,将造成数据泄露、业务瘫痪,为企业带来不可估量的损失。这就要求企业在系统开发初期发现系统安全问题,快速定位应用漏洞并修复,从源头减少开发过程中的系统漏洞数量。为了解决这些问题,IAST技术应运而生,并逐渐受到行业关注。

 什么是IAST

IAST即交互式应用安全测试(Interactive Application Security Testing),是2012 年 Gartner 公司提出的一种新的应用程序安全测试方案。通过代理和在服务端部署的agent程序,收集、监控Web应用程序运行时的请求数据、函数执行,并与扫描器端进行实时交互,高效、准确地识别安全漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。IAST分为主动式(Active)和被动式(Passive)两种,接下来我们将对这两种IAST技术进行对比。

主动式(Active) IAST

主动式IAST由发包器和agent两部分组成。发包器负责拿到流量并遍历替换流量的参数(输入点)为poc,并重放流量。agent的职责分为两部分,应用启动时,负责对应用中的目标方法或者函数(执行漏洞的方法或函数)进行插桩,给目标方法加上一个代理层。应用运行时,捕获进入应用的流量,在代理层捕获方法参数。

  1. agent对应用进行插桩,把应用中的目标方法和函数添加到代理层;

  2. 用户发起请求;

  3. 代理收集流量并发送给发包器,发包器对流量里的参数进行改造,并发送POC流量到被测应用服务端;

  4. agent收到流量且在代理层捕获到方法参数;

  5. 在确认是来自发包器的流量后,agent将流量特征和方法上下文信息发送给发包器,发包器根据方法名、方法参数等信息判断POC是否能顺利打入目标方法来决定是否存在漏洞。

被动式(Passive) IAST

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

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

  2. 用户正常使用该应用,或者进行业务测试,或者进行自动化脚本测试;

  3. agent捕获进入系统的流量,进行污点跟踪和分析;

  4. agent在sink点的代理层判断是否有外界的输入流向该sink点,如果有则认为该方法的参数可以被外界控制,存在漏洞。

被动式还是主动式?

主动式IAST优点主要是准确率高,但是存在以下缺陷:

  • 依赖于重放流量,当前应用大多存在验证码、数据包加密、防重放等安全措施,服务间存在大量RPC调用,难以重放流量

  • 可能会产生大量的脏数据,影响功能测试结果

  • 与开发语言强关联

被动式IAST基于污点分析检测漏洞,无需发包,部署简单。只需要给应用添加agent,即可进行测试,测试过程中不产生脏数据,不依赖重放流量,适用范围广,可定位到漏洞代码。也无脏数据产生,避免了主动式IAST的缺点。

基于以上特点,当前主流的IAST产品多采用被动式IAST,而主动式IAST多用于辅助验证功能

IAST核心能力

实时漏洞检测

IAST在完成应用功能测试的同时即可完成安全漏洞检测,且不会受软件复杂度的影响,适用于各种复杂度的软件产品。

准确性高

相较于SAST,IAST是基于请求、代码、数据流、控制流及运行时上下文信息综合分析安全漏洞;而与DAST相比,DAST则很难定位到与漏洞相关的代码行,IAST可以提供详细信息,例如带有漏洞的代码位置,完整的数据流和堆栈信息,以帮助安全和开发团队进行安全漏洞修复。

覆盖面广

IAST覆盖的深度和广度取决于功能测试的深度和广度,只要正常功能测试能覆盖的流量都能被扫到。

可拓展性强

IAST在测试过程中不产生脏数据,且能无缝融合DevSecOps,可以很好的与SDLC、SCA等工具集成,具有很高的拓展性。IAST能够使用多个规则,持续分析应用的整个组成,而传统的扫描按既定规则运行,无法动态加载新规则,无法扩展更多应用。

IAST局限性

语言局限

不同的语言、不同的框架会影响到漏洞的测试情况。

性能局限

性能要求10%,但相比 RASP,我们可以不把分析和处理都放进探针端完成,因为这点会对性能产生极大的影响。

环境局限

不同的部署环境有不同情况发生,测试环境和实际生产环境会有差异。

部署成本的局限

在复杂的部署环境下,如果加上探针会对产品产生负面影响,负面影响会让其他职能部门认为IAST产品有问题,甚至对安全工作产生不信任。

开源网安灰盒安全测试平台

开源网安灰盒安全测试平台(VulHunter)是国内首款基于IAST技术自主研发的灰盒安全检测产品,通过使用插桩技术和流量代理,在研发测试阶段对运行时的应用及API进行漏洞实时检测。VulHunter支持对软件漏洞进行全生命周期管理,实施多维度应用安全管控具有“高覆盖、低误报、实时检测”等优点,可与DevSecOps流程无缝融合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马点评Redis实战(短信登录;商户查询缓存)

黑马点评 通过一个类似于大众点评的项目了解学习redis在实战项目中的使用,下面是项目中会涉及到的模块: 一、导入黑马点评项目 导入springboot项目,导入sql脚本到数据库,开启nginx,更改项目配置文件中的redis和mys…

头部证券公司安全体系搭建实战讲解—开源网安S-SDLC平台助力金融科技安全发展

数字化时代背景下,新兴技术广泛应用导致软件安全隐患不断扩大。而金融行业由于项目周期长、业务规模大、应用数量多、合规监管严、内外合作多等特性,进一步加重了安全风险。 与此同时,《等保2.0》、《网络安全法》等国家政策的发布&#xff0…

【排序】直接插入排序与希尔排序(图示详解哦)

全文目录 引言直接插入排序思路实现 希尔排序思路实现 总结 引言 在上一篇文章中,我们实现了选择排序与堆排序,在本篇文章中将继续介绍直接插入排序与希尔排序: 直接插入排序与希尔排序都属于插入排序的一种: 这两种排序的思想都…

Ae:摄像机设置

Ae菜单:图层/摄像机设置 Camera Settings 快捷键:Ctrl Shift Y 新建摄像机图层时,首先会弹出摄像机设置 Camera Settings对话框。 经典 3D 渲染器时的摄像机设置 Cinema 4D 渲染器时的摄像机设置 类型 Type 有两种类型的摄像机供选择。 提…

空间矢量数据保存为GeoJSON、PDF等文件格式

专注系列化、高质量的R语言教程 推文索引 | 联系小编 | 付费合集 我们使用的空间矢量数据一般是Shapefile格式的,它在ArcGIS、R语言中都能加载,但是这种数据格式在使用时也有不便:它是由多个文件构成的,一般有.shp、.shx、.dbf、.…

Session和Cookie区别介绍+面试题

Session 会话: 对应的英文单词:session用户打开浏览器,进行一系列操作,然后关闭浏览器。整个过程叫做一次会话一个会话包含多次请求 session机制属于B/S结构的一部分,主要的作用就是为了保存会话状态。(用户登录成功后…

Spring使用注解存储和读取对象

文章目录 一、存储Bean对象配置扫描添加注解存储Bean对象注解使用范围Bean的命名五大类注解的关系为什么需要五大类注解? 二、方法注解BeanBean重命名 三、对象注入属性注入Setter注入构造方法注入Autowired 和 Resource 的区别 一、存储Bean对象 之前我们存储Bean时&#xff…

【MATLAB基础绘图第2棒】绘制柱状/饼图填充图

MATLAB绘制柱状填充图 方法1:hatchfill2工具1.1 案例1:柱状图填充1.2 案例2:饼图填充 方法2:applyhatch函数2.1 案例1:柱状图填充2.2 案例2:饼图填充 方法3: applyhatch_plusC函数3.1 案例1&…

分析软件及其隐藏后门实验笔记

软件后门和软件加壳是什么 软件后门可以理解为在软件中植入病毒等具有后门功能的代码,通过运行软件来对用户的系统造成破坏、窃取机密等。 软件加壳一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把…

Cisco SD-WAN (Viptela) version 20.11.1 ED - 软件定义广域网

请访问原文链接:https://sysin.org/blog/cisco-sd-wan-20/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 支持 SASE 的架构,其集成了面向多云、安全、统一通信和应用优化的各种功能,可用于轻…

ChatGPT干掉程序员?想多了...

GPT-4才诞生没几天,感觉朋友圈已经被这个人工智能刷屏了,大家一边在感叹人工智能行业蓬勃发展的同时,一边又有不少人患上了AI焦虑症。 这其中,以程序员首当其冲。原因无他,只因为GPT-4的惊人的能力和不少大佬的发言。 …

4.17~4.18学习总结

网络编程 概述 1.什么是网络编程 在网络通信协议下,不同计算机上运行的程序,进行的数据传输,计算机跟计算机之间可以通过网络进行数据传输。 2.常见的软件架构: B/S,C/S 3.通信的软件架构CS BS各有什么区别和优点…

阿里云免费使用stable diffusion三个月【ai生成图片】详细教程【保姆级】

起因 这两天关注了ai生成图片,尝试了mijiourney服务【比较贵没入手】,结果免费的没有了,没用上,换了国内的一些小程序体验了下 综合体验式是太慢了,而他们是基于国外开源的stable diffiusion模型开发的【可以比肩mij…

【FAQ】关于华为推送服务因营销消息频次管控导致服务通讯类消息下发失败的解决方案

一. 问题描述 使用华为推送服务下发IM消息时,下发消息请求成功且code码为80000000,但是手机总是收不到消息; 在华为推送自助分析(Beta)平台查看发现,消息发送触发了频控。 二. 问题…

java 快排算法详解,java 快排代码

快排是一种高效的数据结构,它使用一个关键字(Key)来表示数据元素的一个集合。也就是说,快排是一个有序数组,而这个有序数组由两个元素组成。 快排的基本思想是:如果数组元素的值比它前面的两个元素都大&…

记录一 :对象锁和类锁

目录 简介 通过8个案例来解释说明 案例及总结 简介 阿里规约【强制】高并发时,同步调用应该去考量锁的性能损耗。能用无锁数据结构,就不要用锁;能 锁区块,就不要锁整个方法体;能用对象锁,就不要用类锁。…

提高工作效率的宝藏网站和宝藏工具

一、好用的网站 面包多 面包多 创作者在面包多,通过出售课程,文章,绘画,创意作品,软件,电子书,音乐, 游戏,咨询服务,每月获得 数百万元 收入。 写作素材模板…

二阶段算法:R-CNN类网络

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

【Java 数据结构】ArrayList的实现和底层源码讲解

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…

java day9

第九章 使用swing 9.1 创建应用程序9.1.1 创建页面9.1.2 开发框架9.1.3 创建组件&& 9.1.4 将组件加入到容器中 9.2 使用组件9.2.1 图标9.2.2 标签9.2.3 文本框9.2.4 文本区域9.2.5 可滚动窗格9.2.6 复选框和单选按钮9.2.7 组合框9.2.8 列表 9.1 创建应用程序 import j…