Skip to main content

Spring AI CVE-2026-59319

| EUVDEUVD-2026-67200 MEDIUM
Improper Neutralization of Special Elements in Data Query Logic (CWE-943)
2026-08-27 vmware GHSA-7r3j-5666-wc3c
4.3
CVSS 3.1 · Vendor: vmware
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to target application
  2. Delivery
    Identify API endpoint invoking findByMetadata()
  3. Exploit
    Craft metadata value with RediSearch escape sequences (e.g., x} | *)
  4. Execution
    Submit request with injected payload
  5. Persist
    Injected query breaks out of tag clause
  6. Impact
    Retrieve all indexed chat messages across all conversations

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Query language parameterization
Exploitation Conditions

Exploitation requires all of the following: (1) the application uses Spring AI 2.0.0 with RedisChatMemoryRepository backed by Redis and the RediSearch module; (2) the application exposes a code path that calls findByMetadata() with a value derived from user-controlled input targeting a tag-typed metadata field; (3) the attacker holds a valid low-privilege authenticated session in the application (PR:L per the provided CVSS vector). Exploitation is bounded by the authentication requirement - unauthenticated internet-based attacks are not possible. Applications that do not route user input to findByMetadata(), or that apply their own RediSearch-aware sanitization before the call, are not exploitable even when running the affected Spring AI version.

Impact

The CVSS 3.1 score of 4.3 (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) reflects moderate real-world risk that is accurately characterized by the vector. Network reachability with low attack complexity means exploitation is technically straightforward, but the PR:L requirement - a valid authenticated session - rules out unauthenticated internet-scale abuse. The confidentiality impact is formally rated Low, yet the practical consequence of reading all chat messages across every conversation in the index may represent meaningful exposure depending on application context: conversations could contain PII, session context, business logic, or sensitive user data. No EPSS score was included in the provided intelligence, preventing probabilistic exploitation comparison. The CVE does not appear in the CISA KEV catalog, and no POC code was referenced, indicating no confirmed widespread active exploitation at time of analysis. Actual risk is conditional on whether a given deployment passes user-controlled values to findByMetadata() on tag-typed fields - applications that do not exercise this code path with untrusted input are not exposed regardless of version.

Exploit ScenarioDerived

An authenticated user of an application backed by Spring AI's Redis chat memory submits a crafted metadata filter value - for example, x} | * - to a search or retrieval endpoint that internally calls findByMetadata() on a tag-typed field. Because the value is not escaped, the injected wildcard breaks out of the intended tag clause, and the resulting RediSearch query returns chat messages from all users' conversations stored in the index. No public exploit code is known to exist at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 27, 2026

RediSearch query injection in Spring AI 2.0.0's RedisChatMemoryRepository grants authenticated low-privilege users read access to all indexed chat messages across every conversation in the Redis index. The findByMetadata() method omits the RediSearchUtil.escape() call consistently applied by sibling methods (get(), clear(), findByTimeRange()), allowing attacker-controlled metadata values to break out of RediSearch tag query clauses via injected syntax such as x} | * and match all documents in the index. No public exploit code has been identified at time of analysis, and the CVE does not appear in the CISA KEV catalog.

RemediationAI

Consult the official Spring AI security advisory at https://spring.io/security/cve-2026-59319 for the vendor-confirmed patched release, as no specific fix version was included in the available intelligence data. As an immediate compensating control, developers should ensure any value passed to RedisChatMemoryRepository.findByMetadata() from user-controlled input is sanitized with RediSearchUtil.escape() before being forwarded - this replicates the pattern already applied in get(), clear(), and findByTimeRange() within the same class. Implementing allowlist validation at the application layer to restrict the set of permitted metadata keys and values further limits the injection surface. If findByMetadata() with user-supplied tag-field values is not a required feature, removing or disabling that code path entirely eliminates the exposure with no functional trade-off.

Affected VersionsENISA

Spring AI 2.0.0

Affected Packages

euvd spring_ai no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Spring AI is a Java framework from the VMware/Spring ecosystem for integrating large language model capabilities into applications. Its RedisChatMemoryRepository uses Redis with the RediSearch module to index and query conversational memory. RediSearch supports a structured query language where tag fields are queried using curly-brace syntax - for example, @fieldname:{value}. The vulnerability (CPE: cpe:2.3:a:spring:spring_ai:*:*:*:*:*:*:*:*) arises because findByMetadata() interpolates caller-supplied values directly into RediSearch query strings without invoking RediSearchUtil.escape() to neutralize special characters, an inconsistency relative to the escape-safe patterns in the same class. Injecting characters such as closing braces or pipe operators terminates the tag clause early and allows appending wildcard expressions that match every document in the RediSearch index. No CWE identifier was assigned in the available data, but the root cause maps conceptually to improper neutralization of special elements in a query (analogous to CWE-943).

Know when Spring gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vmware) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 4.3 MEDIUM

Network-reachable via application layer; PR:L because a valid authenticated session is required; C:L for cross-conversation message read with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (vmware).

CVSS VectorVendor: vmware

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

DescriptionCVE.org

RedisChatMemoryRepository.findByMetadata() builds RediSearch tag and text queries from caller-supplied metadata values without applying RediSearchUtil.escape(), unlike get(), clear(), and findByTimeRange() in the same class which do escape their inputs. An application that passes user-controlled values to findByMetadata() on a tag-typed metadata field allows an attacker to inject RediSearch syntax (e.g. x} | *) that breaks out of the tag clause and matches all indexed chat messages across every conversation in the index. Spring AI 2.0.0

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Low
newer AI integration framework, limited production deployment footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

NoSQL injection exploits databases that don't use traditional SQL syntax-like MongoDB, CouchDB, or Redis-by manipulating queries through unsanitized user input.

More in Spring

View all
CVE-2025-41243 CRITICAL POC
10.0 Sep 16

Spring Cloud Gateway Server Webflux may be vulnerable to Spring Environment property modification. Rated critical severi

CVE-2025-70982 CRITICAL POC
9.9 Jan 26

Access control bypass in SpringBlade v4.5.0 importUser function allows low-privileged users to import sensitive user dat

CVE-2026-22739 HIGH POC
8.6 Mar 24

Spring Cloud Config Server contains a path traversal vulnerability when using the native file system backend, allowing u

CVE-2025-41242 MEDIUM POC
5.9 Aug 18

Spring Framework MVC applications can be vulnerable to a “Path Traversal Vulnerability” when deployed on a non-compliant

CVE-2025-70983 CRITICAL
9.9 Jan 23

SpringBlade v4.5.0 has an access control flaw in authRoutes allowing low-privileged users to escalate to admin through t

CVE-2026-41699 CRITICAL
9.8 Jun 11

Remote code execution in Spring for GraphQL versions 1.3.0-1.3.8, 1.4.0-1.4.5, and 2.0.0-2.0.3 allows unauthenticated at

CVE-2026-59313 CRITICAL
9.8 Aug 27

Server-Sent Events (SSE) stream corruption affects Spring MVC applications built on the functional web framework across

CVE-2026-22738 CRITICAL
9.8 Mar 27

Spring AI versions 1.0.0 through 1.0.4 and 1.1.0 through 1.1.3 allow unauthenticated remote code execution through Sprin

CVE-2026-41855 CRITICAL
9.8 Jun 09

Unsafe JSON deserialization in Spring Framework's JMS message converters (MappingJackson2MessageConverter and JacksonJso

CVE-2025-41232 CRITICAL
9.1 May 21

Spring Security Aspects may not correctly locate method security annotations on private methods. Rated critical severity

CVE-2026-59283 CRITICAL
9.1 Aug 27

Safety-guard bypass in the Spring Framework SpEL engine (VMware/Broadcom) lets attacker-controlled expression input esca

CVE-2026-40982 CRITICAL
9.1 May 07

Directory traversal in Spring Cloud Config server module allows remote unauthenticated attackers to read arbitrary files

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy