伴随着云计算带来的基础设施变革以及应用技术架构的转变,云原生和云原生应用已经成为耳熟能详的词汇。Gartner预测,到2025年,云原生平台将成为95%以上新数字化计划的基础。伴随云原生场景的普及,云原生应用将引领下一个应用时代,但同时也带来了新的安全性问题。本文将深入系统地分析IAST代码疫苗技术如何将敏捷安全融入云原生场景,以安全自适应角度实现共生自进化。
云原生基础介绍
在分析云原生应用的安全性问题前,首先需要明确何为云原生?
参考CNCF(Cloud Native Computing Foundation,云原生计算基金会)对外公布的云原生定义:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。
图1 CNCF对云原生的定义
当应用云原生技术进行云原生应用开发时,通常结合容器构建的微服务架构,在DevOps敏捷开发流程的CI/CD管道中进行,经过相关测试后部署到云基础设施中,并在运行时使用Kubernetes进行编排。
云原生应用安全
针对云原生应用的安全性问题,Gartner提出了Cloud-Native Application Protection Platform(CNAPP),即云原生应用保护平台。它结合了CWPP(Cloud Workload Protection Platforms,云工作负载保护平台)和CSPM(Cloud Security Posture Management,云安全态势管理)的功能,可扫描开发中的工作负载和配置,并在运行时保护它们。
图2 CNAPP详细功能(图片源自Gartner)
CNAPP将云原生应用安全保护分为三个层面:制品扫描(安全)、基础设施/云配置(安全)以及运行时保护(安全),整体思路是基于DevOps开发模式进行安全建设。除关注基础设施/云配置(安全)以及运行时保护(安全)外,仍需结合DevSecOps的“安全左移”思想,实现敏捷条件下的应用安全向内生长。本文重点讨论的是云原生应用在上线前的安全能力保障,即CNAPP所指的制品扫描(安全)层面。
但是随着云原生技术应用深度的增加,软件架构微服务化导致子应用划分更广、应用开发发布迭代速度达到分钟级别,交付速度的加快和微服务间请求关联性的增加,会直接影响到传统检测工具对漏洞有效性判断的准确度。因此从检测能力角度看,单纯从静态代码或者静态制品的角度去进行安全扫描,已经很难满足行业用户在云原生安全场景下对数字化应用进行持续敏捷安全测试的高要求。
而IAST(Interactive Application Security Testing,交互式应用安全测试)技术既能很好满足DevOps流程对于应用安全测试的能力需求,又能高度契合云原生应用安全场景,如梳理微服务架构下应用资产、融入流程进行自动化安全测试、全面覆盖云原生应用风险(代码/组件风险、API安全、安全配置等)、调用链路跟踪并进行漏洞有效性验证。
云原生下的IAST
正是由于IAST对云原生各安全场景的适应性,使其相较于其他传统安全测试技术而言,在云原生应用安全保障方面具备高度适配的能力和得天独厚的优势。接下来会从应用架构适应性、开发模式适应性、云原生应用适应性、风险追溯适应性四个层面对其能力及优势进行分析。
应用架构适应性
云原生带来的技术架构转变是显而易见的,从传统的单体应用模式变为多微服务解耦业务应用的模式是其中比较常见的一种。在这种模式下,传统的安全测试工具较难适应微服务和容器化带来的挑战,如自动化程度、检测效率、覆盖度等。示例:
而IAST通过插桩的方式将Agent融合进应用中(也可以采用共享空间等其他方式),在启动脚本中放入自动化安装脚本,基于污点分析的检测技术,无脏数据产生,将安全能力和基础设施绑定,在应用运行被访问执行时即可同步进行安全测试,实现安全前置。当前被普遍接受的是将IAST应用到测试阶段(自动化/人工功能测试)。
图3 Agent融合云原生应用容器
在实际应用时,IAST探针可结合自动化流水线任务执行工具,通过执行bash脚本或者添加启动参数的方式,实现自动化分发预装Agent探针,常见接入方式举例如下:
1)自动化脚本示例,一般用于需要自动下载Agent后添加启动参数的场景:
2)将$IAST_OPTS加入启动命令中的示例,一般用于SpringBoot等独立应用程序启动的场景:
3)借助k8s Operator机制,可参考通过WebHook监控Pod创建动作,在Pod创建的同时自动将携带探针的Pod加载到目标Pod内。实现Agent更加便捷的部署管理。deployment设置如下:
借由IAST探针自动化分发的优势,可以将探针模块部署覆盖每个微服务应用,突破传统主机层到应用层的安全管理界限。实现在检测应用漏洞风险的同时,帮助梳理应用资产信息,并监控微服务之间的东西向流量。
开发模式适应性
云原生技术得以推广,归功于容器、微服务等新技术和方案的诞生。此外,开发模式的转变也是非常重要的原因之一。在传统瀑布流的开发模式下,前后端框架非常常见,应用发布周期相对较长。而随着DevOps以及云原生、微服务框架模式的兴起,应用的发布更新周期越来越短。
图4 架构模式的转变
越来越短的发布更新周期意味着安全能力对于开发模式的适应性要求越来越高,如安全技术接入方式、任务周期延长时间、稳定性、兼容性等。传统AST技术如SAST(Static Application Security Testing,静态应用安全测试)在DevOps模式下虽然能够采用插件或者脚本的方式介入流程,但是其扫描时间长、误报率高的问题,决定了其只能采用“外-挂”的模式接入DevOps流程,而无法真正形成DevSecOps。
图5 发布模式的转变
IAST凭借上述架构适应性的优势,能够简便地接入,且无需专业的安全测试,只需进行功能触发即可检测应用漏洞,以及其“秒级”完成检测和上报的能力,完美契合在云原生DevOps场景下对于安全性和敏捷性融合的要求,从而成为DevSecOps方案最佳实践。
云原生应用适应性
云原生带来了IT架构的迭代,也相应增加了应用制品形态的变化,出现了更多基础配置、API安全、敏感数据易暴露、应用制品镜像等新型风险场景。正如前文所述,CNAPP对新制品扫描的能力要求包括漏洞检测、API扫描以及软件成分分析等,一般的检测工具难以覆盖。DAST(Dynamic Application Security Testing,动态应用安全测试)主要依赖爬虫探测来检测地址(爬虫无法对API进行展开),且对于使用一次性Token验证或者登录校验等场景很难做到有效覆盖,而SAST工具虽然能在早期实现一部分的检测,但是由于代码程序没有真实运行,且无法区分源代码中没用到的冗余代码部分,误报部分较多。
IAST对于微服务和分布式框架的兼容,能够梳理发现新应用制品中已知和未知的全量API(通过本地配置检测、接口流量跟踪等方式),对API中的未授权访问以及API测试覆盖率等有很好的发现和统计能力。同时IAST通过动态运行时的组件分析能力能够得到比SAST组件分析更加真实精准的组件使用信息。
由于IAST技术本身的强适应性能力,可覆盖现代应用架构下的大部分检测目标场景,如下:
图6 云原生场景下的IAST技术适应性
风险追溯适应性
云原生架构下,应用微服务化,同一个微服务应用被独立出来,可以被多个上游微服务进行调用。微服务间通过REST API或RPC API互相调用,错综复杂。微服务化降低了软件的耦合度,为应用开发发布提供了便利,但同样也增加了风险暴露面和漏洞溯源难度。IAST利用其应用插桩特性,实现微服务调用链路跟踪,展示微服务应用漏洞攻击链路,解决风险所在具体应用进程的追溯问题。这里以Dubbo框架微服务为例:
图7 微服务链路追踪过程
其链路跟踪的过程原理可总结为:用户在浏览器操作web页面时发出HTTP请求并由网络传输到后端服务,后端服务在内部处理请求时,由Dubbo服务消费者调用服务提供者,触发一次Dubbo RPC回调,再逐层返回给用户层。基于IAST探针覆盖度及可对函数进行跟踪的特性,可在请求接收操作过程中,由Dubbo服务提供的信息向上溯源,找到触发本次Dubbo调漏洞的源头调信息,如:HTTP GET/user/xmirror,从而溯源绘制调用链路路径。
图8 查找微服务前端访问入口
当安全测试人员发现微服务应用存在漏洞时,由于模拟Dubbo协议请求困难且无法完整展示危害,此类漏洞验证工作实施困难。但通过借助IAST链路跟踪信息,溯源定位HTTP/HTTPS前端入口,可轻松完成漏洞验证工作。IAST对于链路跟踪的适应性,解决了在多个微服务互相调用过程中确认漏洞有效性和位置的难题,有效降低了安全人员和开发人员对漏洞修复的工作量。
代码疫苗驱动云原生积极防御创新
悬镜首创的基于代码疫苗的智能单探针技术,关键是将智能风险检测和积极防御逻辑注入到运行时的数字化应用中,如同疫苗一般与应用载体融为一体,使其实现对潜在风险的自发现和对未知威胁的自免疫。作为智能代码疫苗技术的核心,函数级探针深钩在应用内存上下文之中,仅需安装一次,可支持IAST、RASP、SCA、API Fuzz、APM等应用安全检测响应能力,真正实现All in one,One for all。
智能单探针技术可接入SDLC生命周期各个环节,进行组件风险检测、代码安全测试、风险验证、漏洞热修复以及运行时自免疫,在云原生应用开发和运营的不同阶段发挥不同的安全功能,以一个探针的形态与云原生应用共生。
图9 悬镜“智能单探针”云原生安全框架
云原生架构的应用,在提升数字化应用交付效率的同时,也让安全更加集中到业务应用本身。作为下一代代码疫苗技术,悬镜灵脉IAST凭借核心智能单探针技术的四大创新,突破性地将安全融入到业务应用的运营阶段,先后在金融、泛互联网、车联网、智能制造、能源及运营商等行业服务了数千家行业标杆用户,在包括云原生安全、软件供应链安全、DevSecOps等主要场景下有着广泛的落地应用实践。(详细实践可参考子芽的专业著作《DevSecOps敏捷安全》)
第一个技术创新表现在轻量化层面。最大限度减少在应用侧反复安装安全探针的动作,降低了对开发团队的影响。对开发安全乃至整个大安全而言,探针往往是决定能否采集到高质量数据的关键影响因子,但无论在主机、云还是应用侧,如果埋下过多的安全探针肯定会让用户有所抵触,甚至还可能会影响到业务的稳定运行。开发阶段提前在数字化应用的容器环境中埋下IAST插桩探针,辅助开发团队将安全左移,在开发过程中提前发现潜在漏洞风险,随后应用在发布时,会携带探针一同打包上线,而应用上线后,伴生在应用中的探针就可以顺势转为RASP探针,扮演好积极防御的角色,相当于只需一次安装动作,就能够使探针伴随应用全生命周期,解决从开发、测试到运营阶段的关键安全问题。
第二个技术创新表现在漏洞响应层面。依赖于智能单探针带来的进阶版IAST和RASP的双重联动能力,假设通过IAST在应用上线前发现漏洞,而应用因着急上线导致漏洞不方便修复的场景下,也能够通过RASP以智能热补丁的方式一键自动修复漏洞,在应用快速上线的同时提供可靠的安全保障。
第三个技术创新表现在性能层面。一方面通过自研的独特技术路径规避了业内惯用的反射技术路线,将整套安全产品体系的整体性能优化到了APM级别,最大程度减少了工具对于性能的侵蚀。另一方面在业内率先将熔断机制引入到IAST和RASP产品中,实时监测CPU、内存、QPS等指标,本着业务优先原则,当业务流量大时,算法引擎会根据熔断机制进行综合判断,做出降级处理;当业务流量超过阈值时,产品甚至会自动卸载,尽可能地为业务做出让渡。
第四个技术创新表现在DevOps生态层面。目前已经同DevOps厂商、中间件等信创厂商形成了战略级的上下游合作关系,将自身产品深度柔和地嵌入到DevOps平台以及中间件等设备中,保证用户能够以安全无缝接入的形式得到更全面更友好的产品体验。