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

运行时应用自我保护(RASP):应用安全的自我修养的更多相关文章

  1. RASP Runtime Application Self-protection 运行时应用自我保护 介绍及优缺点

    RASP 介绍 Runtime Application Self-protection 运行时应用自我保护 [图源:绿盟科技] 概念 Gartner (著名信息技术研究和分析厂商) 在2014年提出了 ...

  2. 了解一下运行软件的自我保护(RASP)

    看下这篇文章: http://www.jianshu.com/u/c89141b2d51e 相应的demo演示: https://github.com/xbeark/javaopenrasp

  3. Android数据存储之Android 6.0运行时权限下文件存储的思考

    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...

  4. Android权限管理之Android 6.0运行时权限及解决办法

    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...

  5. Android中Activity运行时屏幕方向与显示方式详解

    现在我们的手机一般都内置有方向感应器,手机屏幕会根据所处位置自动进行横竖屏切换(前提是未锁定屏幕方向).但有时我们的应用程序仅限在横屏或者竖屏状态下才可以运行,此时我们需要锁定该程序Activity运 ...

  6. ASP.NET 5运行时升级到Beta5

    在Visual Studio 2015 RTM和Windows 10正式发布之前,微软把开源.NET升级到了beta5,带来了一些增强和改变.和Visual Studio 2015 RC一起安装的AS ...

  7. java运行时获得泛型类型

    引言 众所周知,java泛型最重要的特征是泛型擦除,所有泛型在编译时会转换成Object所以在java中运行时无法获得泛型的类型. 但是其实以上的规则是针对方法的内部变量的,如果是其他形式的泛型其实是 ...

  8. 由objC运行时所想到的。。。

    objC语言不仅仅有着面向对象的特点(封装,继承和多态),也拥有类似脚本语言的灵活(运行时),这让objC有着很多奇特的功能-可在运行时添加给类或对象添加方法,甚至可以添加类方法,甚至可以动态创建类. ...

  9. Android Studio使用时源码到处报红色警告,运行时又没错

    转载地址:http://www.07net01.com/program/2016/04/1452749.html [摘要:正在AS上开辟时,碰到那个题目,翻开全部的Java源文件,右边一起标赤色,找没 ...

  10. 1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const

    C#中有两种类型的常量:编译期常量和运行时常量.二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题. 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序 ...

随机推荐

  1. CCF 最优配餐 (BFS)

    问题描述 栋栋最近开了一家餐饮连锁店,提供外卖服务.随着连锁店越来越多,怎么合理的给客户送餐成为了一个急需解决的问题. 栋栋的连锁店所在的区域可以看成是一个n×n的方格图(如下图所示),方格的格点上的 ...

  2. python入门练习题2

    1,制作表格 循环提示用户输入:用户名,密码,邮箱(要求用户输入的长度超过20个字符,如果超过则只有前20个字符有效) 如果用户输入q或Q就退出程序,将用户输入的内容以表格形式显示 user_inpu ...

  3. iOS开源项目教程大合集

    UI篇 1.MMDrawerController http://www.cnblogs.com/shangdahao/p/3142204.html 2.SVPullToRefresh http://w ...

  4. Apache .htaccess Rewrite解决问号匹配的写法

    如news.asp?id=123 需要把它定向到 news/123.html 这个用 RewriteRule 怎么写啊? RewriteRule ^news\.asp\?id=(\d+)$ news/ ...

  5. CELL_PHOTO_IDENTIFIER

    # define CELL_PHOTO_IDENTIFIER @"photoLibraryCell" # define CLOSE_PHOTO_IMAGE @"close ...

  6. uva10934 Dropping water balloons

    //好久没做题 一直没状态 然后刷了个水题玩玩 //寒假集训和校赛都做到了类似的题目 然而当时并不会 (其实现在也不会 题意:有k个气球和一个n层高的楼,气球有硬度,在某曾会恰好摔碎,问至少多少次实验 ...

  7. JSP文件转换成为JAVA文件后的结构

    public final class zzz_jsp extends HttpJspBase implements JspSourceDependent{ public void _jspInit() ...

  8. 利用qq设置个性化的域名邮箱

    首先有域名.先去注冊先,国内有非常多域名交易平台.我是在易名中国网上注冊的一个域名,Lios.top,因为这个域名价值非常低.一年才 10元,价格非常实惠. 下一步就是去qq邮箱的设置里,找到账户,然 ...

  9. SSH搭建spring,使用依赖注入的方法

    配置文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o ...

  10. 再谈fedora下的音乐和视频播放器的安装

    rpm包就相当于windows下的exe,已经是编译后的二进制代码,可以使用rpm命令或dnf install ???.rpm来安装 lnux下软件的安装跟windows不同, 后者要到处去找, 要做 ...