NiceGUI — это платформа пользовательского интерфейса на основе Python. До версии 3.8.0 несколько API-интерфейсов NiceGUI, выполняющих методы для элементов на стороне клиента (Element.run_method(), AgGrid.run_grid_method(), EChart.run_chart_method() и другие), использовали запасной вариант eval() в функции runMethod() на стороне JavaScript. Когда в качестве имени метода передается управляемый пользователем ввод, злоумышленник может внедрить произвольный код JavaScript, который выполняется в браузере жертвы.
Кроме того, «Element.run_method()» и «Element.get_computed_prop()» использовали интерполяцию строк вместо «json.dumps()» для имени метода/свойства, что позволяло внедрить кавычки, чтобы вырваться из предполагаемого строкового контекста. Версия 3.8.0 содержит исправление.
Показать оригинальное описание (EN)
NiceGUI is a Python-based UI framework. Prior to version 3.8.0, several NiceGUI APIs that execute methods on client-side elements (`Element.run_method()`, `AgGrid.run_grid_method()`, `EChart.run_chart_method()`, and others) use an `eval()` fallback in the JavaScript-side `runMethod()` function. When user-controlled input is passed as the method name, an attacker can inject arbitrary JavaScript that executes in the victim's browser. Additionally, `Element.run_method()` and `Element.get_computed_prop()` used string interpolation instead of `json.dumps()` for the method/property name, allowing quote injection to break out of the intended string context. Version 3.8.0 contains a fix.
Характеристики атаки
Последствия
Строка CVSS v3.1