{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-59319","assignerOrgId":"dcf2e128-44bd-42ed-91e8-88f912c1401d","state":"PUBLISHED","assignerShortName":"vmware","dateReserved":"2026-07-04T18:14:10.167Z","datePublished":"2026-08-27T18:04:46.944Z","dateUpdated":"2026-08-28T22:47:00.784Z"},"containers":{"cna":{"providerMetadata":{"orgId":"dcf2e128-44bd-42ed-91e8-88f912c1401d","shortName":"vmware","dateUpdated":"2026-08-27T18:04:46.944Z"},"title":"RediSearch Tag Injection in RedisChatMemoryRepository Allows Cross-Conversation Data Exposure","problemTypes":[{"descriptions":[{"lang":"en","description":"CWE-943 Improper Neutralization of Special Elements in Data Query Logic","type":"CWE"}]}],"impacts":[{"descriptions":[{"lang":"en","value":"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."}]}],"affected":[{"vendor":"Spring","product":"Spring AI","versions":[{"status":"affected","version":"2.0.0","versionType":"custom"}],"defaultStatus":"unaffected"}],"descriptions":[{"lang":"en","value":"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.\nSpring AI 2.0.0","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>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.</p><p>Spring AI 2.0.0</p>"}]}],"references":[{"url":"https://spring.io/security/cve-2026-59319"}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","baseScore":4.3,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"NONE","availabilityImpact":"NONE"}}],"source":{"discovery":"UNKNOWN"}},"adp":[{"problemTypes":[{"descriptions":[{"type":"CWE","cweId":"CWE-943","lang":"en","description":"CWE-943 Improper Neutralization of Special Elements in Data Query Logic"}]}],"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-28T22:43:10.318082Z","id":"CVE-2026-59319","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2026-08-28T22:47:00.784Z"}}]}}