作者:京东云 刘一鑫

1 背景

随着网络攻击事件整体呈上升趋势,应用作为网络入口承载着大量业务和流量,因此成为了安全的重灾区。黑客往往借助自动化的工具以及安全漏洞,对Web进行漏洞扫描和探测,进而利用漏洞攻击,达到窃取Web应用的敏感数据或者入侵服务器的目的,这大大加剧了应用面临的安全风险。以前一段时间出现的log4j2漏洞为例、这是近十年来最严重的漏洞,由于使用广泛和漏洞利用简单,影响70%以上的企业线上业务系统,官方发布漏洞修复补丁后依旧被多次绕过,几乎所有互联网公司都在通宵加急处理漏洞、修复更新,避免造成黑客攻击事件。除此之外,还有像fastjson、Xstream等相关漏洞,此类漏洞还是会长期与应用共存。

2 传统应用安全防护方案

2.1 WAF

传统应用安全的解决方案,大部分安全从业者都会想到WAF(Web Application Firewall, 应用程序防火墙),WAF是一种专门用于分析HTTP/HTTPS流量的专用防火墙,可以深入到每一次HTTP/HTTPS请求和详情中去检查是否包含敏感字段,然后放行正常行为,拦截恶意行为,就像自来水过滤器一样,把“杂质”从庞大的流量中剔除出去,这样应用程序就只会响应正常的请求,从而达到保护应用程序的目的。

但随着黑客攻击应用程序的威胁不断演变,基于规则对流量进行检测的分析手段容易被绕过,并且需要根据不断演变的漏洞进行规则的持续更新。

2.2 黑白盒扫描

应用安全解决方案除了WAF以外,还可以通过黑盒和白盒扫描的方式。

SAST或称为“白盒测试”已经存在了十多年。它使开发人员可以在软件开发生命周期的早期,在应用程序源代码中找到安全漏洞。

DAST或称为“黑盒测试”可以发现正在运行的应用程序中的安全漏洞和弱点。它通过在应用程序上采用注入技术来识别常见的安全漏洞(例如SQL注入和跨站点脚本)来做到这一点。

但他们都无法解决已经在运行中的应用安全问题,只能通过事前的扫描发现安全漏洞,并且也需要根据不断演变的漏洞进行规则的持续更新。

3 京东云RASP应用运行时自我保护技术实践

21年12月Apache Log4j 开源组件被曝出严重漏洞,被认为是“21年最重要的安全威胁之一”,22年4月Spring 开源应用开发框架也被爆出了一个严重高危漏洞。

针对0day漏洞攻击频发,安全形势日益严峻的现状,京东云自主创新云原生安全RASP应用运行时自我保护技术(英文全称:Runtime Application self-protection运行时应用时自我保护(简称RASP)),通过注入安全疫苗的方式将防护引擎嵌入到应用内部,与应用程序融为一体,使应用程序具备自我防护能力,对0day漏洞、内存马等攻击实现免疫防护。

3.1 工作原理

相比于传统的边界安全产品,RASP不过度依赖检测规则持续更新。从原理上来看,RASP是从应用内部对关键函数操作的数据进行分析,即使原始请求经过加密和混淆,但是它在应用内传播到最终的底层函数时将会以明文方式被RASP截获,并根据应用当前上下文精准识别攻击事件,给予实时阻断,因此相比WAF能减少大量的误报和漏报问题。基于此特性,RASP还能为安全人员和开发人员提供更为详尽的攻击链路,包括攻击原始 Payload、代码调用堆栈等信息,方便他们进行漏洞定位、复现以及修复。

对于一些经常爆发漏洞的开源软件和第三方组件而言,漏洞存在位置和利用方法可能不同,但是在进行利用时,执行到应用代码底层,往往都会聚集到一些“敏感”函数上,如反序列化、数据库执行、命令执行、文件操作、响应返回等相关函数。如果通过RASP技术对这些底层“敏感”函数调用做一定识别阻断,即可免疫大部分0day攻击。因此,从此类实践应用出发,RASP天然可作为漏洞热修复和免疫0day漏洞的应用安全疫苗。

3.2 0day漏洞防护示例

接下来,我们通过 fastjson 反序列化漏洞的攻击场景来演示 RASP应用安全的实际防护效果,fastjson 的反序列化过程主要如下:

当执行上述代码时,在反序列时如果存在恶意的方法则会触发命令执行。但在部署了RASP的应用中,发生上述反序列漏洞时,RASP应用安全会识别到序列化漏洞产生的命令执行行为,从而直接阻断该反序列化动作并发送告警通知,在攻击详情还可以进一步分析攻击源以及漏洞代码位置。

fastjson 反序列化漏洞的利用核心,还是在于寻找可以造成代码执行的类,实际上在 java 庞大的 jdk 类库以及第三方类库中存在着大量的可利用类,传统流量产品如 WAF,往往需要在防御时去穷举这些可能被利用的类,可能经常会出现遗漏,而基于 RASP 的上下文分析能力与基于行为的攻击发现方式,将会捕获掉所有由 fastjson 造成的代码执行、恶意文件上传、敏感文件读写等行为,而无需去针对特定代码实现做精准匹配,所以不会存在被绕过的可能性。

3.3 京东云RASP云原生安全免疫平台架构设计

目前京东云 RASP云原生安全免疫平台具体架构设计如下:

京东云 RASP架构主要包括探针、客户端、云端服务三个模块。

探针模块,主要通过将类转换器添加到Instrumentation,在类加载前后,对字节码进行操作,注入RASP的安全探针。在运行了RASP安全探针的 Java 程序中,字节码的加载会经过自定义的类转换器,过滤出存在攻击风险的关键类,再将检测的逻辑插入到字节码文件中,统一进入JVM中执行,相当于在应用进程中加入 hook 点,当程序运行流程到了 hook 点时,实时采集Web 应用的高风险行为,并通过引擎实时对高风险行为阻断并上报日志。

客户端模块,主要用于对探针模块进行管理,云端服务下发的指令都会通过客户端对探针进行管控,包括模型管理、升级管理、异常监控等。

云端服务模块包括三部分:一是日志处理服务,通过流式分析引擎对上报的日志进行处理二次分析,二是运营管控服务,通过运营管控服务对RASP客户端进行管理,三是数据可视化展示平台,将整体安全态势,事件发现,资产、API等数据可视化展示出来。

3.4 RASP攻防对抗应用场景

从攻防角度看,应用层面积极防御的建立可促进纵深防御体系更加深入,推进业务应用实质性安全落地,京东云RASP主要存在以下应用场景:

1)应用资产管理:借助插桩节点推广覆盖,可梳理微服务应用IP、URL地址、API接口、第三方组件等,并绘制资产关联图谱;

2)运行时入侵检测:基于应用污点分析和上下文分析技术,实时检测应用远程命令执行,恶意反序列化,敏感信息,错误的内容类型,OGNL注入,未授权网络活动,未捕获的异常,未验证的请求,恶意文件操作,DNSLOG探测,恶意动态库加载,内存马,XXE注入等,并实时预警高危组件风险,定位具体应用;

3)攻击威胁疫苗:免疫通用Web应用漏洞及第三方组件安全漏洞,防御0day漏洞,并对EDR难以防御的反序列化、代码执行等攻击进行更加有效的阻断;

4)应用安全基线:符合性应用层基线配置检测,覆盖中间件、单应用、微服务等;

5)敏感数据审查:基于可获取应用内部数据输入、操作、内容的先天技术优势,可针对业务侧关注的个人信息、业务数据等敏感信息进行合规审查,敏感数据未授权访问检测等,必要时进行输出阻断和过滤;

6)应用热补丁:对已上线的重要应用系统,当出现重大漏洞短时间难以修复时,可以动态下发热补丁进行修复,在不中断业务的同时为应用系统提供临时防护,为漏洞修复争取宝贵的时间;

7)东西向流量分析:以微服务架构作为基础,除了对应用间流量和东西向流量描绘,更能深入呈现应用程序内部具体执行操作,为安全运营提供从网络层到应用内部真实执行过程数据,分析攻击链路。

4 京东云RASP云原生安全免疫平台最佳实践案例

4.1 RASP安全运营定位

在日常京东云RASP安全运营中,如何保证业务更稳定,运营更高效,应急更及时,是我们一直思考的问题。比如要如何做到攻击告警可运营,包括拦截日志,事件日志,分级分类区别哪些需要关注,哪些必须后续处理,自动发单,漏洞修复等,做到运营闭环,事件闭环。在部署时,做到一键部署,为保证业务稳定,按半分比进行灰度部署,并且可回滚,通过配置策略告警,策略优化,监控应用各项性能指标,快速响应故障报警等。

4.2 大促防护

京东云RASP已经历了多次双十一、618大促防护。在大促的业务高并发挑战下,RASP基于自研运行时代码植入框架、隔离保障机制、兼容性管理,对业务性能几乎无影响,且无误拦截事件产生,通过了拦截能力和性能压力的双重考验。

4.3 国家级攻防演习对抗效果

在国家级攻防对抗实战中,京东云RASP也发挥了巨大作用。攻击方主要把精力都放到寻找入侵点上,各种0day、Nday漏洞,经常会被用来寻找突破点。而作为防守方,京东的攻击暴露面非常广,防守困难,虽然有WAF、IPS、防火墙、零信任等多款安全产品的纵深防御体系,但黑客突破边界后,仍无有效工具能够自动拦截黑客的入侵行为。当有0day或重大漏洞爆发时,相关厂商可能没有快速解决方案,且有方案的话也需要安全人员进行大规模紧急修复,效率低、容易遗漏资产、业务体验很差。但部署了RASP的应用可在攻防对抗中及时进行策略调整,快速有效地抵御fastjson、shiro、反序列化、log4j等0day、Nday漏洞攻击。

5 总结

RASP产品本身优点明显,通过无感知的注入应用进程,可以更了解应用程序的上下文,减少大量的误报和漏报问题,不依赖规则的更新,可对0day漏洞免疫。在纵深防御体系中,RASP是现阶段保障应用安全强有力的存在。但安全方面没有所谓一揽子工程,不存在一款产品能解决所有问题,攻击技术的发展演进会推动防护能力的创新。京东云RASP也会在持续升级的攻防中不断迭代优化,提高应用本身的“免疫力”。

京东云RASP云原生安全免疫创新实践的更多相关文章

  1. 腾讯云“智能+互联网TechDay”:揭秘智慧出行核心技术与创新实践

    现如今,地面交通出行与大家的生活息息相关.在当前城市道路日益复杂和拥挤的情况下,如何保证交通出行的安全和便捷相信是每个人以及众多专家.科研工作者重点关注的问题. “智慧交通”系统是解决交通发展瓶颈的有 ...

  2. 灵雀云发布云原生制品仓库Harbor企业版(Alauda Registry Service for Harbor)

      灵雀云发布云原生制品仓库Harbor企业版(Alauda Registry Service for Harbor) 近日,国内领先的云原生全栈私有云提供商灵雀云宣布,推出企业版云原生制品仓库Ala ...

  3. 使用“宝塔一键迁移”工具,将typecho博客迁移到京东云cvm云主机

    作者:京东科技 林中 服务器更换.网站搬家,对于很多开发者新手来说不是一件容易的事情,需要迁移网站程序.数据库,修改数据库连接文件等.在云迁移方案中,宝塔是非常简单好用的服务器运维面板,能够极大提升运 ...

  4. 你云我云•兄弟夜谈会 第三季 企业IT架构

    你云我云•兄弟夜谈会 第三季 企业IT架构 你云我云•兄弟夜谈会 第二季 5G 你云我云•兄弟夜谈会 第一季 企业云 0. 概况 时间:2019年2月23日 22:00~23:30 主题:企业IT架构 ...

  5. [转帖]你云我云•兄弟夜谈会 第三季 企业IT架构

    你云我云•兄弟夜谈会 第三季 企业IT架构 https://www.cnblogs.com/sammyliu/p/10425252.html 你云我云•兄弟夜谈会 第三季 企业IT架构 你云我云•兄弟 ...

  6. 亿级日PV的魅族云同步的核心协议与架构实践(转)

    云同步的业务场景 这是魅族云同步的演进,第一张是M8.M9,然后到后面的是MX系统,M9再往后发展,我们的界面可以看到基本上是没有什么变化的,但本质发生了很大的变化,我们经过了一些协议优化,发展到今天 ...

  7. 亿级日PV的魅族云同步的核心协议与架构实践

    声明:本文根据msup和魅族联合举办的<第三期魅族技术开放日-架构设计与优化>录音整理原创首发,转载或节选内容前需获授权. 嘉宾:沈辉煌,魅族高级架构师,魅族云同步负责人.2010年加入魅 ...

  8. 鲲鹏凌云,并行科技Paramon通过华为云鲲鹏云服务兼容性认证

    随着Cloud2.0时代到来,5G技术开始应用普及,超算云服务需求不断升级,业务多样性.数据多样性不断延伸.2019年7月,华为召开鲲鹏计算产业发展峰会,依托在联接领域坚实的基础,华为未来将着力打造智 ...

  9. 阿里云在云栖大会发布SaaS加速器3.0版最新成果,让天下没有难做的SaaS

    2019年杭州·云栖大会顺利落幕,超过6万人次观展,200余位顶尖科学家分享了前沿技术.作为“阿里云不做SaaS”,坚持“被集成”战略的落地体现,阿里云SaaS加速器在云栖大会现场发布了SaaS加速器 ...

  10. 中小企业上云首选,华为云全新云服务器S6性能评测分析

    转: 中小企业上云首选,华为云全新云服务器S6性能评测分析 [小宅按]今天,华为云全新弹性云服务器ECS通用计算型云服务器S6(以下简称为"华为云S6云服务器")正式发布,至顶网云 ...

随机推荐

  1. 云图说|AppCube零代码,开启无码新生活

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 应用魔方 App ...

  2. 不信谣不传谣,亲自动手验证ModelBox推理是否真的“高性能”

    摘要:"高性能推理"是ModelBox宣传的主要特性之一,不信谣不传谣的我决定通过原生API和ModelBox实现相同案例进行对比,看一下ModelBox推理是否真的"高 ...

  3. 聊聊Hive数据血缘——从Atlas没有列级血缘的Bug讲起

    前几天,Datahub提供了最新的字段级别数据血缘功能,很多朋友迫不及待想对比一下Datahub的字段级血缘与Atlas的区别. 这个时候问题来了,在Atlas收集Hive血缘的时候,由于部分版本问题 ...

  4. SpringCloud学习 系列十、服务熔断与降级(3-类级别的服务降级)

    系列导航 SpringCloud学习 系列一. 前言-为什么要学习微服务 SpringCloud学习 系列二. 简介 SpringCloud学习 系列三. 创建一个没有使用springCloud的服务 ...

  5. <vue 路由 6、动态路由-方法传递参数>

    一.query效果 点击query按钮 二.param效果 点击param按钮 注意点 1:重新刷新浏览器后,参数都不在了. 2:url中能看不到传递的参数 3.分别用{{$route. params ...

  6. P2895

    本题用时:01:44:20. 算法:BFS 期间固然去逛了逛淘宝买了两个东西,但毕竟还是太久了.我因为忘记判断是否出界而浪费了好多时间,后来才半天想起来,这便是用了这么长时间的原因. 之后提交代码只有 ...

  7. P2895(未解决)

    这是一道略复杂的常规BFS题,但我想用DFS来解决,结果写出代码却总是主函数异常返回,不知哪里错了,检查半天也没发现,以后再看看吧. Code #include<iostream> #in ...

  8. java垮平台的原理-垃圾回收-day1

    目录 1. 跨平台原理 2. 垃圾回收 3. DOS的几个基本命令 4. PATH环境变量的作用 5 java的安装 6. 第一个java程序 6. 另外两个环境变量CLASS_PATH 与JAVA_ ...

  9. jmap 查看jvm内存大小并进行dump文件内存分析

    本文为博主原创,未经允许不得转载: 1.jmap的使用 Jmap 可以用来查看内存信息,实例个数以及占用内存大小. jmap -histo[:live] 打印每个class的实例数目,内存占用,类全名 ...

  10. springboot启动流程 (3) 自动装配

    在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能. 本文将详细分析该注解的工作流程. EnableAutoConfiguration注解 启用Sprin ...