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().
A custom image renderer based on markdown-it (file frontend/src/utils/chat/markdown.js) inserts the token.content value directly into the alt attribute without HTML entity encoding. The PromptReply component renders this result via dangerouslySetInnerHTML without sanitization using DOMPurify — in contrast to the HistoricalMessage component, which correctly applies DOMPurify.sanitize(). The embedded malicious JavaScript code is then executed in the Electron context, where insecure default configuration allows escaping the browser sandbox and executing code at the operating system level.
An attacker can execute arbitrary code on the host operating system (RCE), which potentially leads to complete compromise of the victim's machine, including data theft, malware installation, or lateral movement in the network.
AnythingLLM Desktop should be updated to a version containing the patch available in commit 9e2d144dc8be6fab29f560f5bcdaa9ef7dbb4214. Details are available in the vendor's GitHub repository and in security advisory GHSA-rrmw-2j6x-4mf2.
AnythingLLM Desktop version 1.11.1 and earlier (Mintplex Labs product)
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:HMintplexlabs Anythingllm
APPMintplexlabs≤ 1.11.1
Related vulnerabilities
Nieprawidłowa kontrola dostępu w AnythingLLM — nieautoryzowana manipulacja bazą danych
Brak autoryzacji w AnythingLLM — destrukcyjny dostęp do VectorDB
RCE poprzez command injection w Mintplex Labs AnythingLLM
Mass assignment w anything-llm umożliwia nieautoryzowane tworzenie kont admin
Path Traversal w AnythingLLM — odczyt i usunięcie plików przez logo filename