xmldom : l’injection XML via une sérialisation CDATA non sécurisée permet l’insertion de balises contrôlées par un attaquant
Plateforme
nodejs
Composant
xmldom
## Résumé `@xmldom/xmldom` permet d’insérer des chaînes contrôlées par un attaquant contenant le terminateur CDATA `]]>` dans un nœud `CDATASection`. Lors de la sérialisation, `XMLSerializer` a émis le contenu CDATA tel quel sans rejeter ni diviser en toute sécurité le terminateur. Par conséquent, les données destinées à rester en texte seul sont devenues **un balisage XML actif** dans la sortie sérialisée, permettant l’injection de structure XML et la manipulation de la logique métier en aval. La séquence `]]>` n’est pas autorisée à l’intérieur du contenu CDATA et doit être rejetée ou gérée en toute sécurité lors de la sérialisation. ([MDN Web Docs](https://developer.mozilla.org/)) ### Surface d’attaque `Document.createCDATASection(data)` est le point d’entrée le plus direct, mais ce n’est pas le seul. La spécification WHATWG DOM ne valide intentionnellement pas `]]>` dans les méthodes de mutation ; seul `createCDATASection` comporte cette protection. Les chemins suivants permettent donc également à `]]>` d’entrer dans un nœud CDATASection et d’atteindre le sérialiseur : - `CharacterData.appendData()` - `CharacterData.replaceData()` - `CharacterData.insertData()` - Affectation directe à `.data` - Affectation directe à `.textContent` (Remarque : l’affectation à `.nodeValue` ne met **pas** à jour `.data` dans cette implémentation)
Comment corriger
Aucun correctif officiel disponible. Recherchez des alternatives ou surveillez les mises à jour.
Surveillez vos dépendances automatiquement
Recevez des alertes quand de nouvelles vulnérabilités affectent vos projets.
Commencer gratuitement