IAST安全扫描原理

交互式应用程序安全测试(IAST)是一种创新的安全测试技术,它结合了黑盒测试和白盒测试的优势,形成灰盒测试。IAST的交互性体现在agent与扫描器的协作中,主动型IAST通过动态代理在运行时植入代码,监测风险函数并进行漏洞扫描。被动型IAST则侧重于监控数据传播链,寻找潜在的安全风险。这种技术在提升安全性评估效率和准确性方面具有显著效果。
摘要由CSDN通过智能技术生成

IAST:交互式应用程序安全测试(Interactive Application Security Testing),是黑盒测试(SAST),白盒测试(DAST)结合优点而成的灰盒测试

其交互性体现在agent和扫描器之间的交互,分为三类,1.主动型,2.被动型(流量型暂不考虑在内,因为未实现agent)

主动IAST

请添加图片描述
agent使用java动态代理,在程序运行时修改字节码插入代码(即插庄)。
1.agent部署:agent会是一个jar文件,程序运行的时候设置代理为agent,比如运行java程序的时候java -javaagent:agent.jar -jar service.jar启动服务,这时agent会连接在远端扫描器,同时在程序运行时植入代码。
2.用户访问被测应用时,agent判断是否触发了风险函数。比如检测到了executeQuery()函数

Statement statement = con.createStatement();
String sql = "select * from users where name = '" + name + "'";  //通过拼接的方式构建sql查询语句,存在sql注入的风险
ResultSet rs = statement.executeQuery(sql);

那么agent会把用户访问的url连同参数一起发送给远端扫描器。
3.扫描器url去重
4.重放扫描:模拟用户向被测服务扫描,agent在风险函数处监听。如果agent检测到扫描器发送的特殊数据,证明存在漏洞,agent上报信息。如果agent没有检测到扫描器发送的数据,则不存在漏洞。

被动IAST

请添加图片描述
agent使用java动态代理,在程序运行时修改字节码插入代码。
1.agent部署,同上
2.用户访问被测应用,agent监听运行上下文,用户输入,风险函数。监控从用户输入到风险函数中间的被污染的数据,传播链。
比如:

String name = request.getParameter("name");
String sql = "select * from t_u where name = '" + name + "'";
statement.executeQuery(sql);

nameexecuteQuery()传播链没有监控到安全过滤,则认为存在漏洞。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值