应用防护功能基于 RASP(Runtime Application Self-Protection)技术,在应用运行时内部检测并阻断攻击。您无需修改应用代码,只需在主机、容器或 Serverless 应用(SAE)环境中部署 RASP 探针,即可防御应用漏洞、0day 漏洞和内存马等攻击。
产品概述
应用防护基于 RASP 技术,在应用程序内部通过钩子(Hook)关键函数,实时监测应用运行时与其他系统的交互行为。当应用出现可疑操作时,RASP 会根据当前上下文识别并阻断攻击。
该技术为主机上的 Web 业务进程提供应用漏洞、0day 漏洞和内存马攻击等防护能力。
核心优势
防御已知与未知漏洞:RASP 在应用运行时内部监控关键函数的执行,不依赖漏洞特征库,因此能够防御 0day 漏洞和未知攻击手法,无需等待安全补丁即可提供即时防护。
应对加密流量:RASP 从应用程序内部获取已解密的请求数据,不受网络层加密影响,即使请求经过复杂编码或加密,只要应用执行的最终动作与预期身份和行为不匹配,即可检测到异常。
低误报漏报:RASP 分析关键函数操作的实际数据,可忽略无法真实执行的攻击Payload,从而减少误报和漏报;无论攻击入口如何变化,都无法绕开关键函数的执行过程。
攻击溯源与漏洞定位:RASP 为安全人员和开发人员提供详尽的攻击链路,包括攻击原始 Payload、代码调用堆栈等信息,便于漏洞定位、复现和修复。
部署简便:在控制台接入即可部署,无需维护和更新具体规则,伴随应用启动而自动运行,运维成本低。
使用限制
应用防护支持防护 Java、PHP 和 Node.js 应用,支持在以下环境中使用:
安装了云安全中心 Agent 的阿里云服务器
第三方厂商云服务器
线下 IDC 服务器
Serverless 应用引擎(SAE)应用实例
支持的操作系统如下:
操作系统类型 | 支持的操作系统 |
Windows(64 位) |
|
Linux(64 位) |
|
支持的能力
攻击检测(Java 应用)
下面介绍应用防护可检测并拦截的攻击类型及相关防护建议。
攻击类型 | 说明 | 防护建议 |
JNI 注入 | JNI 注入是一种通用的 RASP 绕过手段。攻击者获取代码执行权限后,可通过 Java Native 函数调用外部恶意动态链接库,绕过 Java 层安全防护并隐匿恶意行为。 | 服务器可能存在代码执行漏洞,请检查漏洞位置并限制代码执行功能。 |
SQL 注入 | 攻击者将 SQL 命令插入页面请求或 Web 表单的查询字符串中,欺骗服务器执行指定的 SQL 语句,从而获取存在安全漏洞网站的数据。RASP 在运行时监控数据库调用,检测并拦截时间盲注(如 SLEEP 函数)和报错注入(如 extractvalue)。 | SQL 注入由拼接 SQL 语句引起。请尽可能使用预编译处理传入参数,或通过白名单和黑名单限制参数拼接。应用防护在运行时自动阻断时间盲注和报错注入攻击。 |
XXE | XML 外部实体注入漏洞(XML External Entity Injection)。XML 文件引用外部实体时,攻击者通过构造恶意内容可导致任意文件读取、命令执行和内网攻击。 | 请检查应用程序解析 XML 时是否需要加载外部实体。如不需要,请在 XML 解析配置中禁用外部实体。 |
恶意 DNS 查询 | 攻击者可能通过 DNS 协议突破内网网络限制,将敏感信息带出内网,也可能通过 DNS 协议探测内网系统是否存在 SSRF、JNDI 注入等漏洞。 | 恶意 DNS 查询由服务器向用户控制的参数发送请求引起。请检查参数并通过白名单进行限制。 |
恶意反射调用 | RASP 自保护模块,禁止攻击者通过反射方式修改运行时 RASP 的相关数据。 | 服务器可能存在代码执行漏洞。请检查漏洞位置并限制代码执行功能。 |
恶意外连 | SSRF(Server-side request forgery)服务器端请求伪造漏洞,指攻击者通过构造由服务端发起的请求对网站内部系统进行攻击。 | 修复 SSRF 漏洞需要限制服务器请求的目标地址范围,通过白名单机制只允许访问安全的内部资源,并禁用不必要的外部网络访问。 |
恶意文件读写 | Java 提供 RandomAccessFile 用于文件读写操作。使用该 Class 进行文件读写时,如果未对文件路径和文件内容进行限制,攻击者可能读取系统敏感文件或上传木马文件。 | 请检查文件读取和上传是否正常。如出现异常,请检查函数代码并通过黑名单进行限制。 |
恶意文件上传 | 网站提供的文件上传功能如果未对上传文件类型进行限制,攻击者可能通过上传木马文件获取服务器更大权限,造成严重危害。 | 请限制上传文件的类型,禁止上传具有执行权限的文件(如 JSP)。 |
命令执行 | 命令执行漏洞指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令。 | 远程命令执行通常由 Web Shell 或服务器危险代码引起。请检查命令执行位置,如果是 Web Shell 请及时删除;如果是服务器的正常功能,则可通过白名单限制可执行的命令。 |
目录遍历 | 网站配置缺陷可能导致目录被任意浏览,造成隐私信息泄露,攻击者可利用该信息对网站进行攻击。 | 请检查目录遍历操作是否正常。如果异常,请检查函数代码并通过黑名单对相关命令(如"./"和"../")进行限制。 |
内存马注入 | 内存马是一种木马技术,攻击者通过特殊技术手段将木马注入到内存中,可有效绕过 WAF 和主机防御的检测。 | 服务器可能存在代码执行漏洞。请检查漏洞位置并限制代码执行功能。 |
任意文件读取 | 网站提供的文件下载和读取功能如果直接通过绝对路径或目录穿越符进行读取和下载,没有文件路径限制,攻击者可利用此方式获取敏感信息并攻击服务器。 | 请检查文件读取操作是否正常。如果异常,请检查函数代码并使用黑名单对传入参数(如"./"和"../")进行限制。 |
线程注入 | 线程注入是一种通用的 RASP 绕过手段。攻击者获得代码执行权限后,可通过新建线程的方式使 RASP 丢失运行环境的上下文,从而影响 RASP 的防御能力。 | 服务器可能存在代码执行漏洞。请检查漏洞位置并限制代码执行功能。 |
恶意 Attach | Attach API 是 Java 提供的动态修改字节码技术,可实现动态修改运行时应用的字节码。攻击者常通过该手法进行 Agent 型内存马注入。 | 服务器可能存在代码执行漏洞。请检查漏洞位置并限制代码执行功能。 |
JNDI 注入 | 应用进行 JNDI 查询时,若查询的 URL 可被攻击者控制,攻击者可使服务器查询恶意链接并加载恶意 Class 类,实现任意代码执行。 |
|
危险协议使用 | 若服务端访问的 URL 用户端可控,且应用本身未对该 URL 的协议进行限制,攻击者可能通过 file、netdoc 等危险协议读取服务器上的敏感文件。 | 请对 URL 可访问的协议进行限制。 |
反序列化攻击 | Java 反序列化是把字符序列恢复为 Java 对象的过程。在对象生成过程中,若对象包含危险度较高的代码,攻击者可能通过控制生成对象的成员变量在反序列化时实现恶意攻击。 |
|
任意文件删除 | 网站提供的文件删除功能如果未对文件路径进行限制,攻击者可通过绝对路径或目录穿越符删除任意文件,从而对服务器进行攻击。 | 请检查文件删除操作是否正常。如果异常,请检查函数代码并使用黑名单对传入参数(如"./"和"../")进行限制。 |
表达式注入 | 表达式组件支持在运行时查询和处理数据,但很多表达式组件也提供了函数调用等高权限功能。如果未对这些功能做限制且攻击者能控制表达式执行的内容,将可能通过表达式执行任意代码。 | 请对进入表达式的内容进行严格限制,禁止大部分 Java 函数的调用。若是第三方组件漏洞导致,请及时升级组件版本。 |
引擎注入 | Java 提供了较多第三方引擎组件(如 Rhino、Nashorn 等 JS 引擎,Velocity、FreeMarker 等模板引擎),这些引擎通常提供函数调用等高权限功能。如果未做限制且攻击者能控制引擎执行的内容,将可能通过引擎执行任意代码。 | 请对进入引擎文件的内容进行严格限制,禁止大部分 Java 函数的调用。若是第三方组件漏洞导致,请及时升级组件版本。 |
恶意 Beans 绑定 | 部分 Java 框架支持对应用运行时 Beans 的参数绑定。如果未对绑定 Beans 的类型进行限制,攻击者可通过修改敏感 Beans 值破坏应用运行,甚至执行任意代码。 | 请对可绑定的 Beans 类型进行限制,禁止修改类似于 Class、Classloader 类型的 Beans 值。若是第三方组件漏洞导致,请及时升级组件版本。 |
恶意类加载 | 很多 0day、WebShell 的利用均依赖于恶意类加载。恶意类加载成功后,攻击者可通过恶意类初始化取得代码执行权限,进而进行一系列恶意操作。 |
|
JSTL 任意文件包含 | JSP 标准标签库(JSTL)是一个 JSP 标签集合,封装了 JSP 应用的通用核心功能。当用户可控参数被直接拼接到 JSTL 标签中而未做任何限制时,攻击者可构造特殊攻击脚本造成任意文件读取或 SSRF 攻击。 | 尽可能不要将用户可控参数直接拼接到 JSTL 标签上。如果必须这样做,请对该参数的内容进行严格的白名单控制。 |
攻击检测(PHP 应用)
攻击类型 | 说明 | 防护建议 |
恶意文件包含 | PHP 文件包含漏洞允许攻击者通过操纵输入来包含和执行任意文件。该漏洞通常发生在使用 | 建议验证和限制用户输入的文件路径,仅允许包含应用程序目录中的预定义文件,以防止攻击者插入恶意路径。 |
恶意外连 | SSRF(Server-side request forgery)服务器端请求伪造漏洞,指攻击者通过构造由服务端发起的请求对网站内部系统进行攻击。 | 修复 SSRF 漏洞需要限制服务器请求的目标地址范围,通过白名单机制只允许访问安全的内部资源,并禁用不必要的外部网络访问。 |
反序列化 | PHP 反序列化漏洞允许攻击者通过操纵序列化数据执行任意函数,该漏洞通常发生在使用 | 避免直接反序列化不可信数据,使用 |
回调函数执行 | PHP 中的 | 确保传递给 |
恶意文件读写 | 调用文件读写函数时,如果未对文件路径和文件内容进行限制,攻击者可能读取系统敏感文件或上传木马文件。 | 严格验证和限制文件路径,只允许访问预定义的目录,并对文件内容进行安全性检查以防止恶意代码上传。 |
任意代码执行 | 任意代码执行漏洞允许攻击者在服务器上执行任意代码片段,从而获取服务器控制权限或读取、修改敏感数据。该漏洞通常源于程序未对用户输入进行充分验证。 | 建议使用严格的输入验证和输出编码,避免使用 |
任意文件读取 | 如果未对文件读取接口进行过滤和限制,攻击者可以利用绝对路径或目录穿越符读取和下载文件,从而获取敏感信息并攻击服务器。 | 对文件读取接口实施严格的输入验证和路径限制,确保仅允许访问经过白名单验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。 |
任意文件删除 | 文件删除接口如果没有文件路径限制,攻击者可通过绝对路径或目录穿越符进行任意文件删除,从而攻击服务器。 | 对文件删除接口实施严格的输入验证和路径限制,确保仅允许删除经过验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。 |
命令执行 | 命令执行漏洞让攻击者直接向后台服务器远程注入操作系统命令或代码,从而控制后台系统。 | 对所有用户输入进行严格的验证和过滤,避免直接使用未经处理的输入构建操作系统命令,并尽可能使用安全的 API 替代系统命令执行。 |
目录遍历 | 网站配置缺陷可能导致目录被任意浏览,造成隐私信息泄露,攻击者可利用该信息对网站进行攻击。 | 通过配置适当的服务器权限设置和使用 |
恶意文件上传 | 文件上传功能如果未对上传文件类型进行限制,攻击者可能通过上传木马文件获取服务器更大权限,造成严重危害。 | 对上传文件的类型进行严格限制和验证,只允许安全的文件类型,禁止上传具有执行权限的文件后缀(如 php 等),并在服务器端重新检查文件内容以确保其安全。 |
攻击检测(Node.js 应用)
下表介绍应用防护对 Node.js 应用可检测并拦截的攻击类型及相关防护建议。
攻击类型 | 说明 | 防护建议 |
命令执行 | 命令执行漏洞让攻击者直接向后台服务器远程注入操作系统命令或代码,从而控制后台系统。 | 避免使用 |
恶意文件读写 | 使用文件读写函数时,如果未对文件路径和文件内容进行限制,攻击者可能读取系统敏感文件或上传木马文件。 | 严格验证和限制文件路径,只允许访问预定义的目录,并对文件内容进行安全性检查。 |
任意文件读取 | 如果未对文件读取接口进行过滤和限制,攻击者可以利用绝对路径或目录穿越符读取和下载文件,从而获取敏感信息并攻击服务器。 | 对文件读取接口实施严格的输入验证和路径限制,确保仅允许访问经过白名单验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。 |
任意文件写入 | 如果应用程序未正确验证和限制写入文件的类型、大小和内容,攻击者可将恶意文件写入目标系统的指定位置,植入恶意脚本或木马病毒,可能导致服务器被完全控制。 | 对所有文件写入路径做规范化和边界校验,使用 |
任意文件删除 | 文件删除接口如果没有文件路径限制,攻击者可通过绝对路径或目录穿越符进行任意文件删除。 | 对文件删除接口实施严格的输入验证和路径限制,确保仅允许删除经过验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。 |
恶意文件链接 | 如果应用程序在创建文件链接时未对目标路径和链接对象进行严格校验,攻击者可能利用软链接或硬链接将受保护文件映射到可访问位置,从而绕过访问控制,读取、修改或破坏系统敏感文件。 | 不允许外部输入直接控制 link target 或 link path;对链接源和链接目标都做规范化、真实路径校验和业务目录白名单校验;对上传目录、临时目录和解压目录使用 |
恶意外连 | SSRF(Server-side request forgery)服务器端请求伪造漏洞,指攻击者通过构造由服务端发起的请求对网站内部系统进行攻击。 | 修复 SSRF 漏洞需要限制服务器请求的目标地址范围,通过白名单机制只允许访问安全的内部资源,并禁用不必要的外部网络访问。 |
恶意进程创建 | Node.js 中的 fork() 可用于创建新的 Node 进程执行 JS 文件。如果应用程序未对调用场景、执行逻辑或输入参数进行严格限制,攻击者可能利用该能力创建恶意子进程,执行未授权操作,甚至结合脚本加载、命令执行等行为进一步控制服务器。 | 不要用用户输入直接决定 |
恶意进程绑定 | Node.js 中的 process.binding() 可用于访问内部底层模块。如果应用程序未对相关调用行为进行限制,攻击者可能借助该能力访问底层接口、绕过上层安全控制,执行非预期操作,从而导致敏感信息泄露、权限滥用或系统被进一步利用。 | 业务代码、插件、模板、脚本执行环境中不要暴露 |
恶意 MCP 调用 | 在 AI Agent 场景中,MCP(Model Context Protocol)可用于访问外部资源、服务或能力。如果应用程序未对 MCP 服务的调用范围、请求参数和返回内容进行严格校验,攻击者可能诱导 Agent 发起恶意 MCP 调用,访问敏感数据、执行高风险操作或与非可信服务交互,从而对系统安全造成威胁。 | MCP Server 应作为外部不可信组件处理,只允许连接来源可信、版本固定、配置受控的 MCP Server;对 MCP tool name、server name、参数、URL、工作目录和启动命令建立白名单;对会修改文件、执行命令、访问网络、读取凭据的工具启用人工确认或更高风险等级策略;不要把生产密钥直接暴露给 MCP Server;MCP Server 尽量运行在隔离容器或低权限账户中;对 OAuth metadata、远端 URL 和工具返回内容做格式校验、URL 安全校验和审计记录;工具调用产生的底层 |
恶意 Tool 调用 | 在 AI Agent 场景中,Tool 可用于执行外部操作或调用第三方能力。如果应用程序未对 Tool 的可用范围、调用参数和执行结果进行有效限制,攻击者可能通过提示注入或构造恶意输入,诱导 Agent 调用高风险 Tool,执行未授权操作、访问敏感资源,甚至影响主机或业务系统安全。 | Tool 权限按最小权限设计,默认拒绝高危工具,按业务场景显式授权;把工具分成只读、写入、网络、命令执行等风险等级,写入、命令执行、外联类工具应要求确认或策略审批;对每个工具参数做强校验和白名单约束,例如命令模板、可访问目录、允许域名、允许 HTTP 方法;Tool 结果必须视为不可信输入,进入 LLM 上下文前做提示词注入和敏感信息检测;保留 tool name、参数、调用链、runId/toolCallId 和结果摘要审计;检测到读敏感文件后接外联、命令执行后写启动项等危险序列时应阻断或升级告警。 |
应用漏洞防御
应用防护功能可有效防御应用漏洞、0day 漏洞和内存马等攻击行为,防御漏洞的原理如下图所示。在应用漏洞应急响应过程中,借助 RASP 的攻击防护能力,可快速阻断攻击,为修复漏洞争取更多时间。应用防护功能还可协助快速定位风险来源与影响范围。关于应用漏洞的更多信息,请参见查看和处理漏洞。

如果暂时无法修复应用漏洞,可先将应用进程接入 RASP 进行防护。以下为检测出应用漏洞的应用添加 RASP 防护的操作步骤。
登录云安全中心控制台。
在左侧导航栏,选择。在控制台左上角,选择需防护资产所在的区域:中国内地或非中国内地。
在应用漏洞页签,存在RASP支持实时防护标签的漏洞为应用防护支持防护的漏洞,单击对应漏洞操作列的立即防护。

在应用防护接入面板,应用分组名称的下拉列表中选择需要接入的应用分组,并选择对应资产,然后单击确定。
如果不存在所需的应用分组,可以在下拉列表中单击新建应用分组,输入应用分组名称,并单击确定,快速创建应用分组。此处创建的应用分组的防护模式为防护,防护策略组为分组名称。

检测出漏洞的应用接入应用防护后,只有在应用漏洞完成一次漏洞扫描时,在漏洞详情页的待处理漏洞列表中该服务器的操作列才会显示为已防护。
应用行为分析
应用行为分析功能通过对接入的应用程序进行实时监测、收集和分析应用程序的行为数据,并生成报告和可视化展示,帮助您了解应用的攻防详情并进行系统安全加固。更多信息,请参见应用行为分析。
内存马防御(仅支持 Java 应用)
应用防护的 RASP 技术通过分析内存数据可以实时检测内存马,并支持对内存马注入和执行过程进行拦截。更多信息,请参见内存马防御。
弱点检测(仅支持 Java 应用)
下面介绍应用防护可检测的应用弱点类型及相关修复建议。
弱点类型 | 风险等级 | 说明 | 修复建议 |
不安全的 Fastjson 配置 | 高危 | 应用的 Fastjson 开启了反序列化功能,该功能可能被攻击者利用,造成远程命令执行。如非必要,请关闭该功能。 | 请将 Fastjson 的 safemode 设置为 true,或将 autotype 设置为 false。 |
不安全的 log4j 配置 | 高危 | log4j 组件开启了 lookup 功能,攻击者可能通过该功能进行 JNDI 注入,从而造成远程代码执行漏洞。 | 请升级 log4j 到最新版本,或删除 Jar 包中的 org/apache/logging/log4j/core/lookup/JndiLookup.class 文件。更多信息,请参见Apache Log4j2 远程代码执行漏洞(CVE-2021-44228)。 |
不安全的启动参数 | 高危 | 当攻击者可以访问到 JDWP 调试端口的时候,可以通过该功能执行任意代码,造成远程代码执行。 | 如无特殊场景,请及时关闭 JDWP 端口或者避免将 JDWP 端口暴露在公网,谨防长期运行的应用开启了 JDWP 端口。 |
Shiro 弱密钥 | 高危 | Shiro 应用使用了较弱的加密密钥,攻击者可能通过破解密钥,进一步进行反序列化攻击,从而造成远程代码执行。 | 请及时修改应用中的 Shiro 加密密钥。 |
不安全的 JMX 配置 | 中危 | 开启了 JMX 的远程链接,且在认证方面存在风险,攻击者可能会远程连接应用的 JMX 服务并造成命令执行风险。 | 请关闭 JMX 服务的远程连接,或者请使用较为安全的认证口令。 |
不安全的 Rhino 配置 | 中危 | Rhino 框架中包含了危险的 properties,攻击者可能通过这些 properties 进行远程代码执行攻击。 | 先升级 Rhino 到最新版本,然后使用 SafeStandardObjects 定义 Rhino 的上下文,防止 JavaScript 引擎调用 Java 代码。 下面是使用 SafeStandardObjects 定义 Rhino 上下文的示例: |
不安全的 Spring 配置 | 中危 | Spring Actuator 模块开启了部分端点:heapDump、env、restart、refresh、trace、jolokia、h2-console 等,可能造成敏感信息泄露或者远程代码执行漏洞。 | 如无特殊场景,请关闭对应功能。 |
脆弱的登录凭证 | 中危 | 应用登录口令安全性较弱,攻击者可能通过爆破弱口令登录系统,从而获取敏感信息甚至服务器权限。 | 请及时将该应用的密码修改为复杂密码。 |
不安全的 JNDI 配置 | 低危 | 应用存在不安全的 useCodebaseOnly/rmi-trustURLCodebase/ldap-trustURLCodebase 参数设置,可能存在 JNDI 注入风险。 | 请将 JDK 升级到最新版本。如果无法升级,请在应用启动时添加以下启动参数: |
不安全的 XML 实体配置 | 低危 | XML 解析外部实体功能已开启,这可能导致应用遭受 XXE 攻击。 | 如无特殊场景,请勿使用外部实体。 |
数据库弱口令 | 低危 | 应用连接数据库时使用弱口令,攻击者可能通过该弱口令连接数据库造成敏感信息泄露或远程命令执行。 | 请及时将应用连接数据库的密码修改为复杂密码。 |