
CVE-2025-57298 Divulgação.
Kotaemon é um sistema de QA de documentos baseado em RAG (Retrieval-Augmented Generation) de código aberto que fornece uma interface web para consultar documentos enviados, como arquivos PDF, Word e Excel.
Uma vulnerabilidade de cross-site scripting (XSS) armazenado existe no pipeline de renderização de documentos do Kotaemon. O conteúdo controlado pelo usuário é processado por um LLM e renderizado na interface web após a conversão de markdown para HTML sem a devida sanitização, permitindo que elementos HTML fornecidos pelo atacante sejam injetados de forma persistente na página.
Quando um documento é enviado, o sistema aciona automaticamente uma solicitação de sumarização (por exemplo, "resumir este arquivo") como parte do fluxo normal de processamento. Como resultado, qualquer documento enviado é implicitamente passado pelo pipeline de análise e renderização de markdown, tornando a vulnerabilidade explorável apenas pelo upload do documento, sem exigir interação explícita do usuário.
As seguintes versões do Kotaemon são confirmadas como vulneráveis:
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",
],
)
A aplicação depende da função markdown.markdown() para converter conteúdo markdown gerado por LLM em HTML. No entanto, a saída HTML convertida é renderizada diretamente no navegador sem sanitização HTML ou escape de saída.
Como resultado, a sintaxe markdown que produz elementos HTML brutos — principalmente a sintaxe de imagem ![]() — é convertida em HTML executável, como tags ``, e armazenada na saída da conversação.
"summary" means ""
A capacidade de injetar elementos HTML persistentes permite que atacantes:
/logout)A exploração requer apenas o upload de um documento e ocorre automaticamente durante a sumarização, sem interação adicional do usuário.
A renderização de HTML sem sanitização pode permitir a execução de JavaScript por meio de manipuladores de eventos, dependendo do contexto de renderização do frontend.



Este relatório foi preparado por minnggyuu. (Team 404 Not Found, WhiteHat School 3rd Cohort, Coreia do Sul)
Email: [email protected]
GitHub: https://github.com/minnggyuu