Функция createElement() используется для создания React-элементов. Она принимает три параметра:
const element = createElement(type, props, ...children)
1⃣
type: может быть либо строкой с именем тега (т.е. div становится <div></div>), либо классом компонента, который будет вызван для построения элемента.2⃣
props: может быть либо объектом, либо null. Пары ключ/значение в объекте будут присвоены создаваемому элементу как атрибуты, если type — строка с именем тега, или как свойства, если type — это класс компонента.3⃣
...children: дочерний узел (узлы) создаваемого элемента.Если ты можешь передать ввод из источника в sink
createElement() через один или несколько из этих параметров, он может влиять на генерацию HTML и достичь DOM XSS/CSS injection (в зависимости от версии).Предполагая,что ты контролируешь десериализованный JSON или сериализованный HTML, которые передаются в
createElement(), то параметры, которые ты можешь задать, определяют, чего ты можешь достичь ⬆️Ресурсы:
⏳ Подробнее про эксплуатацию Script Injection Flaws в приложениях ReactJS
⏳ Статья Nick Bloor про эскалацию createElement-XSS до RCE в Electron-приложениях через CVE-2023-2033
