AnythingLLM — это приложение, которое превращает фрагменты контента в контекст, который любой LLM может использовать в качестве ссылок во время общения. В версии 1.11.1 и более ранних версиях AnythingLLM Desktop содержит XSS-уязвимость фазы потоковой передачи в конвейере рендеринга чата, которая перерастает в удаленное выполнение кода в операционной системе хоста из-за небезопасной конфигурации Electron. Это работает с настройками по умолчанию и не требует никакого взаимодействия с пользователем, кроме обычного использования чата.
Пользовательский рендеринг изображений markdown-it в frontend/src/utils/chat/markdown.js интерполирует token.content непосредственно в атрибут alt без экранирования сущности HTML. Компонент PromptReply визуализирует эти выходные данные через опасноSetInnerHTML без очистки DOMPurify — в отличие от HistoricalMessage, который правильно применяет DOMPurify.sanitize().
Показать оригинальное описание (EN)
AnythingLLM is an application that turns pieces of content into context that any LLM can use as references during chatting. In 1.11.1 and earlier, AnythingLLM Desktop contains a Streaming Phase XSS vulnerability in the chat rendering pipeline that escalates to Remote Code Execution on the host OS due to insecure Electron configuration. This works with default settings and requires no user interaction beyond normal chat usage. The custom markdown-it image renderer in frontend/src/utils/chat/markdown.js interpolates token.content directly into the alt attribute without HTML entity escaping. The PromptReply component renders this output via dangerouslySetInnerHTML without DOMPurify sanitization — unlike HistoricalMessage which correctly applies DOMPurify.sanitize().
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Mintplexlabs Anythingllm
cpe:2.3:a:mintplexlabs:anythingllm:*:*:*:*:*:*:*:*
|
— |
<= 1.11.1
|