
Divulgación de CVE-2025-57298.
Kotaemon es un sistema de preguntas y respuestas sobre documentos basado en RAG (Generación Aumentada por Recuperación) de código abierto que proporciona una interfaz web para consultar documentos subidos como PDF, Word y archivos Excel.
Existe una vulnerabilidad de cross-site scripting (XSS) almacenada en la canalización de renderizado de documentos de Kotaemon. El contenido controlado por el usuario es procesado por un LLM y renderizado en la interfaz web después de la conversión de markdown a HTML sin una sanitización adecuada, lo que permite que elementos HTML proporcionados por el atacante se inyecten de forma persistente en la página.
Cuando se sube un documento, el sistema activa automáticamente una solicitud de resumen (por ejemplo, "resume este archivo") como parte del flujo de procesamiento normal. Como resultado, cualquier documento subido se pasa implícitamente a través de la canalización de análisis y renderizado de markdown, haciendo que la vulnerabilidad sea explotable solo con la subida del documento sin requerir interacción explícita del usuario.
Se confirma que las siguientes versiones de Kotaemon son vulnerables:
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",
],
)
La aplicación depende de la función markdown.markdown() para convertir contenido markdown generado por LLM a HTML. Sin embargo, la salida HTML convertida se renderiza directamente en el navegador sin sanitización HTML ni escape de salida.
Como resultado, la sintaxis de markdown que produce elementos HTML sin procesar —más notablemente la sintaxis de imagen ![]()— se convierte en HTML ejecutable como etiquetas `` y se almacena en la salida de la conversación.
"summary" means ""
La capacidad de inyectar elementos HTML persistentes permite a los atacantes:
/logout)La explotación requiere solo la subida de un documento y ocurre automáticamente durante el resumen, sin necesidad de interacción adicional del usuario.
El renderizado de HTML sin sanitizar puede permitir la ejecución de JavaScript a través de manejadores de eventos dependiendo del contexto de renderizado del frontend.



Este informe fue preparado por minnggyuu. (Equipo 404 Not Found, WhiteHat School 3.ª Cohorte, Corea del Sur)
Correo electrónico: [email protected]
GitHub: https://github.com/minnggyuu