数字供应链安全下的代码疫苗技术治理与实践

随着企业数字化转型步入深水区,数字化应用已逐渐渗透到业务发展、技术研发、企业管理等各个场景,贯穿于企业发展全生命周期。与此同时,数字供应链安全风险日趋严峻,成为制约企业发展并且亟待解决的严重问题之一。数字革命席卷而来,悬镜安全顺势而为。

数字供应链安全现状

数字时代,与业务息息相关的应用面临技术栈的变革和风险面的扩大。开发模式方面,从早期的瀑布式到敏捷,再演进到当下更加注重自动化的DevOps;在应用架构方面,从单体应用巨石架构到SOA(面向服务的架构),再迭代到如今盛行的微服务架构;在基础设施方面,从数据中心到托管服务器,再到云基础设施;在运行环境方面,从物理机到虚拟化,再到容器化以及容器编排技术。应用技术的变革带来风险面的变化,从以往单一的Web通用漏洞风险,变为涵盖API安全、业务逻辑安全、合规风险、容器环境镜像风险以及开源组件风险在内的多维度攻击面,从而促使安全解决方案的提升来应对新应用场景下的安全挑战。

站在数字供应链安全的角度,软件在开发、供应、使用这三大环节中都面临相对应的安全风险,因此在每个环节都需要靠一些技术抓手来帮助解决安全问题,而悬镜安全核心的代码疫苗技术正是企业进行数字供应链安全治理时的技术切入点。

图2 数字供应链安全风险面

代码疫苗技术架构及原理

代码疫苗技术是基于插桩技术来实现的,统一融合了IAST、SCA、RASP、DRA、API、APM等能力,凭借一个探针解决应用长期面临的安全漏洞、数据泄漏、运行异常、0Day攻击等风险,减轻多探针运维压力的同时,为应用植入“疫苗”,实现应用与安全的共生。代码疫苗技术有四个显著的特性:应用生命周期覆盖、不改变应用源代码、无感融入DevOps以及拥有统一的Agent能力。

由于自动化程度高,企业在开发测试环节往往会在应用中部署大量探针,除安全探针外还包括压测探针、代码覆盖率探针、性能监控探针等,都会对业务性能形成一定的负担,给运维工作增添压力和困扰。因而悬镜将安全探针能力模块化,基于底层插桩技术,将IAST、运行时SCA、RASP等安全能力作为安全业务来提供,共享应用数据。

代码疫苗技术的架构从下往上可分为四层:

01

基础层

统一的插桩能力及接口;

02

辅助层

通信及信息上报、配置管理、熔断降级、热加载、日志管理等;

03

业务层

IAST、SCA、RASP、敏感信息、API、热补丁等安全能力;

04

分析层

将业务层获取的数据进行统一分析,包括词法/语法分析、规则、检测模型、聚合联动、污点分析等。

基础层

代码疫苗需要依靠插桩技术,而插桩的实现和具体编程语言的机制相关,共分为两大类:一类是针对有运行时环境的语音如Java、Python、PHP等,可以在启动/运行阶段,通过runtime扩展、修改字节码/IL等来动态植入;另一类是针对编译运行的语言如Golang、C/C++等,可以劫持编译阶段,通过修改编译过程的AST、源代码等进行静态植入。

前者以Java为例,利用Java提供的Instrument特性,在类加载时,对关键类和方法的字节码进行修改,插入检测和防护逻辑。因为仅在JVM Runtime修改字节码,所以无需修改源代码。具体的加载方式是:第一步,随应用服务启动加载,需在Java启动配置,加入参数-javaagent:/agent.jar(Java 5);第二步,通过Attach方式加载,在应用服务启动后,将agent.jar附加到应用进程上(VirtualMachine.attach Java 6)。

图3 针对Java语言实现插桩的流程

后者以Golang为例,在编译源代码时,通过编译插件修改源代码,在关键的方法中添加“钩子”,同时插入探针代码。runtime时,探针在“钩子”上挂载检测和防护逻辑,其中,加载方式随业务程序启动,需要在启动前进行Agent配置。

图4 针对Golang语言实现插桩的流程

业务层

基于插桩,代码疫苗技术能提供业务层所涵盖的安全能力,其中包括:

1)IAST(交互式应用安全测试):分为被动模式和主动模式。主流的被动模式IAST是基于动态污点追踪技术实现,优点是秒级上报漏洞、无脏数据、可检测加密接口等;主动模式IAST基于交互式缺陷定位技术,需要配合扫描端进行流量重放即分析扫描端发送的payload是否进入关键流程中,其优势是检测精度更高。往往两者是结合起来使用,被动模式主要用来实现面覆盖,主动模式主要用来支持被动模式进行漏洞验证。

2)RASP(运行时应用自保护):同样是基于统一的插桩能力实现,在运行时的应用内部进行攻击检测和拦截。IAST可以定位漏洞点具体的源代码位置、行数,而RASP是可以定位攻击的函数调用栈以及实现攻击溯源,同时将基于真实攻击事件生成的数据集成到SIEM(安全、信息和事件管理)平台或自研风险度量平台,进而在安全运营环节进行统一的分析。

3)SCA(软件成分分析):依赖插桩技术的主要是运行时SCA。基于运行时SCA技术,可以审查和监控应用系统实际运行过程中动态加载的第三方开源组件及依赖,在此基础上实时检测组件中潜藏的各类安全漏洞及开源协议风险。此外,通过代码疫苗的Agent插桩,可以分析软件成分,构建软件物料清单SBOM,对线上应用资产进行梳理。

4)API:应用间存在许多微服务节点,彼此通过API关联。微服务场景下的漏洞检测,除了关注某一节点的漏洞风险外,还需要审查与该节点关联的其他节点上的风险,因而需要通过Agent将漏洞检测与链路追踪相结合,即通过代码疫苗实现API资产梳理(暴露面、风险分析)、API链路调用威胁阻断以及OWASP API TOP10(权限控制、注入等)风险管控等。

图5 OWASP API TOP10

微服务链路追踪技术目前比较成熟,主要借鉴了OpenTracing和OpenTelemetry两大标准,后者在前者基础上做了改进。这两大标准定义了链路追踪系统应该具备的结构以及如何通过定义的Trace和Span两大数据模型进行链路追踪。

Trace表示一次(分布式)请求经过的所有局部操作(Span)构成的一条完整的有向无环图,用TraceId标识,其中所有Span的TraceId相同。Span表示一次(分布式)请求过程的一个步骤或操作,代表系统中一个逻辑运行单元,Span之间通过嵌套或者顺序排列建立因果关系,用SpanId来区分。围绕Span的生成、传播、采集、处理、存储、可视化、分析,即可构建分布式链路追踪系统。

图6 微服务链路追踪

5)敏感数据追踪检测:与微服务链路追踪类似,对于敏感数据,既要关注某一个点的数据泄露问题,也要对泄露路径进行溯源。

图7 敏感数据链路追踪

6)应用漏洞热修复技术:应用上线阶段,当漏洞爆发时,可以借助RASP提供的热修复能力即虚拟补丁,通过配置对攻击进行拦截阻断。一般分为两个场景,针对高危组件漏洞,通过禁用风险函数进行修复;针对应用代码风险,通过添加参数白名单来修复或者加固业务。

代码疫苗技术配置与业务保障

代码疫苗技术由于需要插桩,与业务高度耦合,所以在实际部署时会遇到多种挑战,对此,悬镜都针对性地提供了解决方案。

在部署与对接方面,由于用户的应用运行环境不同,悬镜考虑了技术的兼容性:

1)针对容器及K8S环境,可通过修改Dockerfile、动态热部署以及K8S实例动态监控来进行探针插桩;

2)针对自研流水线,可通过应用、节点、版本控制灵活实现与各类自研流水线的关联;

3)针对商业版本的DevOps平台,提供插件或者专门的支持对接。

在业务保障方面,代码疫苗技术具有以下优势:

01

熔断降级机制

基于CPU、内存、QPS、GC等多种性能参数,决定是否降级或者卸载Agent;

02

技术叠加

统一的Agent技术,累计插桩超过百万量级的应用;

03

框架兼容

兼容支持各种语言对应的中间件、框架及第三方Agent,包含大小版本判断;

04

多模式切换

轻量化探针,支持模块化能力的切换。

代码疫苗技术与数字供应链安全保障

在整个数字供应链安全管理体系中,代码疫苗技术及相关的敏捷安全工具既能确保数字化应用生产过程安全透明,帮助形成完善的研发运营体系,防止应用带“病”上线的同时生成可信的软件物料清单(SBOM);又能对于存量的上线应用资产进行梳理,并提供持续动态风险免疫能力,确保建立快速的应急响应能力;此外还能对外部采购、外包交付的应用进行数字供应链安全审查。

图8 数字供应链安全管理平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值