什么是应用防护

更新时间:
复制 MD 格式

应用防护功能基于 RASP(Runtime Application Self-Protection)技术,在应用运行时内部检测并阻断攻击。您无需修改应用代码,只需在主机、容器或 Serverless 应用(SAE)环境中部署 RASP 探针,即可防御应用漏洞、0day 漏洞和内存马等攻击。

产品概述

应用防护基于 RASP 技术,在应用程序内部通过钩子(Hook)关键函数,实时监测应用运行时与其他系统的交互行为。当应用出现可疑操作时,RASP 会根据当前上下文识别并阻断攻击。

该技术为主机上的 Web 业务进程提供应用漏洞、0day 漏洞和内存马攻击等防护能力。

image

核心优势

  • 防御已知与未知漏洞:RASP 在应用运行时内部监控关键函数的执行,不依赖漏洞特征库,因此能够防御 0day 漏洞和未知攻击手法,无需等待安全补丁即可提供即时防护。

  • 应对加密流量:RASP 从应用程序内部获取已解密的请求数据,不受网络层加密影响,即使请求经过复杂编码或加密,只要应用执行的最终动作与预期身份和行为不匹配,即可检测到异常。

  • 低误报漏报:RASP 分析关键函数操作的实际数据,可忽略无法真实执行的攻击Payload,从而减少误报和漏报;无论攻击入口如何变化,都无法绕开关键函数的执行过程。

  • 攻击溯源与漏洞定位:RASP 为安全人员和开发人员提供详尽的攻击链路,包括攻击原始 Payload、代码调用堆栈等信息,便于漏洞定位、复现和修复。

  • 部署简便:在控制台接入即可部署,无需维护和更新具体规则,伴随应用启动而自动运行,运维成本低。

使用限制

应用防护支持防护 Java、PHP 和 Node.js 应用,支持在以下环境中使用:

  • 安装了云安全中心 Agent 的阿里云服务器

  • 第三方厂商云服务器

  • 线下 IDC 服务器

  • Serverless 应用引擎(SAE)应用实例

支持的操作系统如下:

操作系统类型

支持的操作系统

Windows(64 位)

  • Windows Server 2025

  • Windows Server 2022

  • Windows Server 2019

  • Windows Server 2016

  • Windows Server 2012

  • Windows Server 2008

  • Windows 11

  • Windows 10

Linux(64 位)

  • Alibaba Cloud Linux

  • AlmaLinux

  • Anolis OS

  • CentOS 6、7、8

  • CentOS Stream

  • Debian 8 及以上版本

  • Gentoo

  • OpenSUSE

  • RHEL 6、7、8、9

  • Rocky Linux

  • SUSE Linux Enterprise Server

  • Ubuntu 14.04 及以上版本

  • 中标麒麟 V7、银河麒麟 V10

  • TencentOS

  • Oracle Linux 7、8、9

  • openEuler 20.03、22.03

  • EulerOS

  • Amazon Linux 2、2023

支持的能力

攻击检测(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 类,实现任意代码执行。

  • 若该漏洞源于第三方组件,请及时升级组件版本。

  • 若为自写 JNDI 查询代码,请对查询的 URL 进行限制,禁止危险协议的查询。

危险协议使用

若服务端访问的 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 的利用均依赖于恶意类加载。恶意类加载成功后,攻击者可通过恶意类初始化取得代码执行权限,进而进行一系列恶意操作。

  • 若恶意类加载通过 WebShell 控制,请及时删除 WebShell。

  • 如果恶意类加载由框架导致,请及时升级框架版本。

JSTL 任意文件包含

JSP 标准标签库(JSTL)是一个 JSP 标签集合,封装了 JSP 应用的通用核心功能。当用户可控参数被直接拼接到 JSTL 标签中而未做任何限制时,攻击者可构造特殊攻击脚本造成任意文件读取或 SSRF 攻击。

尽可能不要将用户可控参数直接拼接到 JSTL 标签上。如果必须这样做,请对该参数的内容进行严格的白名单控制。

攻击检测(PHP 应用)

攻击类型

说明

防护建议

恶意文件包含

PHP 文件包含漏洞允许攻击者通过操纵输入来包含和执行任意文件。该漏洞通常发生在使用include()require()include_once()require_once()函数时。

建议验证和限制用户输入的文件路径,仅允许包含应用程序目录中的预定义文件,以防止攻击者插入恶意路径。

恶意外连

SSRF(Server-side request forgery)服务器端请求伪造漏洞,指攻击者通过构造由服务端发起的请求对网站内部系统进行攻击。

修复 SSRF 漏洞需要限制服务器请求的目标地址范围,通过白名单机制只允许访问安全的内部资源,并禁用不必要的外部网络访问。

反序列化

PHP 反序列化漏洞允许攻击者通过操纵序列化数据执行任意函数,该漏洞通常发生在使用unserialize()函数时。

避免直接反序列化不可信数据,使用json_decode()或其他安全替代方法,或在必要时严格验证和过滤反序列化的数据来源。

回调函数执行

PHP 中的array_map()array_filter()等回调函数,当参数外部可控时,攻击者可借此执行任意函数乃至控制整个系统。

确保传递给array_map()array_filter()等函数的回调函数名不受用户输入控制,并通过白名单机制验证所有允许使用的回调函数。

恶意文件读写

调用文件读写函数时,如果未对文件路径和文件内容进行限制,攻击者可能读取系统敏感文件或上传木马文件。

严格验证和限制文件路径,只允许访问预定义的目录,并对文件内容进行安全性检查以防止恶意代码上传。

任意代码执行

任意代码执行漏洞允许攻击者在服务器上执行任意代码片段,从而获取服务器控制权限或读取、修改敏感数据。该漏洞通常源于程序未对用户输入进行充分验证。

建议使用严格的输入验证和输出编码,避免使用eval()include()等函数直接处理用户输入,并保持所有库和框架的安全更新。

任意文件读取

如果未对文件读取接口进行过滤和限制,攻击者可以利用绝对路径或目录穿越符读取和下载文件,从而获取敏感信息并攻击服务器。

对文件读取接口实施严格的输入验证和路径限制,确保仅允许访问经过白名单验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。

任意文件删除

文件删除接口如果没有文件路径限制,攻击者可通过绝对路径或目录穿越符进行任意文件删除,从而攻击服务器。

对文件删除接口实施严格的输入验证和路径限制,确保仅允许删除经过验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。

命令执行

命令执行漏洞让攻击者直接向后台服务器远程注入操作系统命令或代码,从而控制后台系统。

对所有用户输入进行严格的验证和过滤,避免直接使用未经处理的输入构建操作系统命令,并尽可能使用安全的 API 替代系统命令执行。

目录遍历

网站配置缺陷可能导致目录被任意浏览,造成隐私信息泄露,攻击者可利用该信息对网站进行攻击。

通过配置适当的服务器权限设置和使用.htaccess等文件限制目录访问,确保敏感目录不可被未经授权的用户浏览。

恶意文件上传

文件上传功能如果未对上传文件类型进行限制,攻击者可能通过上传木马文件获取服务器更大权限,造成严重危害。

对上传文件的类型进行严格限制和验证,只允许安全的文件类型,禁止上传具有执行权限的文件后缀(如 php 等),并在服务器端重新检查文件内容以确保其安全。

攻击检测(Node.js 应用)

下表介绍应用防护对 Node.js 应用可检测并拦截的攻击类型及相关防护建议。

攻击类型

说明

防护建议

命令执行

命令执行漏洞让攻击者直接向后台服务器远程注入操作系统命令或代码,从而控制后台系统。

避免使用execspawn等函数执行用户可控输入,如需使用请通过白名单限制可执行的命令。

恶意文件读写

使用文件读写函数时,如果未对文件路径和文件内容进行限制,攻击者可能读取系统敏感文件或上传木马文件。

严格验证和限制文件路径,只允许访问预定义的目录,并对文件内容进行安全性检查。

任意文件读取

如果未对文件读取接口进行过滤和限制,攻击者可以利用绝对路径或目录穿越符读取和下载文件,从而获取敏感信息并攻击服务器。

对文件读取接口实施严格的输入验证和路径限制,确保仅允许访问经过白名单验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。

任意文件写入

如果应用程序未正确验证和限制写入文件的类型、大小和内容,攻击者可将恶意文件写入目标系统的指定位置,植入恶意脚本或木马病毒,可能导致服务器被完全控制。

对所有文件写入路径做规范化和边界校验,使用 path.resolve / realpath 后确认目标只能落在业务允许目录内;不要把用户输入直接作为完整路径;优先使用服务端生成的文件名和固定目录;禁止写入系统目录、用户启动脚本、SSH、cron、systemd、包管理配置和应用密钥文件;容器和生产环境尽量使用只读根文件系统、最小文件权限和独立临时目录;上传、导出、缓存等功能应按业务类型设置扩展名、大小和目录白名单,并记录审计日志。

任意文件删除

文件删除接口如果没有文件路径限制,攻击者可通过绝对路径或目录穿越符进行任意文件删除。

对文件删除接口实施严格的输入验证和路径限制,确保仅允许删除经过验证的文件,并使用黑名单对传入参数(如"./"和"../")进行限制。

恶意文件链接

如果应用程序在创建文件链接时未对目标路径和链接对象进行严格校验,攻击者可能利用软链接或硬链接将受保护文件映射到可访问位置,从而绕过访问控制,读取、修改或破坏系统敏感文件。

不允许外部输入直接控制 link target 或 link path;对链接源和链接目标都做规范化、真实路径校验和业务目录白名单校验;对上传目录、临时目录和解压目录使用 lstat 识别符号链接,敏感操作尽量拒绝跟随 symlink;创建、清理、打包文件时先确认真实路径仍在允许目录内;高风险目录使用独立低权限用户运行,避免应用进程对系统配置、凭据目录和宿主挂载目录拥有读写权限。

恶意外连

SSRF(Server-side request forgery)服务器端请求伪造漏洞,指攻击者通过构造由服务端发起的请求对网站内部系统进行攻击。

修复 SSRF 漏洞需要限制服务器请求的目标地址范围,通过白名单机制只允许访问安全的内部资源,并禁用不必要的外部网络访问。

恶意进程创建

Node.js 中的 fork() 可用于创建新的 Node 进程执行 JS 文件。如果应用程序未对调用场景、执行逻辑或输入参数进行严格限制,攻击者可能利用该能力创建恶意子进程,执行未授权操作,甚至结合脚本加载、命令执行等行为进一步控制服务器。

不要用用户输入直接决定 fork() 的模块路径和启动参数;可被 fork 的脚本应使用固定枚举或服务端白名单;启动前用绝对路径解析并确认脚本位于受信任应用目录内;参数只传业务字段,不传 shell 片段、文件路径、解释器参数或环境变量覆盖;子进程使用最小权限、独立工作目录和受限环境变量;对需要执行用户任务的场景,优先使用受限 worker、队列或沙箱,而不是动态加载任意本地脚本。

恶意进程绑定

Node.js 中的 process.binding() 可用于访问内部底层模块。如果应用程序未对相关调用行为进行限制,攻击者可能借助该能力访问底层接口、绕过上层安全控制,执行非预期操作,从而导致敏感信息泄露、权限滥用或系统被进一步利用。

业务代码、插件、模板、脚本执行环境中不要暴露 process.bindingprocess._linkedBinding;禁止把外部参数传入这些接口;对支持插件、规则、模板、Agent Skill 的应用,应在沙箱中移除或冻结 process 高危能力;生产环境开启 RASP 的 process binding hook 和告警;依赖包中如出现直接调用原生 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 安全校验和审计记录;工具调用产生的底层 child_processfshttpnet 行为仍应由 RASP 拦截。

恶意 Tool 调用

在 AI Agent 场景中,Tool 可用于执行外部操作或调用第三方能力。如果应用程序未对 Tool 的可用范围、调用参数和执行结果进行有效限制,攻击者可能通过提示注入或构造恶意输入,诱导 Agent 调用高风险 Tool,执行未授权操作、访问敏感资源,甚至影响主机或业务系统安全。

Tool 权限按最小权限设计,默认拒绝高危工具,按业务场景显式授权;把工具分成只读、写入、网络、命令执行等风险等级,写入、命令执行、外联类工具应要求确认或策略审批;对每个工具参数做强校验和白名单约束,例如命令模板、可访问目录、允许域名、允许 HTTP 方法;Tool 结果必须视为不可信输入,进入 LLM 上下文前做提示词注入和敏感信息检测;保留 tool name、参数、调用链、runId/toolCallId 和结果摘要审计;检测到读敏感文件后接外联、命令执行后写启动项等危险序列时应阻断或升级告警。

应用漏洞防御

应用防护功能可有效防御应用漏洞、0day 漏洞和内存马等攻击行为,防御漏洞的原理如下图所示。在应用漏洞应急响应过程中,借助 RASP 的攻击防护能力,可快速阻断攻击,为修复漏洞争取更多时间。应用防护功能还可协助快速定位风险来源与影响范围。关于应用漏洞的更多信息,请参见查看和处理漏洞

image

如果暂时无法修复应用漏洞,可先将应用进程接入 RASP 进行防护。以下为检测出应用漏洞的应用添加 RASP 防护的操作步骤。

  1. 登录云安全中心控制台

  2. 在左侧导航栏,选择风险治理 > 漏洞管理。在控制台左上角,选择需防护资产所在的区域:中国内地非中国内地

  3. 应用漏洞页签,存在RASP支持实时防护标签的漏洞为应用防护支持防护的漏洞,单击对应漏洞操作列的立即防护

    image.png

  4. 应用防护接入面板,应用分组名称的下拉列表中选择需要接入的应用分组,并选择对应资产,然后单击确定

    如果不存在所需的应用分组,可以在下拉列表中单击新建应用分组,输入应用分组名称,并单击确定,快速创建应用分组。此处创建的应用分组的防护模式防护防护策略组分组名称

    image.png

    检测出漏洞的应用接入应用防护后,只有在应用漏洞完成一次漏洞扫描时,在漏洞详情页的待处理漏洞列表中该服务器的操作列才会显示为已防护

应用行为分析

应用行为分析功能通过对接入的应用程序进行实时监测、收集和分析应用程序的行为数据,并生成报告和可视化展示,帮助您了解应用的攻防详情并进行系统安全加固。更多信息,请参见应用行为分析

内存马防御(仅支持 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 上下文的示例:

 package com.aliyun.sample;

  import org.mozilla.javascript.Context;
  import org.mozilla.javascript.Scriptable;

  public class RhinoSecurityExample {
      public static void main(String[] args) {
          Context ctx = Context.enter();
          // Scriptable scope = ctx.initStandardObjects(); // 不安全的写法
          Scriptable scope = ctx.initSafeStandardObjects(); // 安全写法
          ctx.setOptimizationLevel(-1);
          String str = "var test={};";
          str += "test.call=function(){return 'Successful!';};";
          str += "test.call()";  // 修改:只返回JavaScript结果,不调用Java
          try {
              //传入并执行javascript代码
              Object result = ctx.evaluateString(scope, str, "", 1, null);
              System.out.println("JavaScript执行结果: " + result);
          } catch (Exception e) {
              e.printStackTrace();
          } finally {
              Context.exit();
          }
      }
  }

不安全的 Spring 配置

中危

Spring Actuator 模块开启了部分端点:heapDump、env、restart、refresh、trace、jolokia、h2-console 等,可能造成敏感信息泄露或者远程代码执行漏洞。

如无特殊场景,请关闭对应功能。

脆弱的登录凭证

中危

应用登录口令安全性较弱,攻击者可能通过爆破弱口令登录系统,从而获取敏感信息甚至服务器权限。

请及时将该应用的密码修改为复杂密码。

不安全的 JNDI 配置

低危

应用存在不安全的 useCodebaseOnly/rmi-trustURLCodebase/ldap-trustURLCodebase 参数设置,可能存在 JNDI 注入风险。

请将 JDK 升级到最新版本。如果无法升级,请在应用启动时添加以下启动参数:

-Djava.rmi.server.useCodebaseOnly=true -Dcom.sun.jndi.rmi.object.trustURLCodebase=false -Dcom.sun.jndi.ldap.object.trustURLCodebase=false

不安全的 XML 实体配置

低危

XML 解析外部实体功能已开启,这可能导致应用遭受 XXE 攻击。

如无特殊场景,请勿使用外部实体。

数据库弱口令

低危

应用连接数据库时使用弱口令,攻击者可能通过该弱口令连接数据库造成敏感信息泄露或远程命令执行。

请及时将应用连接数据库的密码修改为复杂密码。