IPBUF安全漏洞报告
English
CVE-2026-22738 CVSS 9.8 严重

CVE-2026-22738 Spring AI SpEL注入致远程代码执行漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-22738
漏洞类型
SpEL注入
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Spring AI

相关标签

SpEL注入远程代码执行Spring AIRCE严重漏洞

漏洞概述

Spring AI 的 SimpleVectorStore 组件存在 SpEL 注入漏洞。当应用将用户提供的输入作为过滤表达式键使用时,攻击者可利用该漏洞注入恶意表达式,从而在服务器端执行任意代码。该漏洞无需认证且无需用户交互即可远程利用,对系统机密性、完整性和可用性造成严重影响。

技术细节

该漏洞源于 Spring AI 的 SimpleVectorStore 类在处理过滤表达式时,直接调用了 SpEL (Spring Expression Language) 解析引擎处理用户输入。当开发人员将未经严格清洗的用户可控数据传递给过滤操作的 key 参数时,恶意构造的 SpEL 表达式会被服务器解析并执行。攻击者可以利用此特性调用 Java Runtime 类执行系统命令,或者访问敏感的 Spring Bean。由于漏洞利用条件低(无需认证、无需交互),攻击者可轻易获取服务器最高权限。

攻击链分析

STEP 1
1. 信息收集
攻击者识别出目标应用使用了 Spring AI 框架,并且 SimpleVectorStore 功能被启用。
STEP 2
2. 构造载荷
攻击者构造包含恶意 SpEL 表达式的数据包,该表达式旨在执行系统命令(如反弹Shell)。
STEP 3
3. 发送恶意请求
攻击者向目标服务器发送请求,将恶意载荷注入到过滤表达式的 key 参数中。
STEP 4
4. 执行代码
服务器端 SimpleVectorStore 解析 SpEL 表达式,执行攻击者指定的任意代码,导致服务器被控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Vulnerable Code Example in Java import org.springframework.ai.vectorstore.SimpleVectorStore; import org.springframework.ai.vectorstore.SearchRequest; public class VulnerableService { private SimpleVectorStore vectorStore; public void search(String userInput) { // Vulnerability: userInput is directly used as a filter expression key // Attacker input: "T(java.lang.Runtime).getRuntime().exec('calc')" SearchRequest request = SearchRequest.query("test").withFilterExpression(userInput); vectorStore.similaritySearch(request); } }

影响范围

Spring AI >= 1.0.0, < 1.0.5
Spring AI >= 1.1.0, < 1.1.4

防御指南

临时缓解措施
建议立即升级 Spring AI 至修复版本。若无法升级,请立即排查代码中所有使用 SimpleVectorStore 的位置,确保未将用户输入直接用作过滤表达式键。可通过添加输入校验逻辑(如仅允许字母数字)或使用正则表达式拦截 SpEL 特殊字符(如 T(, #{, .getClass() 等)作为临时缓解方案。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表