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

CVE-2026-22743 Spring AI Cypher注入漏洞

披露日期: 2026-03-27

漏洞信息

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

相关标签

Cypher注入Spring AICVE-2026-22743NoSQL注入RCE

漏洞概述

Spring AI的spring-ai-neo4j-store组件存在Cypher注入漏洞。攻击者可通过控制过滤表达式键,利用Neo4jVectorFilterExpressionConverter中的doKey()方法未正确处理反引号字符的缺陷,注入恶意Cypher代码。该漏洞无需认证且无交互即可被利用,可能导致数据库敏感信息泄露。

技术细节

该漏洞位于Spring AI项目的spring-ai-neo4j-store模块中,具体类为Neo4jVectorFilterExpressionConverter。当应用程序使用该组件进行向量检索并传入用户控制的字符串作为过滤表达式的键时,代码会调用doKey()方法。该方法仅去除输入字符串中的双引号,随后直接将其拼接到反引号包裹的Cypher查询语句中(例如构建类似node.`metadata.${key}`的结构)。由于未对输入中的反引号字符进行转义或过滤,攻击者可以通过精心构造包含反引号的恶意Payload,闭合原有的属性访问器并注入任意的Cypher查询语句。鉴于CVSS向量显示无需认证且通过网络攻击,攻击者可远程利用此漏洞读取Neo4j数据库中的敏感数据。

攻击链分析

STEP 1
侦察
攻击者识别出目标应用程序使用了Spring AI框架,并且配置了Neo4j作为向量数据库,同时暴露了接受用户输入过滤条件的API接口。
STEP 2
构造Payload
攻击者构造一个特殊的字符串作为过滤表达式的键(Key),其中包含反引号(`)字符。例如使用“key` OR 1=1 //”来闭合原本的Cypher属性访问器并注入布尔逻辑。
STEP 3
发送请求
攻击者向目标API发送HTTP请求,将包含恶意Payload的过滤参数注入到请求体中。
STEP 4
执行注入
服务器端的Neo4jVectorFilterExpressionConverter处理该请求,doKey()方法直接拼接未转义的恶意字符串,导致Neo4j数据库执行了攻击者构造的非法Cypher查询语句。
STEP 5
信息泄露
数据库执行查询后,将结果返回给攻击者。由于C:H(高机密性影响),攻击者可能成功读取数据库中的敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// This is a conceptual PoC demonstrating the injection of a backtick to break out of the Cypher property accessor. // Scenario: Passing a malicious filter key to a vulnerable Spring AI endpoint. import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder; public class Exploit { public static void main(String[] args) { FilterExpressionBuilder builder = new FilterExpressionBuilder(); // Normal usage: builder.eq("author", "John") // Malicious usage: The key contains a backtick to escape the property context // The target query structure is likely: node.`metadata.{key}` = value // Payload: "key` OR 1=1 RETURN 1 //" // Resulting Cypher snippet: node.`metadata.key` OR 1=1 RETURN 1 //` = value String maliciousKey = "author` OR 1=1 RETURN 1 //"; // If the application passes this key to the converter: // The converter strips double quotes (none here) and embeds it. // The generated Cypher query becomes syntactically altered, executing the injected logic. System.out.println("Injecting key: " + maliciousKey); // In a real exploit, this would trigger a database call returning data or error messages confirming injection. } }

影响范围

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

防御指南

临时缓解措施
如果无法立即升级,应在应用网关或业务逻辑层添加严格的输入校验中间件,拦截所有包含反引号(`)字符的过滤键参数,从根本上阻断注入语法的形成。

参考链接

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