什么是实时应用程序自我保护(RASP)?
什么产品可以定义为 RASP?
RASP 英文为 Runtime application self-protection,它是一种新型应用安全保护技术,它将保护程序想疫苗一样注入到应用程序和应用程序融为一体,能实时检测和阻断安全攻击,使应用程序具备自我保护能力,当应用程序遇到特定漏洞和攻击时不需要人工干预就可以进行自动重新配置应对新的攻击。
这意味着,RASP 运行在程序执行期间,使程序能够自我监控和识别有害的输入和行为。
其实,RASP 不同于传统的安全技术仅在网络周边或者终端设备上进行保护,它能够让应用程序具备自我保护能力。而实时是 RASP 非常重要的特点,因为拥有应用程序的上下文,它不仅可以分析应用程序的行为也可以结合上下文对行为进行分析,而且这些能持续不断的进行分析,一旦发现有攻击行为能立刻进行响应和处理。
RASP工作原理探秘
首先,RASP 是以什么形态存在?通常来说 RASP 将安全保护代码嵌入到运行中的服务器应用程序,它会实时拦截所有的系统调用并确保调用安全,最终实现应用程序自我保护。

RASP 可以应用在 Web 应用程序和非 Web 应用程序,对应用程序的代码设计没有任何影响,不需要修改任何代码,只需要简单的配置就可以将安全保护功能在服务器程序在运行时注入。
当前,RASP 只在 Java 虚拟机和 .NET 通用运行环境得到实现,其他语言的 RASP 实现目前还没有,笔者估计在2015年必然会有 PHP 实现上市,其他语言还需要技术更成熟。
RASP什么时候进行保护?
一旦 RASP 探测到每个用户访问违反预设定的安全条件,RASP 就会接管系统并执行必要合理的保护行为。一个例子就是当用户执行访问数据库的 SQL 命令,如果 RASP 认为这个是一个 SQL 注入攻击就可以执行 SQL 注入保护行为。
RASP 有检测和保护两种模式,检测模式在检测到安全攻击时只是记录下来并发送警告给用户,保护模式不仅能够检测同时能够实时拦截潜在的安全攻击。
RASP 的保护行为可以一下几种方式:
终止用户会话
停止用户程序(不影响服务器上其他程序):这是针对非常严重的攻击,比如DDOS。
发送警报给专门的安全人员
发送警告给用户
防火墙 vs. RASP
RASP 和防火墙一样都能检测流量和内容,也能够终止用户会话。 然而防火墙不拥有应用上下文,不能在应用层检测用户流量,必然安全威胁拦截的准确性肯定没有 RASP 高,误报率也会大大提高。而且在现在移动互联网和云计算盛行的今天,网络边界已经越来越不清晰了,这样也使防火墙的安全防护效果也越来越差。
Gartner 的 Joseph Feinman 非常精确的把防火墙比喻为簇拥在大人物周围的保镖,大人物去哪里都带着保镖,看起来防御力爆棚,但是大人物本人肌肉不发达也没有武功,一旦保镖被突破或者保镖被调虎离山,那么这个大人物就没有任何保护了,就非常危险了。RASP 可以让没有武功的人在很短的时间并且付出的代价不高的情况下拥有很高的自我保护能力(听起来有点像神话)。
RASP 的优点
RASP 能够看到系统里所有用户行为的细节,这样对于提高安全攻击识别的准确性有非常大的帮助。 比如RASP能非常清楚的理解用户的逻辑,配置以及数据和事件流,这就给非常精确的探测和拦截安全攻击行为提供了坚石的基础。
另外 RASP 能够自我保护数据,能够保护数据从创建到消亡的全过程。
RASP 和应用程序运行在一起,拥有用户的数据,RASP 在安全保护上想象的空间非常的大,RASP 可以满足很多企业级的数据保护需求, 比如数据透明加解密,一些只在系统内使用保密数据就可以使用加密,即使黑客将数据偷窃出去,也无法破解和解密,这样更不存在其他的问题了。
RASP 不足之处
没有任何安全解决方案是完美的,每个方案都有优点也有缺点,RASP 也一样,虽然它很多独特的优势,但也存在一些不可忽视的不足,需要安全研发人员不断的改善。
首先 RASP 是针对应用程序的,每个应用程序都必须有独立的探针,不能像防火墙一样只在入口放置一个设备就可以了。这样增加了部署困难和防范不完整的风险。
另外一个比较的不足就是对系统性能的影响,RASP 实时拦截,深入检测用户数据流,这是对精确度和误判率都有很大的帮助,但是对用户性能有一些影响,这些性能消耗也必然影响到用户的体验,这也是影响企业客户部署 RASP 的很大一方面原因。现在 RASP 的提供商在优化方面做了很大努力,大部分 RASP 对性能影响在5%左右。
最后使用 RASP 并不是真正建立一个安全的应用,系统中存在的漏洞还是存在,应用了 RASP 后临时提供一个虚拟补丁修补上已知漏洞,当不用 RASP 后这些漏洞还是存在。另外 RASP 也不能修复所有的漏洞,漏洞时刻在更新。企业应该将 RASP 和扫描工具结合起来将更有价值。RASP 软件提供商也应该提供实时漏洞更新功能,实现真正零日攻击防御。
什么是实时应用程序自我保护(RASP)?的更多相关文章
- 使用Node.js的socket.io模块开发实时web程序
首发:个人博客,更新&纠错&回复 今天的思维漫游如下:从.net的windows程序开发,摸到nodejs的桌面程序开发,又熟悉了一下nodejs,对“异步”的理解有了上上周对操作系统 ...
- 55、Spark Streaming:updateStateByKey以及基于缓存的实时wordcount程序
一.updateStateByKey 1.概述 SparkStreaming 7*24 小时不间断的运行,有时需要管理一些状态,比如wordCount,每个batch的数据不是独立的而是需要累加的,这 ...
- 50、Spark Streaming实时wordcount程序开发
一.java版本 package cn.spark.study.streaming; import java.util.Arrays; import org.apache.spark.SparkCon ...
- 输入DStream之基础数据源以及基于HDFS的实时wordcount程序
输入DStream之基础数据源以及基于HDFS的实时wordcount程序 一.Java方式 二.Scala方式 基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实 ...
- 基于flink快速开发实时TopN程序
TopN 是统计报表和大屏非常常见的功能,主要用来实时计算排行榜.流式的TopN可以使业务方在内存中按照某个统计指标(如出现次数)计算排名并快速出发出更新后的排行榜. 我们以统计词频为例展示一下如何快 ...
- Windows基础-实时录音程序(WaveXXX)
写在前面 一开始是打算用这个老接口做讯飞语音识别的程序,在转移到UWP时发现,这玩意在Windows Runtime中屏蔽(弃用)了,将来会更新使用WASAPI的程序 WaveRecorder类代码下 ...
- 52、Spark Streaming之输入DStream之基础数据源以及基于HDFS的实时wordcount程序
一.概述 1.Socket:之前的wordcount例子,已经演示过了,StreamingContext.socketTextStream() 2.HDFS文件 基于HDFS文件的实时计算,其实就是, ...
- 轻装上阵Flink--在IDEA上开发基于Flink的实时数据流程序
前言 本文介绍如何在IDEA上快速开发基于Flink框架的DataStream程序.先直接上手! 环境清单 案例是在win7运行.安装VirtualBox,在VirtualBox上安装Centos操作 ...
- 了解一下运行软件的自我保护(RASP)
看下这篇文章: http://www.jianshu.com/u/c89141b2d51e 相应的demo演示: https://github.com/xbeark/javaopenrasp
随机推荐
- JQuery 性能优化
一.合适的选择器 JQuery 选择器提供丰富的选择器来定位DOM元素, 基本选择器 #id..class.element.*等:那他们哪个更高效呢? 第一选择: $("#id") ...
- dagger和butterknife使用冲突
两者会冲突的主要原因是因为两者都有:javax.annotation.processing.Processor 于是在build.gradle中添加如下配置即可: // 注释冲突 packagingO ...
- 反汇编windows htonl()函数
因为自己在系统内核写网络程序有时候需要调用htons htonl 这样的函数进行转换,但由于内核只能调用c运行库,别的API不能调用.自己也接触过一点汇编,从来没有去学过.看过老码识途这本书前几章,如 ...
- WCF编程系列(五)元数据
WCF编程系列(五)元数据 示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServic ...
- js 金额格式化
//格式化金额 function fmoney(s, n) { n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s + &quo ...
- android 电话拨号器
电话拨号器(重点) 1.产品经理: 需求分析文档,设计原型图 2.UI工程师: 设计UI界面 3.架构师: 写架构,接口文档 4.码农: 服务端,客户端 ...
- ifstream:incomplete type is not allowed
IntelliSense: incomplete type is not allowed ifstream inputFile; Need to add this: #include <fstr ...
- 安装kali之后
更新源(以下设置均基于这些源) #vi /etc/apt/sources.list 把这些源加进去 ############################ debian wheezy ####### ...
- 在Mac OS X中使用VIM开发STM32(1)
本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重! 在我先前的博文⎣在Mac OS X中搭建STM32开发环境⎤中,我们在Mac中DIY出了最 ...
- 图片裁切插件jCrop的使用心得(三)
在这一篇里,我来具体讲讲代码该如何写. 下面是jCrop的初始化代码 //图片裁剪插件Jcrop初始化 function initJcrop() { // 图片加载完成 document.getEle ...