
CVE-2025-57298 Divulgazione.
Kotaemon è un sistema di QA basato su documenti RAG (Retrieval-Augmented Generation) open-source che fornisce un'interfaccia web per interrogare documenti caricati come PDF, Word e file Excel.
Esiste una vulnerabilità di cross-site scripting (XSS) memorizzato nella pipeline di rendering dei documenti di Kotaemon. Il contenuto controllato dall'utente viene elaborato da un LLM e renderizzato nell'interfaccia web dopo la conversione da markdown a HTML senza una corretta sanificazione, consentendo l'iniezione persistente di elementi HTML forniti dall'attaccante nella pagina.
Quando un documento viene caricato, il sistema attiva automaticamente una richiesta di sintesi (ad esempio, "summary this file") come parte del normale flusso di elaborazione. Di conseguenza, qualsiasi documento caricato viene implicitamente passato attraverso il parsing markdown e la pipeline di rendering, rendendo la vulnerabilità sfruttabile tramite il solo caricamento del documento senza richiedere un'interazione esplicita dell'utente.
Le seguenti versioni di Kotaemon sono confermate vulnerabili:
kotaemon/blob/main/libs/ktem/ktem/utils/render.py
@staticmethod
def table(text: str) -> str:
"""Render table from markdown format into HTML"""
text = replace_mardown_header(text)
return markdown.markdown(
text,
extensions=[
"markdown.extensions.tables",
"markdown.extensions.fenced_code",
],
)
L'applicazione si affida alla funzione markdown.markdown() per convertire il contenuto markdown generato dal LLM in HTML.
Tuttavia, l'output HTML convertito viene renderizzato direttamente nel browser senza sanificazione HTML o escape dell'output.
Di conseguenza, la sintassi markdown che produce elementi HTML grezzi—in particolare la sintassi delle immagini ![]()—viene convertita in HTML eseguibile come tag `` e memorizzata nell'output della conversazione.
"summary" means ""
La capacità di iniettare elementi HTML persistenti consente agli attaccanti di:
/logout)Lo sfruttamento richiede solo il caricamento di un documento e avviene automaticamente durante la sintesi, senza necessità di ulteriore interazione da parte dell'utente.
Il rendering HTML non sanificato può consentire l'esecuzione di JavaScript tramite gestori di eventi a seconda del contesto di rendering del frontend.



Questo report è stato preparato da minnggyuu. (Team 404 Not Found, WhiteHat School 3rd Cohort, Corea del Sud)
Email: [email protected]
GitHub: https://github.com/minnggyuu