其乐融融的IT技术小站

应用实时安全防护探索

随着数字化转型进程的不断加快,应用程序安全作为安全防护关键一环,日益成为企业安全运营关注的焦点,运营人员需要为应用程序提供最佳的安全保护。当前常用的安全防护措施被视为一种附加安全层,它通过增加防御机制来保护应用程序,然而应用程序安全仅仅依靠外部加固安全解决方案和网络安全措施来保护是不够的,总结G行网络攻防演习经验,我们开始关注探索运行时应用程序自我保护(RASP)对于应用程序的保护。RASP技术可以实时地检测和阻断安全攻击,确保应用程序的运行连续性同时保护其安全性。本文旨在探讨运行时应用程序自我保护的工作原理、优势和不足、实施和维护方法。

现状分析

G行基于分层分级安全防护原则构建安全防护体系,建设信息安全运营指挥中心,纵深部署3大平台:态势感知平台、安全数据湖和WEB应用防火墙,以平台能力、可视化能力、安全资产能力、人员能力建设,开展全天候安全威胁监测和运营处置工作,实现及时预警、瞬时响应处置,保障业务和系统安全。

WEB应用防火墙是针对WEB防护、网页保护的安全防护设备,主要防护功能基于流量规则的防御,存在一定误报率和绕过风险,而RASP技术防御是根据应用代码运行态请求上下文,在恶意攻击代码被执行前,进行有效识别和拦截。同时,随着应用分布式演进导致应用模块数量不断增加,应用程序和中间件安全运维的压力逐渐增大,传统的基于已有规则的应用过滤和安装安全补丁等被动安全防护手段不仅投入大而且效能低,特别是在应对0day漏洞攻击手段时更是收效甚微,应用主动安全防护需求将成为企业安全防护必要补充。

功能介绍

传统的安全措施通常建立在“最小特权原则”的基础上,这意味着应用程序只能使用它具有的最小权限以避免安全漏洞。RASP技术是在应用程序层面上对安全事件进行管理,能够实时检测到应用程序的安全事件并对其采取相应措施的技术。这里的安全事件指在代码级别执行安全检查,类似代码审计,及时检测出异常攻击行为。当检测到安全事件时,RASP技术可以阻止不安全的操作、尝试修复漏洞以及发出告警,从而保护应用程序的安全。

RASP技术可以在几个方面为应用程序提供保护:

能够实时检测和响应安全事件RASP技术可以在应用程序运行时实时检测并响应安全事件。这可以帮助安全人员在攻击者发起攻击之前便能够阻止攻击事件的发生,从而加强了应用程序的安全性。

能够保护应用程序的数据和用户RASP技术可以通过实时监控应用程序的行为,保护应用程序的数据和用户。例如,RASP技术可以检测到SQL注入攻击并阻止攻击,以保护应用程序的数据。

能够自主阻断不安全的操作RASP技术可以自主决定何时阻断不安全的操作,而不是仅仅依靠网络安全措施。这可以帮助安全人员为应用程序提供更好的防御措施,以保护其数据和用户。

工作原理

各种语言均提供RASP技术实现方式,技术原理类似,下面以Java语言为例探讨RASP技术工作方式。

JVM字节码技术提供了一种实现RASP技术的方法,其可准确捕获应用程序的运行时行为,可以很好地获取应用程序运行时的所有细节,包括调用的方法、变量值及其他参数,然后使用这些信息可以检测到不安全的行为,并采取相应的措施防止攻击。

JVM字节码使用Java-Agent实现,Agent是一个运行在目标JVM的特定程序,它的职责是负责从目标JVM中获取数据,然后将数据传递给外部进程。从Java SE 5开始,开发者可以使用Java的Instrumentation接口构建⼀个独⽴于应⽤程序的代理程序(Agent),用来监测和协助运行在JVM 上的程序,甚至能够替换和修改某些类的定义。

图1 基于JVM的RASP技术实现方法图1 基于JVM的RASP技术实现方法

Java Agent支持目标JVM启动时加载,也支持在目标JVM运行时加载,这两种不同的加载模式会使用不同的入口函数,如果需要在目标JVM启动的同时加载Agent,那么可以选择实现下面的方法:

public static void premain(String agentArgs, Instrumentation inst);

public static void premain(String agentArgs);

在premain函数中,我们可以对字节码进⾏操作,编⼊RASP的安全探针。

public static void premain(String agentArgs, Instrumentation inst){

inst.addTransformer(new ClassTransformer());}

借助ClassFileTransformer接口,实现对字节码的修改,定义一个类,实现ClassFileTransformer接口,并重写transform方法,在这个方法中,通过ASM 技术修改字节码。

在特定高风险类执行时,检查其字段、参数和方法行为:如"eval", "getRuntime().exec()", "/bin/sh", "/bin/bash", "HttpURLConnection", "HttpClient", "SocketChannel" 或者SQL注入类型"select", "from", "insert", "union", ";", "and", "or", "drop", "update", "delete"等高风险行为时进行拦截和告警。

基于JVM字节码底层实现,RASP技术可以针对以下常见的安全漏洞提供保护:

  1. SQL注入攻击;
  2. 跨站点脚本攻击;
  3. 跨站点请求伪造攻击。

优势和不足

优势:

  1. 准确性高RASP技术是在代码级别运行的,可以有效拦截混淆和加密的流量,从而具有更高的精度,这意味着它可以提供更高质量的保护。
  2. 可扩展性强由于JVM字节码可以处理大量的Java等应用程序,因此RASP技术也可以对许多不同的应用程序进行扩展。这使得RASP技术适合在应用大规模部署使用的时候非常有帮助。
  3. 资源成本低RASP技术根植于应用程序,在应用程序动态运行时进行检测和保护,基于这种实时检测并响应安全事件机制,相对于网络安全措施而言,具有更低的资源消耗。
  4. 维护成本低RASP从底层函数进行保护,监控和阻断攻击的最终危害行为,所以基本上不需要对RASP的规则做过多调整即可实现内建应用安全。
  5. 为应对0day漏洞提供帮助RASP技术能够根据0day漏洞的提权、写入和执行等行为特征快速识别并响应应用程序的各种安全事件,并对安全攻击回溯追源效率较高。

不足:

  1. 语言兼容性限制RASP技术的实现需要编程语言和框架支持,目前Java、PHP等语言实现兼容性较好,但对其他语言需要额外开发和集成支持。
  2. 应用兼容性RASP技术在应用程序内部执行,应用程序不规范的运行代码可能会导致兼容问题,同时应用投产变化如后台WEB直接编辑命令等类似场景,需要RASP对应进行白名单注册。
  3. 性能影响RASP和应用同时工作在运行时环境,和应用共享一定的计算资源,对高并发低时延的应用存在影响风险。例如对于跨站脚本攻击(XSS)类攻击,需要在用户请求和服务器响应中分析是否嵌入恶意脚本,当存在庞大攻击样本表单的场景中,XSS的正则匹配将会消耗大量的资源。但是可以根据业务场景,控制正则匹配范围来动态调整检测精度和检测速度。

实施和维护

实施RASP技术需要以下步骤:

  1. 确定保护目标遵循分层分级的防护策略,对互联网边界和重点防护系统进行筛选和重点防护,分级的保护目标对应执行不同的防护方案,同步RASP技术需要检测的不同安全事件类型。
  2. 选择适当的RASP技术G行对外业务程序主流Java程序,成熟的Java字节码实现的RASP技术已在社区广泛流行,如OpenRASP、OneRASP等。社区和互联网大厂大规模部署后多年实践和更新迭代,RASP技术在性能、稳定性和安全性控制方面表现优秀,尤其是其联动WAF双管齐下的场景,有效监测和拦截隐藏的安全攻击。
  3. 实施RASP技术G行基于Java字节码技术的鹰眼系统Agent已大范围部署,可探索集成RASP功能实现。同时,Poin统一开发框架亦可集成RASP技术形成统一通用的安全防护方案。目前,信创中间件已适配RASP运行时应用自防护机制可拦截WEB安全攻击,如内置命令注入、失效身份认证、敏感数据泄露、跨站脚本(XSS)等40余种常见安全漏洞,具备安全事件分类统计能力,为运维安全防护提供数据支撑,实现精准加固,提升业务系统安全性。
  4. 监测和调整对于应用集成RASP技术汇报的安全事件,安全人员可以实时监测和调整RASP技术策略以保持应对安全事件的准确性和时效性。RASP技术防护提供的特征可提供给WAF、全流量系统、厂商等,可有效判定未知0day并对安全攻击回溯追源,同时,持续评估RASP技术的功能和表现,以保持其长期有效性。

总结

RASP技术提供了一种可行的方法来为应用程序提供安全保护。它提供了应用程序安全性更为全面的保护,并且能够更好地识别和响应各种安全事件。尽管RASP技术仍存在一些缺点,但从根本上来说,RASP技术为应用程序提供了高效、可扩展和灵活的安全保护。后续我们将继续探索RASP技术实施和维护的有效方案,以期更好地保护应用程序和信息,服务好广大客户。

赞 ()
分享到:更多 ()

相关推荐

内容页底部广告位3
留言与评论(共有 0 条评论)
   
验证码: