闲谈安全测试之IAST
前言
在之前的文章谈到的安全测试所在的三个阶段,并大概分析了三个阶段对应技术的优劣势,但是IAST那块因为内容太多并没有铺开来说,今天将着重来谈谈这个在安全测试里举足轻重的一员。
一、简介
IAST,全称是“Interactive application security testing”,翻译过来叫交互式应用安全测试,是一个能自动识别判断应用和API漏洞的一种工具,或者说一种技术。
1、产品上线前闭环漏洞
传统的漏扫工具是在应用上线后,对http(s)请求进行扫描,在应用外部视角,发现漏洞。IAST与之不同,它是持续的,在应用内部,监控并发现漏洞,这意味着,可以在产品上线前,在测试环境中使用,将漏洞扼杀在摇篮之中,极大程度降低了产品上线后的安全风险。
2、产品上线后检测攻击并阻止漏洞利用
当然,也可以在上线后使用,在生产环境使用,这时候就是IAST的进化版本,目前以腾讯OpenRasp为代表的RASP技术,它跟WAF一样,但又不完全一样。WAF是从网络流量的角度来阻止攻击,RASP是从应用内部持续的监控,发现并拦截攻击,不仅在精确度和扩展性上优于传统的Web防护方法,而且能提供在几分钟内将多个业务系统部署新的防护手段的所需架构。
二、什么是IAST
IAST从某种角度来说,它并不能算一个扫描器,因为它并不会主动的去扫描你的应用或API。有过运维经验的小伙伴,可以把它跟zabbix进行类比,zabbix是通过设置一系列的规则和阈值,监控系统状态参数或者服务的某些返回值,一旦触发就同步告警;这里IAST的插桩模式也是类似,它是通过持续不断的在应用内部进行监控,只不过这里的规则和阈值是从漏洞的视角去进行预制的,侦测是否存在符合漏洞规则的情景,一旦符合预先设置的规则,就进行告警,所以,我感觉用监视器形容可能会更合适。
常用有效的IAST技术是通过插桩来实现的,通过在代码运行的中间件上插入探针,通过探针来识别判断安全风险,直接从运行中的代码发现问题,以实现自动化识别和诊断在应用和API中的软件漏洞。
三、IAST探针如何工作
因为部署在服务的中间件里面,IAST探针可以从中获取很多的信息,从某种角度来说,它可以说是SAST和DAST的结合体,包括但不限于代码、流量的分析,主要有以下几个方面:
- 代码—IAST能访问所有和应用一起部署的源代码和二进制代码,代码探头对应用中每一行代码做二进制的静态分析,包括库和框架;
- HTTP流量—IAST能够看到HTTP请求和响应,使用和DAST非常类似的技术,发现和这些流量相关的漏洞;
- 库和框架—IAST能看到部署的每一个库和框架,分析应用和API如何使用它们。不仅IAST能够根据已知漏洞(CVE)来评估库,也能识别部分或整体隐藏在库里面的未知漏洞。重要的是,因为IAST能精确知道库里面的哪一部分被应用真正调用,它能够过滤掉从未被调用的和库相关的漏洞;
- 应用程序状态—IAST能够检查程序执行时的应用状态。例如,IAST能看到调用安全方法时使用的参数来发现弱点,如传递“DES”参数给加密密码构造函数;
- 数据流—从开始进入应用的时候开始,IAST就追踪不信任的输入数据。这是识别最重要的漏洞种类—注入类漏洞的关键。这个技术,有时称之为“污点追踪”,跟踪真实数据在应用中的流动,非常精确;
- 控制流—IAST了解应用的控制流,能够识别出应用行为中漏洞的特征。例如如果一个应用要求在每个web服务中,采用service()方法检查访问控制,这个特征将很容易被IAST发现;
- 后端连接—IAST能够检查围绕着后端连接的所有细节,如数据库、操作系统调用、目录、队列、套接字、电子邮件和其他系统。IAST使用这个信息识别出架构缺陷和安全缺陷;
- 配置—IAST能访问应用、框架、应用服务器、和平台的配置,保证正确的安全配置。IAST甚至能查询应用组件的运行时配置,如XML解析器。注意某些平台,如.NET,重度依赖配置来实现安全;
四、总结
相较于传统的SAST和DAST,IAST取其精华,精准度更高,获取信息更全面,在不影响现有的流程下,可以无感的整合到DevOps流程中,在功能测试的同时进行安全测试。总而言之,在我个人看来,能集成到整个软件生命周期中的IAST是非常值得加入应用安全测试技术名单,目前来说是最经济的安全漏洞检测技术。
闲谈安全测试之IAST相关推荐
- 闲谈安全测试左移三板斧
1.背景 我在闲谈自动化应用安全测试工具中提到这么句话"如果能将安全融到DevOps里,又不影响现有的状态,那当然是最好不过了",这个时候你可能就有疑问了,现有的安全测试模式是怎样 ...
- Java单元测试之JUnit4详解
2019独角兽企业重金招聘Python工程师标准>>> Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @B ...
- pytest接口测试之fixture传参数request
本文主要介绍了pytest接口测试之fixture传参数request的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前言 有的测试用例,需要依赖于某些特定的 ...
- 安全测试之XSS攻击
XSS (跨站脚本攻击)是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS.是一种网站应用程序的安全漏洞攻击,是代码注入的一种.它允许恶意用户将代码 ...
- 黑盒测试之边界值测试
黑盒测试之边界值测试 边界值的定义 稍高于其边界值及稍低于其边界值的一些特定情况 边界值分析 取点 最小值.略高于最小值.正常值.略低于最大值.最大值等五个点. 边界值分析的假设 单缺陷假设原则:只有 ...
- 离开网易的转型之路1:选择测试之路-路上的迷茫
Infoq发布了文章,这里我还是吐槽原文,未修改的,让大家品味下: 1.选择测试之路-路上的迷茫 2010年12月31日,在网易从事了多年开发之后,依依不舍地离开,面临的是一个完全从零开始的全新职位: ...
- 随行付微服务测试之静态代码扫描
静态代码扫描为整个发展组织增加价值.无论您在开发组织中发挥的作用如何,静态代码扫描解决方案都具有附加价值,拥有软件开发中所需要的尖端功能,最大限度地提高质量并管理软件产品中的风险. 背景 微服务架构模 ...
- 《Google软件测试之道》- Google软件测试介绍
<Google软件测试之道>- Google软件测试介绍 2015-05-21 目录 1 质量与测试 2 角色 3 组织结构 4 爬.走.跑 5 测试类型 相关链接 与 ...
- Python+Appium自动化测试之toast定位
目录 一. 前言 二. 环境 三. toast定位准备与定位方法 1. 准备 2. 定位方法 四. 示例代码 一. 前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位 ...
- 测试之美---测试员的心思你不懂
希望阅读本文的朋友是做过测试并有一定经验的,不然,你明白我说的什么意思,但你对本文并不一定深有体会. 测试人员的定位 这其实是个有趣味且值的问题,包括经常跟测试人员打交道的开发人员,甚至测试人员自己都 ...
最新文章
- matlab using mtimes,同版本matlab、同一.m文件,为何一个顺利执行、另一个出错?
- cocos3 深入理解tank和子弹之间的关系
- c++和c语言的区别_C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂...
- 交换机设备登录账号权限1_交换机Super密码配置方法
- 用法与区别_生抽老抽、蚝油味极鲜,总算搞清楚区别了,用法大不同,别用错了...
- 现在做Android开发有前途吗?附面试题答案
- dynamo怎样由线生成体_语音生成效果评价不再逐句进行:谷歌提出长文本语音生成评价新系统...
- Hibernate-面试题
- 淘宝京东设计师来看,电商Banner设计策略!
- .net core精彩实例分享 -- 泛型和集合
- Android WebView使用基础
- html5中加入音频,在H5场景中插入自定义音频和视频(任意画面)
- 代码健壮性的获得 —— 借助编译器及语言的语法特性
- java利用Google Zxing实现 二维码生成与解析
- 自动化测试辅助工具——FirePath
- js实现微信浏览器关闭
- CS229 Lecture 1
- 错误号 MSSQL_REPL20011 错误号:15517
- 怎么用HTML表格中加上线条,如何在html的表格中加入边框线
- AAAI-2021-RE-Progressive Multitask Learning with Controlled Information Flow for Joint Entity and Re
热门文章
- windows脚本编写及使用方法
- 记录下macbook中maven环境变量配置遇到的问题
- 随机森林算法原理解析
- 基于php的企业公文流转审批系统
- 服务器端网站自适应,[移动SEO]PC端和移动端最佳适配方案
- PID参数整定一些总结
- java公寓报修管理系统,基于jsp的公寓报修管理系统-JavaEE实现公寓报修管理系统 - java项目源码...
- 更新!2021智能仓储物流之最全AGV企业供应商名录
- 中兴e8820刷openwrt_2020/05/17 中興E8820V2 OPENWRT自編譯分享 原廠EPPROM修改
- DEP和ASLR的原理与破解