
CVE-2026-9806 est une vulnérabilité de script intersite stocké (Stored XSS) affectant les versions de CTI Transmute antérieures à la version corrigée.
CVE-2026-9806 est une vulnérabilité de type Cross-Site Scripting stocké (Stored XSS) affectant les versions de CTI Transmute antérieures à la version corrigée.La faille existe dans le panneau de notification, où les messages de notification contenant des noms de conversions contrôlés par l'utilisateur sont rendus dans le menu déroulant de la cloche de notification à l'aide de innerHTML sans assainissement approprié. Si un attaquant peut créer ou influencer un nom de conversion qui apparaît dans une notification, du JavaScript arbitraire peut s'exécuter dans le navigateur d'un utilisateur authentifié lorsqu'il ouvre le panneau de notification.
Le panneau de notification construit les entrées de notification à l'aide de innerHTML. Les messages de notification incluent les noms de conversions, qui sont contrôlés par l'utilisateur. Étant donné que ces valeurs sont insérées directement dans le DOM sans encodage HTML ni assainissement, tout HTML ou JavaScript contenu dans un nom de conversion est interprété par le navigateur.
Conceptuellement :
Attacker creates or influences a convert name
│
▼
Convert name stored in notification
│
▼
User opens notification panel
│
▼
Notification rendered using innerHTML
│
▼
Browser parses HTML
│
▼
Embedded JavaScript executes
La vulnérabilité est causée par le rendu d'entrées non fiables comme HTML plutôt que comme texte brut.
Attacker
│
▼
Creates or modifies a malicious convert name
│
▼
Notification containing the convert name is generated
│
▼
Victim opens notification panel
│
▼
Notification dropdown inserts message using innerHTML
│
▼
Browser executes malicious JavaScript
│
▼
Actions performed within victim's authenticated session
Supposons qu'une conversion soit créée avec un nom spécialement conçu contenant du HTML.
Plus tard, un autre utilisateur authentifié reçoit une notification faisant référence à cette conversion. Lorsque l'utilisateur clique sur la cloche de notification, l'application insère le message de notification dans la page à l'aide de innerHTML.
Au lieu d'afficher le nom de conversion sous forme de texte, le navigateur l'interprète comme du HTML et exécute le JavaScript intégré, permettant à l'attaquant d'effectuer des actions dans la session du navigateur de la victime.
Un utilisateur légitime crée une conversion nommée :
Monthly Sales Report
L'application la stocke dans la base de données.
Un attaquant saisit à la place un nom contenant du HTML :
Quarterly Report <b>Important</b>
L'application stocke :
Quarterly Report <b>Important</b>
Plus tard, un autre utilisateur reçoit une notification telle que :
Convert "Quarterly Report <b>Important</b>" completed successfully.
Si l'application fait :
notification.innerHTML = response.message;
le navigateur rend :
Conversion Quarterly Report Important terminée avec succès.
car est interprété comme du HTML.
Si l'application utilise à la place :
notification.textContent = response.message;
le navigateur affiche le texte littéral :
Convert "Quarterly Report <b>Important</b>" completed successfully.
Aucun HTML n'est interprété.
Une exploitation réussie peut permettre à un attaquant de :
La vulnérabilité affecte principalement la confidentialité et l'intégrité.
| Métrique | Score |
|---|---|
| CVSS v4.0 (CNA) | 6.3 (Moyen) |
Le NVD n'a pas encore attribué sa propre évaluation CVSS.
Remarque : L'éditeur n'a pas publié le code source vulnérable exact. Ce qui suit illustre le modèle vulnérable.
// User-controlled convert name
const message = response.notificationMessage;
// Unsafe rendering
notificationDropdown.innerHTML += `
<div class="notification">
${message}
</div>
`;
innerHTML traite le message de notification comme du HTML. Si le message contient du HTML ou du JavaScript provenant d'un nom de conversion malveillant, le navigateur l'analyse et l'exécute.
const notification = document.createElement("div");
notification.className = "notification";
// Safe rendering
notification.textContent = response.notificationMessage;
notificationDropdown.appendChild(notification);
L'utilisation de textContent garantit que le message de notification est rendu sous forme de texte brut plutôt que de HTML. Comme indiqué dans la remédiation publiée, le problème a été corrigé en construisant les éléments de notification à l'aide de méthodes DOM et en assignant le contenu via textContent plutôt que via innerHTML, empêchant ainsi l'exécution de scripts intégrés.