近年来,Web应用层的对抗失衡问题愈演愈烈,Apache Log4j 开源组件和Spring 开源应用开发框架相继被曝出高危漏洞,其波及范围之广引发各界对开源组件0Day漏洞的担忧。WAF(Web Application Firewall, 应用程序防火墙)一直以来被认为是抵御web攻击的有效防护手段,但是WAF在0Day防护上显得束手无措,RASP(Runtime Application Self-Protection,应用运行时自我保护)出现并成为解决Web防护的新技术迅速在业内推广,RASP技术的市场关注度持续升温。那么,RASP来了,WAF将何去何从?
WAF是一种专门用于分析HTTP/HTTPS流量的专用防火墙,可以深入到每一次 HTTP/HTTPS请求和详情中去检查是否包含敏感字段,然后放行正常行为,拦截恶意行为,就像自来水过滤器一样,把“杂质”从庞大的流量中剔除出去,这样应用程序就只会响应正常的请求,从而达到保护应用程序的目的。
RASP是一种在服务器运行的应用程序运行时技术。运行时应用自我保护旨在实时检测应用程序的攻击。RASP的概念最早由Gartner在2014年提出,即“运行时自我保护”,指对应用程序的保护不应该单纯依赖于外部的系统,而应该使程序自身带有自我保护的能力。RASP在实现或构建的过程中会被链接到应用程序的运行环境中,并能够控制应用程序代码的执行,实时地检测和阻止攻击行为。
RASP和WAF都有着各自的优势,从部署的方式上就能感知到它们都具备各自擅长的领域,WAF直接在边界入口进行部署,RASP通常是以agent形态进行部署,注入到应用程序中。
WAF更擅长于分析应用流量,可以深入到每一次 HTTP/HTTPS请求和详情中去检查是否包含敏感字段,然后放行正常行为,拦截恶意行为,对于CC攻击、爬虫、恶意扫描这些大流量的攻击或者有明显攻击特征的流量有着显著的防护效果,但如果对流量进行加密和混淆,WAF在解密流量时,由于无法深入到应用内部,就无法起到防护效果了,容易被轻松绕过;而RASP是从应用内部对关键函数操作的数据进行分析,即使原始请求经过加密和混淆,但是它在应用内传播到最终的底层函数时将会以明文方式被RASP截获,因此相比WAF能减少大量的误报和漏报问题。
WAF在防御已知漏洞方面可以起到效果,但是基于规则的防护方式无法防御0day漏洞,而RASP则可以保护应用运行时环境中的所有代码,包括自研代码、第三方组件、Web应用容器(Tomcat、Django、Flask等)。所以不管攻击方式千变万化,攻击手段如何隐蔽,收敛到攻击步骤总是无法绕开调用一些底层的关键函数,因此RASP对于0-day漏洞利用攻击做到有效拦截。
WAF在维护上需要频繁更新规则,且安全运营人员需要对业务逻辑和WAF配置参数深入了解结合后,才能配置出精准高效的策略;由于RASP从底层函数进行保护,所以基本上不需要对RASP的规则做任何调整即可实现应用的安全内建。
可以将WAF和RASP形象的比喻为一栋大楼的门厅保安和私人管家,WAF“保安”可以根据某些特征来区别是否是坏人,比如戴黑色头套、携带铁棍等,具有这些特征的一类人都会被阻止进入,但是一旦坏人换了白色头套、木棍,可能WAF“保安”就识别不出了;而RASP“私人管家”不管坏人具备什么样的特征,如何去变换特征,只要做出有危险出格的行为就会直接阻止。
总结来讲,拥有WAF和RASP(特定模块可进行入侵式部署和更新)可以加强企业的防御。WAF可以主动阻止DDOS、机器人保护和常见的OWASP攻击,但RASP可以拥有更深入的应用程序特定策略。