最近看了很多模型方面的理论,形成了自己对DevSecOps的新理解并设计了一套理论体系
一、两种模型
请先看图,一个应用针对外部流量和内部函数调用的基本截图如下
1)“请求响应”模型
在一个应用中,每一次请求都对应存在一个响应,对应这个模型的安全类产品有WAF(web应用防火墙),DAST(俗称漏扫)
通过对请求数据的污染以及响应(反应时间、输出内容)进行判定是否存在漏洞
source-->sanitize-->sink是经典的数据流模型,WAF是强制性对输入的净化(sanitize)的措施,其主要针对的是DAST。部署WAF也是等保合规的必要条件
2)“上下文”模型
上下文模型其实是请求响应模型的逻辑串联,如下图
左下角的中记录了当前线程中调用堆栈的信息,以及每个函数调用时的入参值
我们可以把每一次的函数调用都看成一次请求响应,函数的参数即为请求、返回值即为响应
IAST和RASP都在sink函数上进行了Hook,一旦发现sink函数被调用就回溯整个调用链以挖掘是否不安全的因素,例如:缺少数据净化(sanitize)、存在不安全的函数调用链等
通过多年的策略发展,数据净化主要是针对已知漏洞,而不安全的函数调用上下文主要针对的是未知漏洞(上下文可参考XDR+AI分析异常API调用链判断未知木马)
其中值得一提的是判断是否缺少数据净化是分析内容中占比较高的部分,例如sqli、xss、../、..\、异常的url、恶意文件后缀、命令注入、表达式注入,而这些净化往往针对的是特殊字符的校验
所以针对目前主流的springboot工程,对Controller和Service(包括dubbo的接口)的入参包括:字符串和pojo类中的字符串都进行一次净化(净化应做到可配置,包括深度和规则)
3)本节小结:
参考:切面防御 纵深防御 其实2者的本质都是“漏斗模型”(倒数第三个ppt),将“请求响应”和“上下文”结合场景逐层细化,最终把安全风险逐渐收口
二、DevSecOps的体系设计
通过第一节的模型分析,我们了解到:
WAF和DAST是请求响应模型,主要针对请求响应报文,而缺少应用内部上下文
RASP和IAST则注重上下文(也能hook应用http相关类以获得请求和响应原始报文)
下面我结合我的工作经验将不同环境使用的策略进行分类介绍
1)环境因素
这几年我反复听到一个问题:不同环境导致测出来的bug不同,甚至有些bug只有生产环境上存在
所以开发联调环境(一般就是开发同事的本机)、测试环境(包括功能、性能、安全)、预发环境、生产环境都存在不同的实施策略
2)开发同事本机一般性能受限,经收不住高并发DAST的扫描,并发较低的联调或手工逻辑漏洞挖掘倒是没问题
在这个环境中要求开发人员采用安全基础设施:统一的开发框架、IAST的agent(上报未净化的数据流和危险组件)、测开工程师编写自动化测试代码(我认为该角色和渗透测试工程师角色可以合并参考:yakit复杂场景测试)
主要价值:在开发阶段就介入测试是实践中减少缺陷的一个实践心得,测试人员介入设计和测试以减少逻辑漏洞(尤其是越权),也能结合IAST的自动化能力在前期设计完善的等价类、边界值测试用例以减少数据流漏洞
3)测试环境性能较好可能会低于预发和生产环境,但是漏扫肯定能抗住了
在这个环境中DAST和IAST联动就发挥较大的作用,参考:IAST1 IAST2
注意事项:有的采用IAST和DAST不同厂商,也有采用同厂商,大家在采购前应仔细测试
主要价值:该组合保证了请求响应和上下文的完整分析,保证数据流漏洞测试的覆盖性和全面性,同时在这个环境中可以执行自动化回归测试保证软件的整体逻辑健壮
4)预发环境和生产环境一致,之前环境中“请求响应”模型和“上下文”模型已经分别使用了DAST和IAST,现在剩下了WAF和RASP未使用
WAF除了满足合规要求也拦截低端的漏扫行为以减少RASP的计算量,RASP则主要针对上下文感知是否存在未知漏洞
主要价值:在不影响业务的情况下,满足合规要求(WAF)并使用RASP监测未知漏洞
5)基础设施的统一性
现在有不少代码生成器,针对的是又长又臭的样板代码,尤其是Controller和Service的编写令人无语。。。
开发人员在此类平台能通过点击和注册就生成Controller和Service,让精力主要针对核心业务逻辑的编写
所以在此类基础设施上原生内嵌一套IAST+RASP探针,可以确保应用强制使用IAST或RASP
主要价值:基础设施的统一能保证安全能力的强制执行,减少业务、运维、开发三者对安全团队的抵触情绪
3)本节小结:
通过多年工作经验,总结了关于环境因素、测试介入、回归测试、逻辑漏洞、部门冲突和目前工作的落地实践,设计了不同环境和阶段应当落实的安全工作内容
三、其他
大家是不是很奇怪,代码审计去哪里了?我设计的体系中,代码审计归类到了红队的范畴。
红队人员可以无代价直接获得生产环境源代码进行人工分析挖掘深层次漏洞,并且外部SRC(黑盒无源码)也不能停,保证蓝队同时面对用户、SRC、红队以锻炼出抵抗黑扩的工作状态。
谢谢
标签:基于,DevSecOps,IAST,模型,漏洞,RASP,上下文,响应 From: https://www.cnblogs.com/k4n5ha0/p/18172665