运行时应用自我保护(RASP):应用安全的自我修养
应用程序已经成为网络黑客想要渗透到企业内部的绝佳目标。因为他们知道如果能发现并利用应用程序的漏洞,他们就有超过三分之一的机会成功入侵。更重要的是,发现应用程序漏洞的可能性也很大。Contrast Security 调查显示,90%的应用程序在开发和质量保证阶段没有进行漏洞测试,甚至相当一部分应用程序在生产过程中没有受到保护。
由于企业中运行着许多有漏洞的应用程序,安全团队面临的挑战是如何保护这些应用程序免受攻击。其中一种方法是让应用程序通过实时识别和阻止攻击来保护自己,这就是被称为运行时应用自我保护(Runtime Application Self-Protection)的技术。
什么是 RASP ?
运行时应用自我保护(RASP)这一概念由 Gartner 于 2012 年提出,这是一项新兴的安全技术,让企业得以阻止黑客入侵企业应用和数据。RASP 技术通常内置在一个应用程序或应用程序运行时环境中,能够控制应用程序的执行,并检测漏洞以防止实时攻击。
当应用程序开始运行时,RASP 可以通过分析应用程序的行为和该行为的上下文,保护其不受恶意输入或行为的影响。RASP 通过使应用程序持续检测自身的行为,可以立即识别和缓解攻击,且无需人工干预。
无论 RASP 驻留在 server 的什么地方,它都将安全性整合到运行中的应用程序中。它会拦截从应用程序到系统的所有调用,确保它们是安全的,并直接在应用程序内验证数据请求。Web 和非 Web 应用都可以受到 RASP 的保护。该技术不影响应用程序的设计,因为 RASP 的检测和保护功能可以在应用程序所运行的 server 上运行。
为什么 RASP 如此重要?
入侵防护系统(IPS)和网络应用防火墙(WAF)等技术通常用于运行时的应用程序保护,但它们在检查网络流量和内容时在线工作。当它们分析进出应用程序的流量和用户会话时,它们无法看到流量和数据在应用内部是如何处理的。由于它们的保护措施往往缺乏会话终止所需的准确性,因此会消耗大量的安全团队带宽,通常只用于告警和日志收集。现在需要的是一种新型的应用保护技术——RASP,它可以驻留在要保护的应用的运行时环境中。
应用所面临的安全挑战
在保护 Web 应用和 API 时,通常会面临以下 4 种常见的安全挑战:
1、 真实的攻击难以识别。每个应用程序有其自己独特的漏洞,并且只能被特殊的攻击所利用。对于某个应用来说完全无害的 HTTP 请求,对于另一个应用而言可能会造成毁灭性打击。同时,“在线(on the wire)”的数据可能与它在应用中所显示的不同(被称为“阻抗不匹配”问题)。
2、 现代应用程序(特别是 API)使用复杂的格式,如 JSON、XML、序列化对象和自定义二进制格式。这些请求使用除了 HTTP 之外的各种协议,包括 WebSocket,它是由浏览器中的 JavaScript、富客户端、移动应用和许多其他源产生的。
3、 传统的技术防御没有效果。WAF 通过在 HTTP 流量到达应用服务器之前对其进行分析,完全独立于应用而运作。尽管绝大部分的大型组织都有 WAF,但其中许多企业并没有专业的团队对其进行必要的调整和维护,使其只处于“日志模式”。
4、 软件正在快速发展,容器、IaaS、PaaS、虚拟机和弹性环境都在经历爆炸性增长。这些技术使得应用程序和 API 可以快速部署,但同时会将代码暴露给新的漏洞。DevOps 也迅速加快了整合、部署和交付的速度,因此确保在快速发展阶段的软件安全的过程变得更加复杂。
幸运的是,运行时应用自我保护(RASP)可以解决其中的许多问题
RASP 的工作原理
当 APP 中发生安全事件时,RASP 将会控制该应用并解决问题。在诊断模式中,RASP 只是发布有问题的告警。在保护模式下,它会试图阻止问题指令。例如,它可以阻止对数据库执行看起来似乎时 SQL 注入攻击的指令。
RASP 可以采取的其他行动包括终止用户的会话、停止应用程序的执行,或向用户或安全人员发出告警。
开发人员可以通过几种方式实现 RASP。他们可以通过包含在应用程序源代码中的函数调用来访问该技术,或者他们可以将一个完整的应用程序放在一个 wrapper 中,从而只需要按下一个按钮就可以保护应用程序。第一种方法更为精确,因为开发人员可以决定他们想要保护 APP 的哪个部分,例如登录、数据库查询和管理功能。
无论使用哪种方法,最终的结果都是将 Web 应用防火墙与应用程序的运行时环境绑定在一起。这种与应用程序的密切联系意味着 RASP 可以更精细地调整以满足应用程序的安全需求。
RASP 的主要优势
RASP 之所以独一无二是因为它在软件内部工作,而不是作为一个网络设备运行。这使得 RASP 可以利用所有从运行中的应用和 API 中获取的上下文信息,包括代码本身、框架配置、应用程序 server 配置、代码库和框架、运行时数据流、运行时控制流、后端连接等。更多的上下文信息意味着更广泛的保护范围和更好的精确性。
RASP 成本更低
RASP 解决方案可以快速高效地阻止攻击直到底层漏洞得到解决
与 WAF 相比,它们的部署成本和运维更低
它们部署在已有的 server 上,避免了额外的支出
RASP 技术会观察应用程序实际执行的操作,因此不需要相同类型的调整、模型构建、验证或人力资源
RASP 精确性意味着应用程序受到更好的保护
保护应用程序免受攻击的影响通常意味着试图在网络层面上阻止它们。但当涉及到应用行为的理解时,传统方法本质上是不准确的,因为它们处于应用之外。同时,基于网络的应用安全产品会生成很多假阳性并且需要不断地调整。在过去的 25 年里,网络保护已经越来越接近应用——从防火墙到入侵防御系统,再到 WAF。有了 RASP,安全可以直接进入应用内部。
RASP 插桩提供了传统方法不可能达到的精确水平
它使应用安全能够真正地处于应用中
更高的准确性使企业能够自信地用更少的资源保护更多的数据和应用
RASP 可以在云和 DevOps 中使用
RASP 能在敏捷开发、云应用和 web 服务中良好运行
与需要不断调整的 WAF 解决方案不同,它通过提供无需返工的保护加速敏捷开发
RASP 应用更快且更准确
无论是在云端还是本地,RASP 都能随着应用程序的扩大或缩小而无缝移动
支持 RASP 的应用程序不知道攻击是通过 API 还是用户界面到达的
RASP 提供前所未有的监控
RASP 通过插桩整个应用程序来简化应用安全监控
当应用程序的相关部分被访问或其他条件被满足时(如登录、交易、权限更改、数据操作等),可以创建 RASP 策略来生成日志事件
策略也可以根据需要添加和删除
有了 RASP,所有这些应用记录都可以在不修改应用源代码或重新部署的情况下实现。
RASP 擅长提供应用层攻击的可见性
RASP 持续提供关于谁攻击你的信息以及它们所使用的技术,并告诉你哪些应用程序或数据资产被盯上了。
除了完整的 HTTP 请求细节外,RASP 还提供应用细节,包括与漏洞相关的代码行具体位置、确切的后端连接细节(如 SQL 查询)、交易信息和当前登录的用户。
使用 RASP 可以为软件开发团队提供即时的可见性,帮助确定工作的优先级,并对安全防御采取行动。
由于 RASP 不是一个硬件盒子,它可以很容易地部署在所有环境中,并迅速阻止黑客攻击,最终应用程序可以实时防御攻击。
自我保护的应用程序将成为现实
当攻击者突破外围防御之后,RASP 仍可以保护系统。它能洞察应用逻辑、配置和数据事件流,这意味着 RASP 可以高度准确地挫败攻击。它可以区分实际的攻击和合法的信息请求,这减少了误报,使网络防御者可以把更多的时间用于解决真正的问题,而不是往死胡同里钻。
此外,其自我保护应用程序数据的能力意味着数据从诞生的那一刻起到销毁都受到保护。这对需要满足合规性要求的企业特别有用,因为自我保护的数据对网络黑客来说是无解的。甚至在某些情况下,如果被盗数据使其在被盗时无法阅读,监管机构就不要求企业报告该次数据泄露。
与 WAF 一样,RASP 也不会修复应用程序的源代码,但它确实与应用程序的底层代码库集成,并在源代码级别保护应用程序易受攻击的区域。
由于 RASP 仍处于初期阶段,其不足之处会在之后的发展中慢慢被克服,并有希望成为应用安全的未来。正如 Veracode 的首席创新官 Joseph Feiman 在担任 Gartner 的研究副总裁时指出的那样:“现代安全无法测试和保护所有应用。因此,应用必须能够进行自我安全保护——自我测试、自我诊断和自我保护。这应该是 CISO 的首要任务”。
参考链接:
Maverick Research: Stop Protecting Your Apps; It's Time for Apps to Protect Themselves:
https://www.gartner.com/en/documents/2856020
版权声明: 本文为 InfoQ 作者【SEAL软件供应链安全】的原创文章。
原文链接:【http://xie.infoq.cn/article/ba298090299cd71030e39670d】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论