RedisChatMemoryRepository.findByMetadata() строит теги RediSearch и текстовые запросы из значений метаданных, предоставленных вызывающей стороной, без применения RediSearchUtil.escape(), в отличие от get(),clear() и findByTimeRange() в том же классе, которые экранируют свои входные данные. Приложение, которое передает контролируемые пользователем значения в findByMetadata() в поле метаданных с теговым типом, позволяет злоумышленнику внедрить синтаксис RediSearch (например, x} | *), который выходит за пределы предложения тега и сопоставляет все проиндексированные сообщения чата для каждого разговора в индексе.
Весенний ИИ 2.0.0
Показать оригинальное описание (EN)
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
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Vmware Spring_Ai
cpe:2.3:a:vmware:spring_ai:*:*:*:*:*:*:*:*
|
2.0.0
|
2.0.1
|