IPBUF安全漏洞报告
English
CVE-2026-22744 CVSS 7.5 高危

CVE-2026-22744 Spring AI Redis Store 注入漏洞

披露日期: 2026-03-27

漏洞信息

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

相关标签

注入漏洞Spring AIRedisRediSearchCWE-74

漏洞概述

Spring AI项目的spring-ai-redis-store组件存在严重的安全漏洞。当应用程序使用Redis作为向量存储,并将用户控制的字符串作为TAG字段的过滤值时,`RedisFilterExpressionConverter`组件的`stringValue()`方法未能正确处理输入,直接将未转义的字符插入到RediSearch查询的`@field:{VALUE}`块中。这导致攻击者可以通过构造特殊的恶意字符串来篡改查询逻辑。该漏洞无需认证即可通过网络利用,主要威胁数据的机密性,可能导致敏感信息泄露。

技术细节

该漏洞的核心在于Spring AI在构建RediSearch查询语句时缺乏必要的输入验证和转义机制。RediSearch使用特定的语法(如`@field:{value}`)来处理TAG字段,其中`|`等字符具有特殊的逻辑含义(表示OR逻辑)。在受影响的版本中,`RedisFilterExpressionConverter`将用户输入直接拼接到查询字符串中。例如,攻击者若输入`tag1|tag2`,原本意图是查找名为`tag1|tag2`的标签,但实际生成的查询变为查找`tag1`或`tag2`。这使得攻击者能够绕过原本的访问控制逻辑,检索到本无权访问的数据。由于CVSS评分为7.5,属于高危漏洞,且利用条件无门槛(无需认证、无需用户交互),建议尽快修复。

攻击链分析

STEP 1
1. 侦察
攻击者识别出目标应用程序使用了Spring AI框架,并且后端存储配置为Redis。
STEP 2
2. 漏洞利用
攻击者向应用程序的搜索接口发送请求,在TAG过滤参数中注入RediSearch特殊字符(如 '|')。
STEP 3
3. 注入执行
Spring AI的RedisFilterExpressionConverter捕获该参数,直接将其拼接到@field:{VALUE}查询块中,未进行转义。
STEP 4
4. 数据泄露
Redis执行被篡改的查询逻辑,返回符合注入条件(如OR逻辑)的数据,导致攻击者获取未授权的敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-22744: Spring AI RedisStore RediSearch Injection * This demonstrates how the application constructs a query using untrusted input. */ import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder; public class VulnerableSearchExample { public void performSearch(String userProvidedTag) { // Scenario: Attacker provides input with RediSearch syntax // Input: "restricted|public" (Attempts to search for 'restricted' OR 'public') String maliciousInput = "restricted|public"; // The application constructs a filter expression FilterExpressionBuilder builder = new FilterExpressionBuilder(); var filter = builder.eq("documentType", maliciousInput); // Vulnerable library call: RedisFilterExpressionConverter.stringValue() // Resulting RediSearch Query part: @documentType:{restricted|public} // Impact: Returns documents of type 'restricted' OR 'public', bypassing intended access control. SearchRequest request = SearchRequest.query("*").withFilterExpression(filter); // vectorStore.similaritySearch(request); } }

影响范围

Spring AI 1.0.0 - 1.0.5
Spring AI 1.1.0 - 1.1.4

防御指南

临时缓解措施
如果暂时无法升级版本,建议在应用程序代码层面实施严格的输入清洗机制。对于所有用于构建TAG过滤器的用户输入,必须检查并移除RediSearch保留字符(如逗号、竖线、空格、连字符等)。此外,应确保Redis服务仅对受信任的应用服务器开放,并对数据库访问进行最小权限配置,以减少潜在的泄露范围。

参考链接

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