
CVE-2025-57298 Offenlegung.
Kotaemon ist ein Open-Source-Dokument-QA-System auf Basis von RAG (Retrieval-Augmented Generation), das eine Weboberfläche zum Abfragen hochgeladener Dokumente wie PDF-, Word- und Excel-Dateien bereitstellt.
In der Dokument-Rendering-Pipeline von Kotaemon besteht eine Schwachstelle für gespeichertes Cross-Site-Scripting (XSS). Benutzergesteuerter Inhalt wird von einem LLM verarbeitet und nach der Markdown-zu-HTML-Konvertierung ohne ordnungsgemäße Bereinigung in der Weboberfläche gerendert, sodass vom Angreifer bereitgestellte HTML-Elemente dauerhaft in die Seite injiziert werden können.
Wenn ein Dokument hochgeladen wird, löst das System automatisch eine Zusammenfassungsanfrage (z. B. „summary this file") als Teil des normalen Verarbeitungsablaufs aus. Infolgedessen wird jedes hochgeladene Dokument implizit durch die Markdown-Parsing- und Rendering-Pipeline geleitet, wodurch die Schwachstelle allein durch das Hochladen eines Dokuments ausgenutzt werden kann, ohne dass eine explizite Benutzerinteraktion erforderlich ist.
Die folgenden Kotaemon-Versionen sind nachweislich betroffen:
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",
],
)
Die Anwendung verlässt sich auf die Funktion markdown.markdown(), um von einem LLM erzeugte Markdown-Inhalte in HTML zu konvertieren.
Der konvertierte HTML-Output wird jedoch ohne HTML-Bereinigung oder Ausgabe-Escaping direkt im Browser gerendert.
Dadurch wird Markdown-Syntax, die rohe HTML-Elemente erzeugt – insbesondere die Bildsyntax ![]() – in ausführbares HTML wie ``-Tags konvertiert und im Konversationsverlauf gespeichert.
"summary" means ""
Die Möglichkeit, persistente HTML-Elemente zu injizieren, erlaubt es Angreifern:
/logout)Die Ausnutzung erfordert lediglich das Hochladen eines Dokuments und erfolgt automatisch während der Zusammenfassung, ohne zusätzliche Benutzerinteraktion.
Unbereinigtes HTML-Rendering kann je nach Frontend-Rendering-Kontext die Ausführung von JavaScript über Event-Handler ermöglichen.



Dieser Bericht wurde von minnggyuu erstellt. (Team 404 Not Found, WhiteHat School 3rd Cohort, Südkorea)
Email: [email protected]
GitHub: https://github.com/minnggyuu