Web 应用防火墙(WAF)已经成为常见 Web 应用普遍采用的安全防护工具,即便如此,WAF 提供的保护方案仍旧存在诸多不足,笔者认为称 WAF 为好的安全监控工具更为恰当。幸运的是,应用安全保护技术也在快速发展,运行时应用程序自我保护系统(简称 RASP)之概念,一经 Gartner 提出,立即受到热烈追捧。业界普遍认为 RASP 会成为新一代应用漏洞的「超级克星」。

WAF: 对应用安全防护已力不从心

Web 应用安全防火墙(WAF)部署在 Web 应用程序前线,可以实时扫描和过滤 Web 请求与用户输入的数据。因此,WAF 在监控进出 Web 应用程序/数据库的有害用户输入和不正常的数据流上非常有效率,这也使 WAF 在过去十多年间非常受欢迎。

WAF 有两种工作模式:

  1. 检测模式:寻找恶意输入和违规行为模式。
  2. 阻塞模式:拦截可疑用户输入。

WAF 具备防护多种常见安全攻击(如 SQL 注入和跨站攻击(XSS))的能力。但 WAF 基于流量分析,不理解应用的上下文,因此它也有很多与生俱来的缺陷。

WAF 最大的缺点是一旦应用程序代码有所改变,相应的配置也需要改变。一旦更新不及时或者更新失败,都会产生大量的误报(False-Positives)。当 WAF 设置为拦截模式时,这些误报会产生 DDOS 攻击或导致性能问题。

WAF 无法检查应用程序的漏洞,更无法解决已知漏洞。它不了解应用程序,不能深入到数据流里探测系统特有的问题,比如 SQL 注入。每个数据库的 SQL 语言都有诸多不同,WAF 无法防范针对具体数据库的 SQL 注入之攻击行为。

RASP 可接力 WAF 为应用程序提供更好的保护

实时应用程序自我保护(RASP)继承了 WAF 的大部分功能,使应用程序很好地保护自己。RASP 会监听每一个与应用程序交换的节点,覆盖所有应用程序的访问节点,包括:用户、数据库、网络和文件系统。

因为了解应用程序的上下文,RASP 完全清楚应用程序的输入输出,因此它可以根据具体的数据流定制合适的保护机制,从而可以达到非常精确的实时攻击识别和拦截。

RASP 的工作原理请见下图:

RASP 在可疑行为进入应用程序时并不拦截,而是先对其进行标记,在输出时再检查是否为危险行为,从而尽量减少误报和漏报的概率。这对精确性要求极高的银行、金融体系的应用程序保护尤其重要,因为这些应用程序对性能和可用性要求非常高。

RASP 优于 WAF 的5大优势

极少误报率: 不同于 WAF,RASP 不依赖于分析网络流量去寻找问题,除了发现漏洞或发现攻击行为,它通常不会发出任何声音。这样能极大地减少误报率。RASP 能非常精确地区分攻击和合法输入,而 WAF 很多时候无法做到,这大大减少了专门请人分析结果的成本,也不需要扫描修复的过程。

维护成本极低:WAF 的安装过程非常复杂,需要非常精确的配置以尽可能广的覆盖应用程序。为了获得更好的效果,几乎每次 Web 应用程序发布新版时都需要对管理员进行「培训」并对 WAF 进行针对性的重新配置。但大多数企业都无法做得这么及时与完善,这就可能导致大量的误报与性能问题。与之相对,RASP 几乎可以做到开箱即用,只需要非常简单的配置就可以使用。这得益于RASP 与应用程序融为一体的特性,在应用程序内部监控实时数据。

极高的覆盖度和兼容性: RASP 安全系统可以应用到任何可注入的应用程序,能处理绝大多数的网络协议:HTTP、 HTTPS、AJAX、SQL 与 SOAP。而 WAF 通过监控网络流量提供保护,因此只支持 Web 应用程序(HTTP)。此外,WAF 需要特定的解析器、协议分析工具或其他组件来分析应用程序使用的其他网络协议,这会导致一些兼容性与性能问题。

更全面的保护:WAF 在分析与过滤用户输入并检测有害行为方面还是比较有效的,但是对应用程序的输出检查则毫无办法。RASP 不但能监控用户输入,也能监控应用程序组件的输出,这就使 RASP 具备了全面防护的能力。RASP 解决方案能够定位 WAF 通常无法检测到的严重问题——未处理的异常、会话劫持、权限提升和敏感数据披露等等。Gartner 分析师 Joseph 很清楚地描述了这一点。

可以与 SAST 完美集成:RASP 可以与 SAST 方案无缝集成,比如静态代码分析工具(SCA)。这使得企业全程掌控产品的整个生命周期,从早期的开发阶段,一直到后期制作和部署。WAF 工具根本无法做到这一点,也不能提供任何补救措施。将 RASP 和 SAST 结合使用可以带来两个显著的好处:

  1. 提供虚拟补丁:在很多情况下,可以使用扫描工具在开发阶段发现所有已知漏洞,但由于资源和上线周期的压力,没有办法修复所有漏洞,带病上线是常有的事情。借助 RASP,企业可以放心地发布产品。RASP 就像一个大的虚拟补丁将所有漏洞都在线修复。系统可以安全运行,在资源允许的情况下再修复和更新这些漏洞。

  2. 快速缓解攻击:从另外一个角度看,使用 RASP 能快速定位漏洞,这得益于 SAST 的先期扫描结果,RASP 和 SAST 的结合使用对于大型企业尤其重要,快速修复漏洞能节约大量时间,大幅降低漏洞带来的风险。这是 WAF 所无法提供的。

诚然,WAF 是一个值得尊敬的后期安全保护工具,但是它先天的缺点导致公司不得不考虑其他选择。使用 RASP 解决方案能根本性提升应用程序的自动免疫能力,即便黑客攻击已渗入应用程序内部,也能从容应对。随着黑客技术日趋复杂,应用程序的安全性也必须发展提高。RASP 和 SAST 的组合,可以说是当今最好的应用安全保护组合。

RASP 提供商

RASP 是一个新兴的概念,现在能真正提供 RASP 服务的公司并不多,惠普是一个比较出名的大厂商有。但在国内只有一家安全初创企业 OneASP 在做 RASP 的产品,这也是一款拥有完全知识产权的国产安全产品。OneRASP(实时应用自我保护)是一种基于云的应用程序自我保护服务, 可以为软件产品提供实时保护,使其免受漏洞所累。

RASP 完爆 WAF 的5大理由!的更多相关文章

  1. libgo协程库:网络性能完爆ASIO异步模型(-O3测试)

    在purecpp社区的github组织中有一个协程库:https://github.com/yyzybb537/libgo 近日有用户找到我,想要了解一下libgo库在网络方面的性能,于是选取已入选标 ...

  2. 完爆Facebook/GraphQL,APIJSON全方位对比解析(三)-表关联查询

    相关阅读: 完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能 完爆Facebook/GraphQL,APIJSON全方位对比解析(二)-权限控制 自APIJSON发布 ...

  3. 我喜欢ASP.NET的MVC因为它牛逼的9大理由(转载)

    我很早就关注ASP.NET的mvc的,因为最开始是学了Java的MVC,由于工作的原因一直在做.Net开发,最近的几个新项目我采用了MVC做了,我个一直都非常喜欢.Net的MVC.我们为什么使用MVC ...

  4. 高校应该使用 Drupal 的10大理由

    使用 Drupal 已经成为全球顶尖高校中的一种潮流,它已经被全球数以百计的院校选择并应用,无论是哈佛.斯坦福.杜克.布朗.罗格斯.剑桥.耶鲁还是其它众多知名高校,都已经选择 Drupal 作为它们理 ...

  5. 你该学点HTML/CSS知识的9大理由

    每个人都应该学写代码——这一观点简直就是铺天盖地地映入我们眼帘.或许你会莫名其妙,程序员学代码那是理所应当,但是作为一个作家.营销人员.财务工作者甚至是工人,为什么也需要学习代码呢? 好吧,下面我会告 ...

  6. Spring流行的十大理由

    Spring大概是每个JAVA程序员都听过的框架,但是它为什么能这么流行? 听到咕泡学院的Tom老师的公开课,下面是他总结的阿里为什么选择Spring的十大理由,我觉得这也是Spring能流行的原因: ...

  7. 使用Visual Studio进行 Android开发的十大理由

    [原文发表地址]Top 10 reasons to use Visual Studio for C++ Android Development! Visual Studio: C++跨平台的移动解决方 ...

  8. 选择阿里云数据库HBase版十大理由

    根据Gartner的预计,全球非关系型数据库(NoSQL)在2020~2022预计保持在30%左右高速增长,远高于数据库整体市场. 阿里云数据库HBase版也是踏着技术发展的节奏,伴随着NoSQL和大 ...

  9. oracle DBA坚持写博客的7大理由

    对于Oracle DBA来说,甚至IT技术人员来说.坚持写博客是个好习惯.以下是我建议大家写博客的七个理由. 帮助整理思路 最近我做出了一个决定,那就是: 我要坚持天天写博客,记录每天所学的重要东西. ...

随机推荐

  1. Javasript中Date日期常用用法(正则、比较)

    Date 对象用于处理日期和时间.创建 Date 对象的语法:  代码如下 复制代码 var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值.参数形式有以下5种 ...

  2. HTML+CSS学习笔记 (7) - CSS样式基本知识

    HTML+CSS学习笔记 (7) - CSS样式基本知识 内联式css样式,直接写在现有的HTML标签中 CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式.嵌 ...

  3. 重建Mac系统的文件打开方式

    /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Ver ...

  4. Dreamweaver标签库

    .highlight .hll { background-color: #ffffcc } .highlight { background: #ffffff } .highlight .c { col ...

  5. Delegate&Event

    Delegate 1.基本类: public class Student { public int Id { get; set; } public string Name { get; set; } ...

  6. 【译】 Node.js v0.12的新特性 -- 性能优化

    原文: https://strongloop.com/strongblog/performance-node-js-v-0-12-whats-new/ January 21, 2014/in Comm ...

  7. [zz] 使用ssh公钥密钥自动登陆linux服务器

    目录 .生成密匙对 .拷贝公匙到远程机 .启动登陆代理 这种方法处理后每次需要运行命令:ssh-add ~/.ssh/id_dsa 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远 ...

  8. c#基础------------静态类与非静态类

    呵呵,静态类,静态构造函数,静态字段,静态属性和静态方法.既然是静,那就顾其名思其意吧. 静态成员主要包括静态字段和静态属性,静态成员可以实现类中能够被所有实例对象共享的数据.静态成员属于类所有,无论 ...

  9. HTML5 drag & drop 拖拽与拖放简介

    DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer. draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如 ...

  10. Js popup position which right under target item

    <div style="margin-left:600px;"> <div id="Span1" style="color:#eee ...