定义RASP

运行时应用自我保护(RASP)是一种嵌入到应用程序或应用程序运行时环境的安全技术,在应用层检查请求,实时检测攻击和滥用。
RASP产品通常包含以下功能:

  • 通常在应用程序上下文中进行解包和检查应用程序请求
  • 产品可以在多个执行点分析完整的请求,执行监控和阻止,有时甚至更改请求以去除恶意内容
  • 完整的功能可通过RESTful API访问
  • 防止所有类型的应用程序攻击,并确定攻击是否会成功
  • 查明漏洞所在的模块,还有特定的代码行
  • 仪表盘功能和使用情况报告

使用案例

RASP的主要功能是保护web应用程序免受已知和新出现的威胁。在一些情况下,RASP部署在应用层,在漏洞被利用之前阻止攻击,但在许多情况下,RASP工具会处理请求,直到检测到攻击,再阻止这些违规的操作。

这些基本都是IDS和WAF的经典用力了,那么为什么还需要新的方案呢,答案不在于RASP做什么,而在于它在应用程序的上下文中是如何工作的,在这里它可以确定攻击是否相关,从而使它在广泛的场景中更加有效。下面深入了解下客户的需求。

市场驱动

RASP是一种相对较新的技术,因此当前的市场驱动力主要集中在解决两个不同的“购买中心”的安全需求上,安全团队通常在寻找没有繁重管理需求的可靠的WAF替代品,而开发团队则需要一种安全技术来护现有开发流程框架内的应用程序。

安全团队的需求是有争议的,Web应用程序防火墙通常使用两种检测方法;黑名单和白名单。黑名单是检测—通常是阻止——在传入的应用程序请求中匹配攻击特征库。比如SQL注入。黑名单有助于筛选出针对应用程序的许多基本攻击,但新的攻击变体不断出现,攻击者不断寻找绕过它们的方法,黑名单无法保持最新,比如SQL注入的许多变体。但是白名单是WAF提供真正价值的地方。白名单是通过观察和学习可接受的应用程序行为,记录一段时间内的合法行为,阻止任何不符合已批准行为列表的请求。这种方法提供了比黑名单更大的优势:该列表是特定于被监视的应用程序的,这使得枚举好的功能变得可行——而不是试图对每一个可能的恶意请求进行分类——因此更容易(也更快)地发现不良行为。

不幸的是开发人员抱怨是WAF不可能完成白名单的创建,始终处于学习模式,跟不上现代软件开发的步伐,因此被放到黑名单上执行。另外,WAF没有完全启用api,而且设置需要安全专职人员来管理和调整规则,在部署到IaaS公有云时,缺乏API支持是个失败。缺乏对云本地结构的支持,如应用程序自动伸缩、临时应用程序栈、模板以及对云的脚本/部署支持。随着应用程序团队变得更加敏捷,随着公司扩展他们的云足迹,传统的WAF变得不那么有用了。

WAF可以提供真正的价值——特别是商业WAF“安全即服务”产品,关注于黑名单和一些额外的保护,如DDoS缓解,通常以代理服务的形式在云中运行,在请求传递到应用程序或RASP解决方案之前过滤“云中”的请求。但是这个WAF部署模型被限制在“Half-a-WAF”状态——缺少白名单功能。传统的WAF继续为非敏捷的本地应用程序工作,在这些应用程序中,WAF有时间构建和利用白名单。因此,现有的WAF在很大程度上没有被“撕裂和替换”,但在云计算或更敏捷的开发团队中,它在很大程度上没有得到使用。

安全团队正在寻找一种有效且更容易管理的应用程序安全工具来替代WAF。它们需要覆盖应用程序缺陷和技术债务,因为不是每个缺陷都能在代码中快速修复。

开发人员倾向于询问哪些解决方案可以完全嵌入到现有的应用程序构建和认证过程中。为了与开发流水线集成,安全工具需要付出更多的努力,保护免受攻击。解决方案需要像现代应用程序开发一样敏捷,兼容自动化能力。它需要随应用程序扩展,“理解”应用程序,并根据应用程序运行时定制保护。安全工具不应该要求开发人员是安全专家。开发团队“左移”,以便在他们的过程中更早地获得安全度量和工具,他们需要在预生产和生产环境中都能工作的工具。

功能需求

市场的驱动改变了产品功能的需求

有效性

简单来说现有的工具工作得不好,产生了太多的错误信息而无法使用,或者需要太多的维护,浪费时间和精力。更RASP通常提供完整的功能,而不需要在运行态学习应用程序的功能,通过在上下文中运行,提供了更广泛的应用程序威胁范围,并且可以在阻止模式下运行。

应用的知晓

随着攻击者不断升级,从网络到服务器再到应用程序,针对应用程序框架和语言的攻击越来越多。RASP的区别在于安全策略中包含应用程序上下文的能力。许多WAF提供“积极的”安全功能(应用请求白名单),但是RASP嵌入到应用程序中提供额外的应用程序访问和仪表盘。此外,一些RASP平台通过识别可疑的模块或代码行来帮助开发人员。对于许多对于开发团队来说,更好的检测能力并没有RASP精确定位脆弱代码那么重要。

API支持和自动化

由于云服务和DevOps带来的应用程序交付中断,安全产品对编程接口的需求迅速扩大。API是我们编排构建、测试和部署应用程序的方式。像RASP这样的安全产品通过API提供了完整的平台功能——有时作为构建服务器插件,甚至作为云服务——使软件工程师能够在他们的本地使用,它们还提供在应用程序堆栈中工作的代理、容器或插件。

覆盖率和语言支持

这仍然是RASP最大的问题,它在最初几年阻碍了它的采用。RASP平台为不同的语言或平台提供安全性,需要定制规则和逻辑来检测攻击。大多数都对Java和.net等核心平台提供了全面支持;除此之外,对Python、PHP和Node.js、Ruby的支持仍然参差不齐。另一部分是环境的复杂性—不仅是服务器端,还有客户端。在过去的几年里,框架、客户端实用程序、面向web的API的不断发展,以及数据编码的不断变化。RASP需要解析用户提供的输入,处理运行JavaScript和Angular.js、微服务架构,可能还有多个版本的API的不同客户端,所有这些都在同一时间发生。应用程序环境的多样性使得RASP供应商很难提供全面的支持。

部署前验证

在生产周期中越早发现错误,就越容易和便宜修复它们。因此,通常测试,特别是安全测试,在开发过程的早期工作得更好。越来越多的应用程序安全测试是在部署前执行的,而不是在应用程序部署后依赖漏洞扫描程序和渗透测试程序。当然,这在其他以应用程序为中心的工具中是可能的,但是RASP更容易构建到自动化测试中,通常可以确定应用程序的哪些部分存在缺陷,并且通常在红队练习和预生产“蓝/绿”部署场景中使用。

业务需求

与工单系统集成

几乎每个安全平台现在都必须与内部系统集成,以便在发现、调查、修复、测试和重新部署时跟踪安全问题。工单系统为主要的集成工作,如控制任务的分配等,所以这种类型的集成是必不可少的。可能还有与Syslog、SIEM和Splunk集成的请求—大多数供应商都提供了这些特性。

遵从性

WAF被广泛用于PCI-DSS—本质上是用于处理信用卡数据的系统的合同强制安全——因为它被特别列为面向web应用程序的适当控制。随着WAF的流行减弱,而PCI需求仍然存在,RASP被用作补偿控制。事实上,一些RASP供应商已经与主要的QSA组织进行了第三方验证被审查为适用于应用程序安全性的控件。

虚拟补丁

大多数公司都有大量的“技术债务”,因为应用程序及其平台包含的安全漏洞比开发团队能够在短时间内修复的要多。使用基本的安全补丁保持开发、QA和生产版本的底层软件的更新是一项挑战,更不用说修复所有易受攻击的代码了。RASP帮助检测哪些版本的应用程序库是过时的,如果脆弱子模块被用来了解是否有必要打补丁,也通过提供“虚拟补丁”阻止对残余漏洞的攻击。大多数开发和运营团队不会跟踪永无休止的安全补丁流,因此拥有自动化发现和报告的工具是很有帮助的。这种功能很少出现在公司的前五大需求中,但在RFPs(征求建议)中仍然很常见。

DevOps和度量

度量标准对于确定是否存在问题、应该将资源投向何处以及安全投资是否实际有效非常关键。RASP可以对应用程序功能和开源使用进行分类,了解每个API的参数的正确数量和类型,然后在运行的应用程序的代码中应用策略。但它也可以理解运行时代码路径,服务器交互,框架的细微差别,库用法和自定义代码。这有助于安全团队可视化代码中的安全问题,并定制他们希望的响应方式。在预生产中部署它,可以在生产部署之前发现缺陷。最后,一些RASP平台还提供了IAST(交互式应用程序安全测试),或在开发人员的桌面上进行部署,以便在代码签入之前运行,在开发过程的早期发现问题。

技术概览

如何工作

在过去的几年里,RASP市场已经有了一些基本的方法和变化-检测能力、可靠性和性能有了一些增强。理解技术对于理解不同产品的优势和弱点比较重要。

  • 原生API回调:在这种部署模型中,系统在应用程序堆栈中的关键节点插入传感器或回调,以观察应用程序代码、库、框架和底层操作系统之间的应用程序行为。这种方法使用原生应用程序分析器/插桩API来监视运行时应用程序行为。当传感器被命中时,RASP会得到一个回调,并根据上下文相关的策略评估请求。例如,检查数据库查询是否有SQL注入(SQLi)。但是它们也提供了请求反序列化“沙箱”来检测恶意的有效负载,以及我所说的“检查点”:一个到达检查点A但绕过检查点B的请求可以被认为是具有高度可信度的敌意的。这些方法提供了比WAF先进得多的应用程序监视,可以细致地检测攻击和滥用。但是,完整的可视化需要监视所有相关的接口,这会带来性能和可伸缩性方面的成本。客户需要在全面覆盖和性能之间取得平衡。
    -** Servlet过滤器和插件**:一些RASP平台为web服务器插件或Java Servlet,通常安装在Apache Tomcat、JBoss或Microsoft . net中以处理请求。插件在执行功能(如支付事务)之前对请求进行过滤,在收到请求时对每个请求应用检测规则。与已知攻击签名匹配的请求被阻止。这实际上与WAF黑名单具有相同的功能。这是在没有深入应用程序的情况下,可以有效地阻止恶意请求。

  • 库或JVM替换:一些RASP产品是通过替换标准应用程序库和或JAR文件来安装的,而且至少有一家供应商提供了完整的替换Java虚拟机。这个方法基本上把对底层平台的调用劫持到一个自定义应用程序中。RASP平台被动地观察应用程序对支持功能的调用,在请求被拦截时应用规则。例如,在JVM替换的情况下,RASP可以在类加载到内存时修改它们,增加或修补应用程序及其堆栈。与插桩集成一样,这种方法提供了对应用程序行为和用户请求的完整可见性。

  • 静态混合:像许多防火墙一样,几个RASP平台可以部署为反向代理。在一种情况下,一种新的变体耦合代理、一个仪表模块和一个功能有限的静态分析扫描器。本质上,它生成一个代码属性图(类似于静态分析工具)来为所有应用程序和 开放源码功能构建自定义安全控件。这种方法需要完全集成到应用程序构建管道中,以扫描所有源代码。然后,在部署应用程序时,它将扫描结果绑定到RASP引擎中,有效地提供一个白名单特定于应用程序的功能。安全控制是根据应用程序定制的,具有出色的代码覆盖率——代价是完全的构建集成、需要定期重新构建CPG配置文件,以及增加了一些安全性检查的延迟。

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7wQRsWF-1599276061120)(C:\Users\yong\Pictures\A9R21DC.jpg)]

检测

  • RASP攻击检测是复杂的,根据请求类型使用不同技术。大多数产品同时检查请求及其参数,以多种方式检查每个组件。RASP在检测应用程序攻击方面比它的前辈要有效得多。与使用基于签名的检测的其他技术不同,RASP监视应用程序行为和外部引用,映射应用程序函数和第三方代码的使用,映射执行序列,反序列化有效负载,并相应地应用策略。类似沙箱请求来查看它们如何发挥作用,使用语义分析来检测滥用,输入跟踪来检测人为引入的代码,以及行为分析来配合签名和IP地址信誉等传统工具。这不仅可以实现更准确的检测,还可以通过优化检查的类型来提高性能。 根据请求上下文和代码执行路径执行。在使用时执行规则,可以更容易地理解正确的用法和检测误用。

  • 大多RASP平台也采用结构分析,能够了解正在使用的框架及框架的常见利用。RASP可以访问整个应用程序栈,可以检测第三方代码库的变化—相当于对开源库的漏洞扫描,来检测过期代码的使用。RASP还可以快速检查传入请求和检测注入攻击。有几种方法—一种是使用一种形式的记号化(用记号替换参数)来验证请求是否匹配其预期的结构。例如,标记子句和SQL查询中的参数,可以快速检测带有更多标记的如 FROM’或 WHERE’子句表示查询已被更改。

阻塞

  • 阻塞是新一代RASP平台擅长的一个领域。WAF通常根据传入的HTTP请求判断是否阻塞,它依赖签名来检测已知的恶意模式或已知的良好模式,并基于这些特征库进行阻塞。这种类型的检查既缺乏应用程序上下文(特定请求将涉及所有function的可见性),也缺乏让恶意请求“发挥”到一定程度的以明确其确定的意图。新一代RASP工具同时提供了这两种功能,以及多种检测技术,如沙箱检测、语义分析、输入跟踪和行为分析等。当您将多种检测技术(每种检测技术都适用于特定类型的攻击)与多个执行点结合在一起时,您在准确性上比传统的WAF有了巨大的飞跃。可以肯定地说,RASP不仅仅是应用程序中的WAF,而是一种完全改进的阻止应用程序攻击的方法。从采访客户了解到,RASP客户在完全阻塞模式下运行的比例要高得多,而且这一跃升在过去两年中还在加速。

性能和可伸缩性

  • RASP嵌入到应用程序或其堆栈中,因此随应用程序扩展。例如,如果应用程序在多个服务器实例上向外扩展副本,RASP将随之扩展。如果部署在虚拟服务器或云服务器上,RASP将受益于与应用程序一起增加的CPU和内存资源。
  • RASP执行规则,它们的操作方式和检查次数,可能会影响延迟和性能。越来越深入的请求分析增强了安全性,但增加了延迟。如果没有在本地缓存第三方威胁情报,或者使用了外部查找,则延迟会增加。如果传感器或集成点只收集事件并将其传递到外部服务器进行分析,添加的服务可能会增加延迟。与所有安全产品一样,不要相信供应商编号——在您的环境中,使用具有代表性的流量运行您自己的测试。幸运的是,供应商在过去几年里已经在性能方面投入了大量的工程资源,大大减少了延迟问题。

仪表

  • 安全团队通常希望对应用程序安全性具有可见性,并且他们在构建管道、预生产和生产中使用扫描来开发度量并获得应用程序安全性状况的可见性越来越普遍。这表明它们在哪些地方需要更多资源,并有助于衡量已部署资源的有效性。
  • RASP的一个巨大优势是它可以在运行时持续地测量应用程序的使用率和缺陷率。此功能的一部分来自于其对应用程序功能目录化、理解正确的参数数量和类型以及在运行的应用程序代码中应用策略的能力。但是RASP也可以理解运行时代码路径、服务器交互、开源库、框架的细微差别、库的使用和自定义代码,这在裁剪检测规则时提供了优势,比如启用特定策略来检测针对Spring框架的攻击。RASP可以配置为阻止针对旧版本库的特定攻击,提供一种虚拟补丁。这还提供了非安全性方面的好处,帮助质量保证和操作团队了解代码是如何使用的,提供了一个运行时映射,可以识别性能瓶颈和未使用的代码。

版本库的特定攻击,提供一种虚拟补丁。这还提供了非安全性方面的好处,帮助质量保证和操作团队了解代码是如何使用的,提供了一个运行时映射,可以识别性能瓶颈和未使用的代码。

原文链接:https://cdn.securosis.com/assets/library/main/Understanding_RASP_2019_Final2.pdf

理解和选择运行时安全自保护-RASP相关推荐

  1. 【Java 19】反射 - 反射机制概述、获取Class实例、类的加载与ClassLoader的理解、创建运行时类的对象、获取运行时类的完整结构、调用运行时类的指定结构、动态代理

    反射机制概述.获取Class实例.类的加载与ClassLoader的理解.创建运行时类的对象.获取运行时类的完整结构.调用运行时类的指定结构.动态代理 反射 1 Java反射机制概述 1.1 Java ...

  2. 运行时应用自我保护(RASP):应用安全的自我修养

    应用程序已经成为网络黑客想要渗透到企业内部的绝佳目标.因为他们知道如果能发现并利用应用程序的漏洞,他们就有超过三分之一的机会成功入侵.更重要的是,发现应用程序漏洞的可能性也很大.Contrast Se ...

  3. c++指定在某一线程运行_深入理解Java虚拟机-运行时数据区

    在Java虚拟机的概念中,运行时数据区又被称为Java内存区域.主要由线程私有的程序计数器.虚拟机栈和本地方法栈以及线程共享的堆和方法区组成. 程序计数器 程序计数器在Java内存中占据的空间比较小, ...

  4. 深入理解Java虚拟机——运行时栈帧结构(局部变量表)

    目录 一.局部变量表的概述 二.reference类型的概述 三.renturnAddress类型的概述 四.局部变量表中Slot槽复用对垃圾回收的影响 4.1.局部变量表中Slot槽复用对垃圾回收的 ...

  5. 【深入理解JVM】运行时数据区域:java虚拟机栈

    虚拟机栈是线程私有,生命周期与线程相同. java虚拟机栈描述的是Java方法执行的线程内存模型: 每个方法在执行的时候,Java虚拟机栈都会同步创建一个栈帧(stack frame),用于 储存 局 ...

  6. /MD, /MDD, /ML, /MT,/MTD(使用运行时库)

    1. VC编译选项 多线程(/MT) 多线程调试(/MTd) 多线程 DLL (/MD) 多线程调试 DLL (/MDd) 2. C 运行时库                              ...

  7. /MD, /MDD, /ML, /MT,/MTD(使用运行时库) .

    1. VC编译选项 多线程(/MT) 多线程调试(/MTd) 多线程 DLL (/MD) 多线程调试 DLL (/MDd) 2. C 运行时库                              ...

  8. 编程环境中Runtime(运行时)的三个含义

    编程环境中Runtime(运行时)的三个含义 转自:https://www.zhihu.com/question/20607178 知乎答主@doodlewind 三个含义 实际上编程语境中的 run ...

  9. 云原生安全之RASP技术(应用运行时自我保护)

    文章目录 一.背景 1. WAF和RASP 2. waf和rasp是非此即彼的吗? 二.RASP技术(应用运行时自我保护) 1. 应用安全测试SAST.IAST.DAST 和 RASP区别 SAST, ...

最新文章

  1. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
  2. 求解LambdaMART的疑惑?
  3. Redis保存Java Session
  4. Angular DefaultDomRenderer2.setProperty - HTML的值是如何从Angular Component flow过来的,以及跨平台支持
  5. nodejs+vue.js+webpack
  6. python姓名输出语句_Python最基本的输入输出详解
  7. [html] 你了解HTML5的download属性吗?
  8. android146 360 病毒查杀
  9. iOS-启动动态页跳过设计思路 立即下载
  10. 标准模型和IE模型的区别
  11. 微信服务号如何绑定腾讯云服务器
  12. 我所佩服的古人——乐毅
  13. Vue 2.6.13 源码解析(四) Observer、Dep、Watcher与订阅
  14. 2021年西电计算机学院软专复试问题总结
  15. 【Linux】Ubuntu运行环境搭建
  16. 用unity制作2d钟表
  17. 学计算机前端技术学院,百度前端技术学院(任务)
  18. 2023值得入手的小米电视推荐 小米75寸电视哪款性价比高?
  19. Adobe安装程序无法初始化的解决方案
  20. java手机验证码代码_发送手机验证码

热门文章

  1. win7修复计算机 报错6,Win7系统出现APPCRASH错误怎么解决
  2. android中常见的异常总结
  3. Java语言高级(第三部分)异常多线程 ->(个人学习记录笔记)
  4. 赋能数字化生命力,让企业未来焕发青春
  5. 基于Opencv的图像处理-高光调整算法
  6. 计算机视觉 | 1. 一切的基础: 灰度图像 (读取,转换,像素定位)
  7. php实现微信一键登录,PHP如何实现微信的授权登录
  8. note 8 字符串
  9. 枚举报错 No enum constant XX 处理方法
  10. Hexo 搭建博客提交百度 sitemap 抓取失败