现在,攻击者越来越多地利用网络应用级的漏洞进行攻击,因为现在的网络应用程序迭代周期快,一旦软件更新频繁,将导致软件漏洞测试者有更少的时间进行产品测试。为了阻止这些漏洞被利用,有必要让应用程序可以自我防御。而RASP技术则是一种方法,能够迅速地使无论新生的还是传统的应用程序能够自我防御。

然而,因为大多数的应用程序由不同的编程语言编写,因此RASP技术也不是一种放之四海而皆准的方法,它必须尝试地同时保证应用的性能并达到保护避免被攻击的目的。

此外,一旦RASP部署在关键的应用系统上,有必要让使用RASP技术的用户相信,使用RASP技术既可以保证系统用户的利益,避免被攻击者攻下,又能够不太影响应用程序的性能和稳定性。

一、变化趋势

1.网络开发技术的趋势

最新的技术趋势是,传统的庞大的网络应用将逐步转变为使用Nodejs和Spring Boot编写的微型服务,使用Angular和React以及JavaScript作为主要网页语言编写的单个网页应用,这样就可以让客户端和服务端更加贴近彼此的推送数据和商业逻辑。应用程序也继续从传统数据中心移植到公有云上,并且采用容器化的技术优势(如:docker)。此外,开发和操作软持续加快软件迭代和版本更新的步伐,持续的软件迭代将使软件源代码以及测试代码托管到源代码管理系统中,持续的版本更新将导致应用软件有更频繁地变化。

因此,高频度的代码变化与快步伐的软件开发使得软件漏洞的探测不能够完全基于源代码进行测试。

2.网络攻击技术的趋势

正是因为技术的上述趋势变化,所以导致那些即使长期存在的应用软件仍然拥有很多潜在安全漏洞。实际上,根据威瑞森2018年数据调查报告,主要的安全威胁仍然是基于网络应用程序的攻击,这是安全攻击模式的最大分支。

3.网络防御技术的趋势

最近的二十多年,对网络的保护也越来越移向应用程序,从防火墙到入侵检测防御系统,再到网络应用防火墙(WAF),评估显示,网络防护设备越来越将防御手段深入到HTTP、SOAP和XML等其他应用层网络协议,这种变化的原因很简单:越能够理解应用程序,就越能准确的探测到并阻断针对应用程序的攻击。然而,即使目前最先进的网络保护技术——网络应用防火墙(WAF),仍然缺乏针对运行时的应用程序的检测。

WAF的目的是保护网络应用程序以及应用程序接口对抗大量的攻击,包括自动化攻击(僵尸网络),注入攻击和应用层拒绝服务攻击。WAF都提供基于签名的保护以及支持主动的安全模型(自动白名单)。一些WAF程序还提供异常检测,通过建立与平常时应用程序行为一致性的基线。WAF都部署在网络服务器的全面,以保护网络应用程序对抗来自外部和内部的攻击,并监测和控制通向网络应用程序的访问通道,同时收集和存储访问日志用于审计和分析。一般来说,WAF都作为物理或虚拟的应用程序进行部署,但是WAF也越来越多的被作为一种管理服务以及作为公有云提供的一部分服务,诸如亚马逊网络云服务(AWS)WAF。

WAF作用于应用程序之前这个先天条件,决定了它缺乏需要的上下文环境作为输入参数,以决定哪些攻击行为需要阻断。WAF模棱两可的估计和猜测作为输入将导致高维度的不确定性。这种不确定性则可能导致网络攻击的成功。诚如Ullrich所陈述的:“许多的网络应用程序直接被外部攻击攻下,是因为即使再复杂的系统架构,如网络应用防火墙的存在,也经常被有经验的攻击者给降伏。”

运行时应用程序自我保护(RASP)技术作为下一代技术正在被评估中。Gartner定义RASP为“是一项能够与应用程序或者应用程序运行时环境挂钩的一项安全技术,适用于控制应用程序的执行,并探测和阻断运行时的攻击”。RASP能够达到高级别的准确率和性能,因为以往的网络安全方案不能够获取到应用程序执行的上下文环境。RASP解决方案支持JAVA编程语言和框架,以及其他语言和框架,诸如:C# ,PHP,Ruby,Python,Nodejs,Go等其他。一些RASP方案需要改变应用程序代码自身,通过编程语言,然后大多数不需要。

二.RASP四大技术方法简介

大体来说,RASP的技术方法有四大类:Servlet过滤器,插件和软件开发包(SDK);二级制指令;Java虚拟机替换;虚拟化。

1. Servlet过滤器,插件和软件开发包(SDK)

这种技术使用web服务器插件或Java servlet(通常实现在Apache Tomcat或. net中)来处理入站HTTP请求。插件在到达应用程序代码之前检查请求,对每个请求应用检测方法。请求将被匹配已知的模式,如攻击签名,如果匹配上则将被阻塞(Cisar, 2016)。Prevoty RASP解决方案使用插件或通过特定编程语言的SDK进行自定义代码更改。插件或SDKs“监视应用程序行为,分析传入的用户输入和数据有效负载,检测威胁并清理数据,以便在应用程序中安全执行”(Prevoty, 2018)。

2.二进制指令

二进制指令将监视和控制元素引入到应用程序中。当检测应用程序运行时,监视元素将标识安全事件(包括攻击),而控制元素记录事件、生成警报和阻止攻击。根据编程语言和框架的不同,这些元素集成时不需要更改应用程序源代码或容器。Contrast Security公司表示,其RASP解决方案利用了Java指令API,该API不需要更改应用程序源代码或Java虚拟机(Contrast, 2017)。

3.Java虚拟机替换

一些RASP解决方案通过安装,可以替换标准的应用程序库、JAR文件或JVM。这允许RASP解决方案被动地监视支持函数对应用程序调用,提供数据和控制流的全面视图,支持使用细粒度检测规则去探测并拦截恶意的请求(Adrian Lane, 2016)。

4.虚拟化

虚拟化也称为容器化运行时保护。此类运行时保护实现了一个虚拟容器使用规则来控制和保护应用程序。Waratek表示,它的“基于容器的解决方案的优点是允许规则配置与应用程序完全分离,并且不影响应用程序生命周期或其正常操作。此外,这种方法不需要更改应用程序构件,如源代码、部署描述符或二进制文件(Waratek, 2018)。

声明:本文来自APT攻击,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。