软件开发过程中,安全检测极为重要。带有漏洞的软件一旦被恶意利用,将造成数据泄露、业务瘫痪,为企业带来不可估量的损失。这就要求企业在系统开发初期发现系统安全问题,快速定位应用漏洞并修复,从源头减少开发过程中的系统漏洞数量。为了解决这些问题,IAST技术应运而生,并逐渐受到行业关注。
什么是IAST
IAST即交互式应用安全测试(Interactive Application Security Testing),是2012 年 Gartner 公司提出的一种新的应用程序安全测试方案。通过代理和在服务端部署的agent程序,收集、监控Web应用程序运行时的请求数据、函数执行,并与扫描器端进行实时交互,高效、准确地识别安全漏洞,同时可准确确定漏洞所在的代码文件、行数、函数及参数。IAST分为主动式(Active)和被动式(Passive)两种,接下来我们将对这两种IAST技术进行对比。
主动式(Active) IAST
主动式IAST由发包器和agent两部分组成。发包器负责拿到流量并遍历替换流量的参数(输入点)为poc,并重放流量。agent的职责分为两部分,应用启动时,负责对应用中的目标方法或者函数(执行漏洞的方法或函数)进行插桩,给目标方法加上一个代理层。应用运行时,捕获进入应用的流量,在代理层捕获方法参数。
- agent对应用进行插桩,把应用中的目标方法和函数添加到代理层;
- 用户发起请求;
- 代理收集流量并发送给发包器,发包器对流量里的参数进行改造,并发送POC流量到被测应用服务端;
- agent收到流量且在代理层捕获到方法参数;
- 在确认是来自发包器的流量后,agent将流量特征和方法上下文信息发送给发包器,发包器根据方法名、方法参数等信息判断POC是否能顺利打入目标方法来决定是否存在漏洞。
被动式(Passive) IAST
被动式IAST只有一个agent部分,职责也分为两部分。应用启动时,负责对应用中的目标方法或者函数进行插桩,给目标方法加上一个代理层。应用运行时,捕获进入应用的流量,在代理层进行污点分析。
- agent根据预先设计好的目标方法列表进行插桩,目标方法列表会把方法分为三类:source、propagate和sink,source:应用获取外界输入数据的方法,例如:request.getRequestParameter(string);propagate:应用内用于处理数据的方法,例如:String.substring(int,int);sink:执行漏洞的方法或函数,例如:Runtime.exec(string);
- 用户正常使用该应用,或者进行业务测试,或者进行自动化脚本测试;
- agent捕获进入系统的流量,进行污点跟踪和分析;
- 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.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
点击在线阅读,体验更好 链接 现代JavaScript高级小册 链接 深入浅出Dart 链接 现代TypeScript高级小册 链接 类型推断 TypeScript通过类型推断可以自动推导出变量和表达式的类型,提高代码的可读性和可维护性。 类型推断 类型推断是…