什么是DevSecOps?
在安全漏洞逐年增长,应用程序漏洞成为首要重灾区的大背景下,在软件开发的全生命周期过程中进行安全赋能,成为了减少软件漏洞数量并将安全缺陷最小化的一种新理念。
安全左移(DevSecOps)理念在微软公司SDLC(Security Development Life Cycle)概念基础上,通过将安全性融入DevOps流程和工具链中,逐渐成为了目前面向应用软件开发层面的主要安全技术之一。
从需求层面看,DevSecOps虽非合规需求驱动市场,但其市场正逐步进入成长期。软件开发商、大型互联网厂商、银行和具有一定规模和技术实力、自建IT系统的大型集团性企事业单位是目前DevSecOps市场中主要的三类客户,一般客户以软件投入金额3%-5%的比例估算安全投入,DevSecOps市场未来还是极具成长性的。
【以下观点来自悬镜安全CEO子芽在金融行业IAST技术实践活动(深圳)上分享的内容】
软件安全需求产生的原因
软件开发安全面临的两个问题是:
- 系统一定有未被发现的安全漏洞。程序员每写1000行代码,就会出现1个逻辑性缺陷,每个逻辑性的缺陷,或者若干个逻辑性缺陷,最终都将导致一个漏洞;因此“缺陷是天生的,漏洞是必然的。”
- 现代应用都是组装的而非纯自研。78%-90%的现代应用融入了开源组件,平均每个应用包含147个开源组件,且67%的应用采用了带有已知漏洞的开源组件,软件供应链安全威胁迫在眉睫。
现代应用安全的风险面,不仅有Web通用漏洞(SQL注入、命令执行、XXE、XXS等OWASP TOP 10)和业务逻辑漏洞(水平/垂直越权、短信轰炸、批量注册、验证码绕过等),还有大量来自第三方开源组件缺陷(如CNNVD/CNVD/CVD漏洞)和自研代码。
因此,针对现代应用全面风险审查应从考虑第三方开源组件、自研代码通用漏洞、自研代码业务逻辑漏洞等维度进行综合安全审查。
软件安全的问题产生具备内外因素,其中内因一共有三个部分:
- 软件规模持续扩大,功能越来越多,越来越复杂;
- 软件模块复用,导致安全漏洞延续,如果组件本身有漏洞则会形成缺陷传染;
- 软件扩展模块带来的安全问题,比如留置的第三方插件接口等。
外因的核心还是反复强调的开源治理。开源软件的盛行给安全带来巨大的挑战,不同行业不同领域引用的第三方的开源组件库的比例不同,但都会导致出现大量的安全风险。
然而传统的SDL模式存在一些弊端,比如:业务先上线,安全问题后补救;安全责任过于依赖有限的安全团队资源;安全较缓慢,常置于流程之外,当版本更新迭代较快时,传统的安全手段限制业务交付等。持续使用SDL方式会制约业务的发展,这个时候,企业纷纷开始向DevOps模式转型。
DevSecOps的技术和落地
提及DevSecOps,大家可能最先想到的就是莫比乌斯带,代表永恒的持续。在DevSecOps中,就是用它来表达dev和ops是如何连接的,强调整个开发安全运营一体化的理念。
DevSecOps不仅要侧重左移,也要关注向右移和持续化的反馈演进。
2018年针对DevSecOps框架国际上提出黄金管道,黄金管道能做的很多,但适用于流水线里面比较好的是CI/CD,关键敏捷安全技术工具链包括:
一、AST(灰盒、黑盒及白盒)
二、OSS开源治理
三、RASP运行时应用自我保护
**
在复杂的安全成因下,子芽认为,企业最需要优先考虑的DevSecOps实践基础技术应该是AST(灰盒、黑盒及白盒等相关技术)。白盒更加适应安全团队相对成熟且具备运营能力的甲方,在通用化方面不够完善,黑盒大部分偏向漏扫,侧重于上线运营阶段,而灰盒对于应用自身风险发现有着更显著的效果。其中,研发一款好用的代码安全疫苗也是悬镜安全的长期责任。
通过AST技术优劣势的对比图我们可以发现,IAST技术误报率极低、检出率高、使用成本低、基本没有误报,同时更偏向本身漏洞,也可发现难以回显带外。每一项技术都有自己的特点,任何一项新兴技术的出现,都有时代的背景和其使用场景,没有绝对好坏之分。目前我们认为在DevSecOps实践框架下,最需要优先考虑的关键基础技术则是IAST。
狭义的IAST一般特指运行时插桩模式,可帮助普通研发测试人员快速完成业务安全测试,精准定位漏洞细节及修复指导,而广义的IAST则包含了流量学习和日志分析等更多模式和能力,一般适用于较大规模的团队和部门,可以在组织边界处配置流量镜像辅助插桩,主动完成对内部测试资产的全局梳理。同时IAST比较依赖用户点击流量覆盖的全面性,可通过主动模拟点击技术做进一步补充。
**
被动IAST技术(动态污点追踪):基于应用插桩探针,Web应用运行过程中,通过实时监控程序的污点数据在系统程序中的传播来检测数据能否从污点源传播到污点汇集点。
其特点是:
- 误报及漏报高于主动IAST;
- 无数据重放、无脏数据;
- 支持防重放、带签名、加密接口。
主动IAST技术(交互式缺陷定位):基于应用插桩探针,Web应用运行过程中,通过精心构造重放流量的payload来注定触发潜藏在业务应用里的安全漏洞,并在应用执行的关键函数点进行敏感操作判断和深度的脏数据处理,在发现潜藏漏洞的同时精准定位器所在代码行。
其特点是:
- 精准度更高,更易于指导研发修复;
- 支持漏洞利用、漏洞复现;
- 无法处理签名加密接口。
IAST流量镜像及嗅探技术:适合测试目标或部分之间存在隔离,无法清晰了解测试资产,通过在网络出口旁路部署流量镜像或目标主机上预置流量嗅探服务,透明无感知接入。
IAST用户端流量代理技术:适合测试人员对小规模网站进行深度渗透测试,不依赖测试系统语言环境,无需介入测试环境即可进行安全测试。
IAST实时WEB日志分析:实现基于请求流量日志收集并实时分析的检测模式,可支持不同场景下日志产生位置的收集。该模式对应用入侵性极低,并且可以针对性设置采集点,将业务影响降到最低。
IAST运行时OSS开源组件分析:更加侧重应用系统实际运行过程中动态加载的第三方组件及依赖,在此基础上实时检测组件中潜藏的各类安全漏洞及开源协议风险。
子芽对IAST技术的特点及落地重点考虑事项进行了总结分享:
IAST技术特点:
- 检测范围可覆盖黑盒OWASP TOP10及白盒CWE主要漏洞及缺陷;
- 相比传统SAST/DAST,IAST精准度更高;
- IAST可以解决签名接口问题;
- IAST可以检测非HTTP/HTTPS协议,如RPC协议更使用于微服务场景;
- IAST获取信息全面和精细,有利于指导研发;
- IAST更易于整合到DevSecOps CI/CD流程;
- 主被动IAST融合,将使IAST技术优势更加突出。
落地重点考虑事项:
- 同时支持应用插桩和多种流量追踪技术,应对业务场景丰富、开发语言众多、部署环境复杂等场景;
- 支持自动化安装,协调CI/CD完成批量部署;
- 支持配置热加载、性能异常熔断机制;
- 支持SCA第三方开源组件运行时监测分析;
- 支持Jenkins、Jira、CAS等第三方平台;
- 支持全流程闭环漏洞管理,包括从漏洞发现、问题沟通、修复整改、漏洞复查及趋势分析等维度;
- 通过开放接口支持自定义安全过滤函数和清洁函数;
- 支持IPV6和国产系统环境。
在需求侧,复杂的企业环境对IAST技术落地提出了更高的要求,综合看来,IAST技术的落地需要重点结合企业组织的实际环境。