RASP Runtime Application Self-protection 运行时应用自我保护 介绍及优缺点
RASP 介绍
Runtime Application Self-protection 运行时应用自我保护
[图源:绿盟科技]
概念
Gartner (著名信息技术研究和分析厂商) 在2014年提出了RASP的概念,即将防护引擎嵌入到应用内部,不再依赖外部防护设备。RASP 是一种新型应用安全防护技术。这种技术直接将防护引擎嵌入到应用内部,能够感知应用上下文,与应用程序融为一体,实时监测、阻断攻击,使程序自身拥有自保护的能力。并且应用程序无需在编码时进行任何的修改,只需进行简单的配置即可。
举个例子,当发生SQL注入攻击时,WAF只能看到HTTP请求。而RASP技术不但能看到完整的SQL语句,还可以和当前的HTTP请求进行关联,并结合语义引擎、用户输入识别等能力,实现对SQL注入的检测。
前景
- 2017 - “RASP 市场规模预计将从 2017 年的 2.947 亿美元增长到 2022 年的 12.401 亿美元,复合年增长率 (CAGR) 为 33.3%。”[2]
优点与缺点
结合了相关资料和个人的一些想法
优点
- 低误报。边界设备基于请求特征检测攻击,通常无法得知攻击是否成功。
对于扫描器的踩点⾏为、nday 扫描,⼀般会产⽣⼤量报警。RASP 运⾏在应⽤内部,失败的攻击不
会触发检测逻辑,所以每条攻击都是成功的报警。 - 发现更多攻击与攻击溯源。以SQL注为例,边界设备只能看到请求信息。RASP 不但能够
看到请求信息,还能看到完整的SQL语句,并进⾏关联。如果SQL注⼊让服务器产⽣了语法错误或
者其他异常,RASP引擎也能够识别和处理。另外,黑客一旦绕过一次WAF,并在服务器上遗留了后门,WAF将没什么办法,但是RASP却可以继续防护。亦或者,服务器上发现了后门,传统情况下,我们不能知道黑客曾经做过什么,但是RASP可以检查后门执行过程,追溯黑客行为。对所有攻击ip以及攻击的文件进行聚合,用时间轴进行展示。这样就可以定位到黑客是从上面时候开始进行攻击的,攻击中访问了哪些文件,触发了哪些攻击拦截。然后对所有大致相同的ip进行归类,可以引出来一个专业用于攻击溯源的产品。 - 对抗未知漏洞与0day防御。发⽣攻击时,边界防护设备⽆法掌握应⽤下⼀步的动向。RASP
技术可以识别出异常的程序逻辑,⽐如反序列化漏洞导致的命令执⾏,因此可以对抗未知漏洞。0day防御
对已经hook的关键点进行告警通知并且要拦截攻击行为,然后在公网部署多种不同cms的web蜜罐。如若已经触发到了告警通知,那么已经证明攻击已经成功。且拦截到的漏洞可能为0day。 - 虚拟补丁。RASP 可以防止传入攻击,因此它为工程团队提供了时间来修复漏洞,而无需在危机期间工作压。
- 应用监控与代码审计。 可以更好的进行性能监控、日志采集等工作。对于rasp中运用到的技术,换一种思维方式,可以不进行拦截,而进行记录,对所有记录的日志结合上下文进行代码审计。
- 无需学习和预测。 与WAF类似,RASP通过阻止恶意行为来工作,但无需大量预设规则和调整。RASP 不是构建经过训练的模型或预测行为,而是在运行时监视应用程序以查看这些操作是否实际执行。例如,是否发生了对数据库的请求调用、是否执行了 shell 命令或打开了文件。
- 加强微服务安全。 微服务重塑了现代应用程序的开发方式,也越来越流行。由于微服务的分布式特性,传统的边界防御很难持续监控和保护微服务。RSAP通过允许安全、开发和运营团队协同工作来提高 HTTP 层以外的安全性,深入发现利用漏洞产生的攻击。
缺点
- 兼容性问题,可能编译语言和应用程序的版本不一致都导致RASP产品无法通用。技术栈复杂时,实现的技术难度大,在通用性上也是费时费力,未来可能成为该技术的掣肘。
- 性能问题,需要在应用中注入防护引擎,肯定会影响服务器的性能。百度曾经cpu占用率25%,跟换js引擎后降至5%,字节15%(自认为影响不大)
- 技术问题,如果RASP技术中对底层拦截点不熟悉,可能导致漏掉重要hook点,导致绕过。RASP代码本身如果有漏洞,也难以解决,甚至降低应用的安全性。
- 产品认可问题,客户是否愿意将防护引擎注入到他们自身的应用中。
- 受限上下文,纯粹从技术角度来看,由于 RASP 位于应用程序框架内,因此它可能看起来是比 WAF 等外围防御解决方案更智能的替代方案。然而,实际上,没有任何应用程序是独立的。它们与大量其他服务和组件交互。考虑到每个应用程序模块都可以部署在不同的端点,这进一步限制了 RASP 的可见性和功能。
- 缺少分布式保护,由于RASP仅具有当前应用程序上下文的可见性,因此RASP无法有效解决其他应用程序级分布式拒绝服务。边界防御解决方案可以完全隔离该流量,吸收它,甚至在攻击到达应用程序堆栈之前采取防御措施。
可能的实现方案和部署方式
-
RASP 可以集成为一个框架或模块,与程序的代码、库和系统调用一起运行。该技术也可以实现为虚拟化。 RASP 类似于交互式应用程序安全测试 (IAST),主要区别在于 IAST 专注于识别应用程序中的漏洞,而 RASP 则专注于防止可能利用这些漏洞或其他攻击媒介的网络安全攻击。
-
RASP 解决方案可以以两种不同的方式部署:监控模式或保护模式。在监控模式下,RASP 解决方案会报告应用程序攻击,但不会阻止任何攻击。在保护模式下,RASP 解决方案报告并阻止应用程序攻击
-
一种可能的架构
[图源:灵蜥-应用自保护]
RASP在Java上的两大实现方式
- Java Instrumentation
- Virtualization
在 RASP 的 Java 实现中,有两大类:Instrumentation技术和虚拟化,即基于容器的实现。Instrumentation涉及任何需要更改应用程序内容(例如源代码、部署描述符或二进制文件)的过程。此类更改需要重新编译或重新部署,这都需要在引入或更新 RASP 配置时进行操作干预。而虚拟化或这种基于容器的 RASP 实施的优势在于允许更改 RASP 配置而不影响应用程序生命周期或其操作。
Among Java implementations of RASP, there are two broad categories: those that affect protection by instrumenting code and those that use virtualization, meaning container-based implementations. Instrumentation refers to any process that requires a change to application artifacts such as source code, deployment descriptors, or binaries. Such changes require recompilation or redeployment, both requiring operational intervention when the RASP configuration is introduced or updated. Virtualized or container-based RASP implementations have the advantage of allowing RASP configurations to be altered without affecting the application lifecycle or its operation.
成熟产品
可以从成熟的产品中了解RASP能力范围。
大体功能总结:
- 检测,监控,上传,分析
- 本地即时防御
- 动态安全策略
- 虚拟补丁,远程补丁
- 威胁告警
- 可拓展、插件化 (多语言适配)
除去上述功能,他们都有成熟的后台管理,态势分析引擎。
灵蜥 - 安百科技
OpenRASP - 百度
思考
- 这感觉和传统的杀毒软件的HOOK有些相似,不过一个是对于机器的防护,一个是对于应用自身的防护。
- 如何定义高危行为种类,百度定义了25种行为
- java是通过instrumentation实现的,Nodejs在8之后可以通过Inspector API机制实现,更多的语言实现方案可以参考字节Elkeid开源项目
- 兼容性问题, 不同的语言,不同的语言版本可能都需要重新开发。个人认为作为单独的防护手段,既是优点,又是缺点。因为能精准根据行为进行防护,误报率低,但是要普及到各式各样的应用中,需要大量的人力物力,因此,RASP的大体设计上需要通用化,针对语言的部分要插件化,以提高开发效率。
- 介于上述的特性,作为一种未知漏洞检测程序,或者特定漏洞的热修复程序,应该具有相当的优势。应当与其他安全产品共同协作,作为一个应用安全的加固或者补充。