我教同事如何跟相亲对象解释什么是RASP

本文收录于《阿里新一代安全架构之安全基建专栏》

作者:阿里安全工程师简柏

不久前,我一个同事去相亲,这种事情你们懂的,介绍完年龄工作后,就是谈谈兴趣爱好。我同事的相亲对象有些不一样,在聊完工作后,话题居然没有转向兴趣爱好,而是想详细了解下同事的工作到底是做什么。“要不是她真的表现得很小白,差点以为是猎头。”同事说。

“我是搞安全的。”

“嗯,网络安全,知道,大企业有自己的安全部门。”

嘿,这姑娘懂得不少,同事小伙很少碰见能交流工作的。于是,他开始自信地介绍自己是做“RASP”的。

“RASP是什么?”姑娘有点懵圈了。

“这样说吧,RASP就是今天你可能不小心摔了一跤,摔伤了腿,但我还要拉着你工作,然后回家你该拖地拖地,该洗碗洗碗,该干的活一样不少,仿佛跟没摔伤一样,我们就是帮应用做这类安全产品的,你懂吧……”

同事话还没说完,姑娘白了他一眼就跑了……

我教育了一顿同事,你怎么能这么说呢,要是我,我就从开源软件有很多漏洞开始说起。不久前,媒体报道开源软件Nagios软件中包含13个漏洞,极有可能被恶意利用,攻击者可以靠此劫持基础设施。

最近,国内安全厂商也发布相关软件供应链安全分析报告,称“国内企业软件项目100%使用了开源软件,超8成软件项目存在已知高危开源软件漏洞,平均每个软件项目存在66个已知开源软件漏洞。”

安全行业数据显示:每天至少会有数千个开源软件漏洞被公开,应用研发人员需要频繁升级版本才能降低应用被漏洞利用的风险。每当业界出现了新的安全漏洞后, 大家第一反应就是尽快进行漏洞修复,而披露的漏洞愈发不止, 每一次修复对技术团队和安全同学来说都苦不堪言。事实上,技术团队对于这套不断出现问题,再响应问题的的安全处置流程感到非常被动, 非常希望能有一个更好的方案, “一劳永逸”地解决问题。

运行时应用自防护产品RASP具备在无需应用变更(修改代码、升级组件版本、发布...)的情况下,即时止血新披露出的安全漏洞。它像疫苗一样注入到应用程序中,根据应用运行时上下文识别攻击,具备对于未知攻击(0day、-1day)的防护能力,使应用自身免疫攻击行为。可以大幅降低研发团队对安全的成本投入。

这就是典型的工具选得好,漏洞可能就追不上我。

认识一下RASP

RASP,全称 Runtime Application Self-Protection,是一种在运行时检测应用程序攻击并进行自我保护的安全产品。Gartner 在2014年应⽤安全报告里将 RASP列为应用安全领域的关键趋势。

RSAP将自身注⼊到应⽤程序中,与应用程序融为一体。通过Hook少量关键函数,实时观测程序运行期间的内部情况。当应用出现可疑行为时,RASP根据当前上下文环境精准识别攻击事件,并给予实时阻断。相对于常见的基于流量规则的WAF产品,得益于身处程序内部,RASP可以拿到完整的、无花式编码的攻击数据, 这带来了更低的误报率及漏报率。在产出的报警上, RASP可以清晰的还原出代码行级别的攻击路径。同时对于东西向流量的覆盖, RASP有力的补充了WAF边界防护的不足。

不过,RASP的理念再好,如果不能和企业自身情况结合,那么也是“不好用”的。因此,阿里安全开发了属于自己的RASP产品: JAM,历经双11、HW等超大流量超大规模的实战验证,JAM在阿里经济体内部得到了非常广泛的部署,月度分析应用行为数据超过3000亿次。目前已支持Java、NodeJs应用,同时其他语言应用正在扩展中。

接下来,我将要向大家分享的是阿里安全从甲方企业的角度出发,构建企业级RASP的技术思路,希望可以给其他有相关需求的甲方企业带来一些建设思路,对安全公司而言,也会为其打造更符合用户需求的RASP产品提供借鉴。 

阿里安全的RASP建设之路

1. JAM的简单引荐

在2015年底, 阿里安全就已完成了JAM的初版Demo,2016年产品化完成落地日常全量部署。历经多次技术方案迭代,当前的架构如下:

 xx.png

JAM的整体架构包括3个部分: 客户端引擎、云端日志&分析、控制面板。

核心引擎包括Agent、Daemon两个部分, 基于字节码织入技术, 运行时Hook安全关注的敏感函数(如命令执行、DNS访问...)。内置高性能规则引擎, 应用内每一次的敏感行为都将经过上千条专家规则的检测, 对rt的影响控制在0.5毫秒内。

云端分析引擎负责处理客户端引擎上报的海量日志, 主要为拦截日志和风险行为日志。拦截日志为准确识别的攻击日志,用于攻击感知, 亦可分析攻击手法甚至使用的0day。风险行为日志通过机器学习算法做异常检测分析, 避免漏网之鱼,同时刻画应用行为基线。

控制面板支撑运营部署、策略下发、设备管理、数据大盘等场景。

2. 核心优势带来的拦路虎

身处应用内部给RASP带来了众多核心优势。JAM通过JavaAgent技术将自身注入业务进程实现安全防护, 这样的技术栈决定了它存在高度的稳定性风险。稍有不慎即可影响到应用正常运行, 带来业务风险。

其一是对应用的资源占用、性能影响风险, JAM采用分体式架构, 将非必要进入业务进程的逻辑单独抽取成出独立Daemon进程,最小化对业务的侵入及资源占用, 提高可用性及稳定性。Agent身处应用内部,与应用共用计算资源,高性能成为一个基础的技术要求。通过高性能字节码编织技术ASM、上下文环境识别过滤大量已知安全事件、细分场景最小化控制对计算资源的占用、规避正则自实现模式匹配来降低其对应用进程的性能影响。当前部署JAM前后性能差异为: cpu + ~1%、mem +<100m、rt + < 0.5ms, 处于业界领先水平。

其二是与部署应用技术栈的兼容性风险,阿里内部有数万个在线应用, 由于业务形态的差异存在着各式各样的框架、插件、JDK,每一种技术组件还拥有众多版本。在这个规模下期望通过测试覆盖100%的情况是不切实际的, 但业务的可用性又必须保障万无一失。为此我们在提高测试覆盖的同时, 于产品能力上构建一系列保障措施: 应用评估分级、完善的部署灰度流程、快速降级机制等,具体如产品上限制必须在应用预发环境灰度足够长的时间后才可部署线上环境。

3. 应用自身的攻击免疫系统

在解决了拦路虎之后, JAM得以充分发挥自身力量, 为构建企业纵深防御添砖加瓦。JAM于应用内部构建三道安全防线: 已知漏洞(行为)黑名单防护、异常检测灰名单防护、应用行为白名单防护,为应用量身打造攻击免疫系统。

应用运行期间的每一次敏感行为都将经过数名安全专家持续沉淀出的上千条专家规则的检测, 一旦命中到恶意特征, 即会在触发调用时被实时拦截。

除已知漏洞的防护外, JAM还会对可疑的风险行为保持关注, 进行进一步评估, 如应用突然访问了一个罕见的域名。JAM每日收集到百亿级别应用行为日志(部署规模较大), 通过大数据平台结合机器学习算法训练异常检测模型,识别潜在风险,并反哺到专家规则,形成良性循环。

JAM收集到的应用行为日志除了做异常检测之外,同时也将按应用粒度归类, 并通过归一化算法刻画出应用行为画像。即给定一个应用, 可知其正常运行会执行哪些命令,访问哪些文件,哪些网络, 甚至包括Http Header粒度的分析, 如应用历史上响应过302 Location清单。在刻画出应用画像后, 便已抽象出应用的逻辑沙箱。配合JAM的实时函数检测拦截能力, 形成不可复制的高水位防护能力: 应用行为白名单防护。 

4. 构建RASP+

在捕获到攻击事件后, 溯源是一个重要的事情。 

它是怎么进来的? 是通过哪个漏洞利用进来的?

它是从哪里进来的? 从南北向哪个Http接口进来的?从东西向哪个RPC进来的?请求报文是什么?

JAM通过Hook应用各个访问入口出口(HTTP、RPC、MQ、DB...), 追踪事件轨迹。当攻击事件被捕获时, 事件内容将自动填充关联的入口Http、RPC报文、执行攻击时的payload、堆栈等上下文信息, 联动阿里其他安全技术产品, 提供到安全专家应用内、应用间全链路的攻击可视化能力,为溯源提供有力支持。

在保护应用的同时, RASP自身的安全也很重要。RASP的安全策略仍然一定程度上于依赖信息不对称, 如何保障策略在传输过程、运行时不被恶意窃取分析是一个重要问题。JAM基于阿里集团自研“白盒密码”技术认证RASP部署环境、全链路加密策略内容,保障安全策略可靠下发。

在安全事件频发的今天, 不断有新的漏洞爆发出来。RASP可以通过轻松的更新一条拦截策略即做到紧急止血,避免技术同学短时间内进行紧急升级, 将一次新披露漏洞的应急时间从数天缩短到数分钟, 在保障安全风险的同时大幅提高企业人效。即时面对0day攻击, 也能够化被动成主动,做到从容不迫。

传统的网络安全架构基于网络边界防护,企业在构建防护体系时, 通过在边界上部署防火墙、WAF等安全产品进行重重防护,内网的安全往往相形见绌。RASP在不仅服务于南北向流量风险,亦可以防护东西向流量,提高内网安全水位。

所以,你们听懂了吗?

你们觉得这样介绍,同事的相亲对象还会跑路吗?