更新时间:2025-01-07 GMT+08:00
分享

应用防护概述

应用防护功能基于RASP(Runtime Application Self-Protection)技术,为运行时的应用提供安全检测和防护。用户无需修改应用文件,只需将探针注入到应用,即可为其提供强大的安全防护能力。

技术原理

通过动态代码注入技术在运行时将监控&保护代码(即探针)注入到应用程序的关键监控&保护点(即关键函数),探针根据预定义规则,结合通过保护点的数据、以及上下文环境(应用逻辑、配置、数据和事件流等),识别出攻击行为。

检测能力

表1中介绍应用防护功能支持检测的攻击类型。

表1 应用防护功能检测攻击类型

攻击类型

说明

应用防护检测规则名称

检测说明

SQL注入

SQL注入(SQL Injection)是一种攻击技术,攻击者利用Web应用程序中构建动态SQL查询的漏洞缺陷,在用户输入字段中插入恶意代码,欺骗数据库执行SQL命令,从而窃取、篡改或破坏各类敏感数据,甚至是在数据库主机上执行危险的系统级命令。由于绝大多数网站和Web应用都需要使用SQL数据库,这使得SQL注入攻击成为了最古老、分布最广的网络攻击类型之一。

SQLI

检测防御SQL注入攻击,检测Web应用是否存在对应漏洞。

OS命令注入

OS命令注入(OS Command Injection)是一个Web程序漏洞,这种漏洞通常出现在需要用户输入命令的应用程序中,如果用户输入没有有效的过滤和验证机制,就可能导致该漏洞。它允许攻击者在运行应用程序的服务器上执行任意的操作系统命令。

CMDI

检测防御远程OS命令注入攻击,同时检测web应用是否存在对应漏洞。

XSS

XSS(Cross-Site Scripting,跨站脚本攻击)是一种典型的Web程序漏洞利用攻击。攻击者利用Web程序对用户输入检查不足的漏洞将可执行恶意脚本注入网站或Web应用,当用户访问网页时触发恶意脚本的执行,从而达到窃取用户个人数据、弹出广告,甚至篡改网页内容等攻击目的。

XSS

检测防御存储型跨站脚本注入攻击。

Log4j RCE漏洞

Log4j RCE是指Apache Log4j 2.x中的一个严重安全漏洞,该漏洞使得攻击者可以通过JNDI(Java Naming and Directory Interface)注入执行远程代码。

Log4jRCE

检测防御远程代码执行的控制攻击,并支持对攻击行为进行阻和拦截。

上传Webshell

上传WebShell是一种网络攻击手段,攻击者通过漏洞或其他方式将Webshell这种恶意代码上传到服务器,从而获得对服务器的控制权限。

WebShellUpload

检测防御上传危险文件的攻击或将已有文件改名为危险文件扩展名的攻击,同时检测web应用是否存在对应漏洞。

内存马注入

内存马注入是一种高级的网络攻击技术,攻击者利用特殊的技术手段将恶意代码直接注入到内存中,可以有效绕过传统的安全防御机制,实现对目标系统的控制。

FilelessWebshell

检测防御内存马注入攻击。

XXE

XXE指XML外部实体注入(XML External Entity Injection)漏洞。如果应用程序在解析XML文件时,没有禁用外部实体引用,攻击者可通过构造恶意的XML内容,读取任意文件、执行系统命令等。

XXE

检测防御XXE注入攻击,检测web应用是否存在对应漏洞。

反序列化输入

反序列化指的是将序列化的数据(字符串、字节流等)恢复为原始对象的过程。在生成反序列化对象过程中,攻击者可以通过构造特定的序列化数据输入,控制生成的对象,从而实现一些恶意攻击。

UntrustedDeserialization

检测使用了危险类的反序列化攻击。

文件目录遍历

文件目录遍历指的是攻击者通过修改URL或使用特殊字符绕过应用程序的安全检查,访问或读取服务器上的任意文件或文件夹。

FileDirAccess

获取访问文件的路径或目录,匹配是否在敏感目录或敏感文件下。

Struts2 OGNL

Struts2 OGNL指的是Java Web框中Struts2中的对象图导航语言(Object-Graph Navigation Language),当OGNL表达式外部可控时,攻击者可以通过构造恶意的OGNL表达式让程序执行恶意操作。

Struts2OGNL

OGNL代码执行检测。

JSP执行操作系统命令

JSP(Java Server Pages)是一种开发动态网页的技术。攻击者可能利用JSP的安全漏洞执行非法的操作系统命令,导致数据泄露、服务中断等问题。

SuspiciousBehavior

检测可疑行为—通过JSP请求执行操作系统命令。

JSP删除文件

攻击者可能利用JSP的安全漏洞删除服务器上的文件。

SuspiciousBehavior

检测可疑行为—通过JSP请求删除文件失败。

数据库连接异常

数据库连接异常包括但不限于网络异常、配置错误、权限异常等,这些异常可能意味着应用程序正在遭受攻击。

SuspiciousException

检测可疑异常—数据库连接抛出的认证和通讯异常。

0 day漏洞

0 day漏洞(零日漏洞),又称零时差攻击,通常指还没有补丁的安全漏洞。如果这类漏洞被发现,黑客利用这些漏洞进行网络攻击,即零日攻击。

  • zeroDay
  • zeroDayDetect
  • 检测执行命令的堆栈哈希是否在Web应用的白名单堆栈哈希表里。
  • 检测防御表达式注入攻击,检测Web应用是否存在对应漏洞。

SecurityManager权限检测异常

SecurityManager是Java的一个安全管理器类,负责管理和控制应用程序的安全性。当SecurityManager检测到代码执行不允许的操作时,会抛出异常。

SuspiciousException

检测可疑异常,即SecurityManager抛出的异常。

JNDI注入

当应用使用JNDI的lookup方法时,如果查询的URL可以由外部控制,攻击者可以构造恶意的URL,使得服务器加载恶意载荷,从而实现远程代码执行。

JNDI

检测防御JNDI注入攻击,检测web应用是否存在对应漏洞。

表达式(Expression)注入

即EL表达式注入(EL Injection),当EL表达式外部可控时,攻击者可以通过构造恶意的EL表达式让程序执行恶意操作。

ExpressionInject

检测防御表达式注入攻击,检测web应用是否存在对应漏洞。

应用场景及优势

  • 上下文感知:应用防护功能可以利用应用程序的上下文环境,提供更准确的检测结果。
  • 与WAF互补:应用防护技术在应用程序运行时检测内存中写的数据和检测未经授权的数据库访问,与WAF互补。
  • 0 day漏洞防御:应用防护功能能够在应用程序运行时进行动态检测和防护,实时检测攻击行为,可有效拦截0 day漏洞攻击。

约束与限制

  • 应用防护功能仅企业主机安全旗舰版、网页网页防篡改版、容器版支持。购买和升级企业主机安全的操作,请参见购买主机安全防护配额升级防护配额
  • 应用防护功能仅支持防护满足以下条件的Web应用:
    • JDK:JDK 8、JDK 11、JDK 17
    • Web应用:
      • Windows(64位):Tomcat
      • Linux(64位):Tomcat、Weblogic、Netty、Jetty

      具体版本要求如下:

      • Tomcat 7.0.55版本及以上
      • Weblogic 12C版本及以上
      • Netty 4.1.0.Final版本及以上
      • Jetty 9.3.19版本及以上

应用防护使用流程

图1 使用流程
表2 使用流程说明

操作项

说明

开启应用防护

为目标服务器开启应用防护,实时检测应用安全。

查看防护事件

通过分析应用防护过程中触发的防护事件,加固应用防护措施,提升应用安全。

相关文档