---
id: CVE-2026-59319
title: >-
  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 esca…
summary: >-
  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 esca…
severity: medium
cvss: 4.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N'
cwe:
  - CWE-943
published: '2026-08-27'
updated: '2026-08-28'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-59319'
references:
  - url: 'https://spring.io/security/cve-2026-59319'
    label: security@vmware.com
tags:
  - nvd
epss: 0.00301
epssPercentile: 0.20382
ingestedAt: '2026-08-29T21:42:36.013Z'
---

## Overview

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

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
