CVE-2026-40978:CosmosDBVectorStore.doDelete() 存在 SQL 注入漏洞
高危 | 2026年4月27日 | CVE-2026-40978
描述
Spring AI 的 CosmosDBVectorStore 存在 SQL 注入漏洞。攻击者可能通过构造特殊的文档 ID,在执行 doDelete() 删除操作时注入并执行非预期 SQL 查询。
该问题主要影响使用 CosmosDBVectorStore,并将用户提供的输入作为文档 ID 传入的应用。如果应用没有对文档 ID 做严格校验、过滤或服务端绑定,攻击者就可能利用特殊字符或拼接逻辑改变原本的删除查询语句,进而影响数据删除范围或触发异常查询行为。
在 AI 应用中,向量存储通常用于知识库、文档检索、聊天记忆、语义搜索和检索增强生成流程。若删除操作存在 SQL 注入风险,可能导致非授权数据被删除、查询条件被篡改,或者影响同一向量库中其他用户、其他租户的数据完整性。对于多租户知识库、企业内部文档问答和带有用户隔离要求的系统,应优先排查该风险。
受影响的 Spring 产品和版本
受影响产品为 Spring AI,涉及以下版本:
● 1.0.0 - 1.0.x
● 1.1.0 - 1.1.x
缓解措施
受影响版本的用户应升级到对应的修复版本。升级后,相关删除逻辑会得到修正,降低通过文档 ID 注入 SQL 查询的风险。
无需采取额外缓解措施。建议受影响用户尽快升级至修复版本,并在升级后对文档删除、批量删除、权限校验和异常文档 ID 请求进行回归验证。
处理建议
建议先确认应用是否使用 Spring AI 的 CosmosDBVectorStore,并检查是否允许用户输入直接作为文档 ID 参与删除操作。如果文档 ID 来自前端参数、接口请求、外部系统同步或批量任务,应重点检查是否存在未校验、可拼接或可篡改的情况。
对于涉及多用户或多租户的系统,文档删除操作不应只依赖客户端传入的文档 ID。建议在服务端绑定用户身份、租户标识、知识库范围和文档归属关系,确保请求只能删除当前权限范围内的内容。
同时,应排查近期删除日志和数据库操作记录,关注异常文档 ID、特殊字符、批量删除失败、删除范围异常扩大等情况。若发现可疑操作,应及时确认影响范围,并根据业务情况恢复数据、收敛接口权限和加强输入校验。