NiceGUI vulnerable to XSS via Code Injection during client-side element function execution
Summary
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.
Attack Vector
An attacker crafts a malicious URL with a payload as a query parameter. If the application passes this parameter as a method name to any of the affected APIs, the payload is sent to the client via WebSocket and executed via eval().
Example: /?method=alert(document.cookie) combined with application code like:
element.run_method(user_provided_method_name)
Impact
- Cookie/token theft
- DOM manipulation (phishing, fake login forms)
- Actions performed as the victim user
Affected Methods
Element.run_method()Element.get_computed_prop()AgGrid.run_grid_method()AgGrid.run_row_method()EChart.run_chart_method()JsonEditor.run_editor_method()Xterm.run_terminal_method()Leaflet.run_map_method()Leaflet.run_layer_method()LeafletLayer.run_method()
Fix
- Use
json.dumps()for proper escaping of method/property names inrun_method()andget_computed_prop() - Remove the
eval()fallback fromrunMethod()innicegui.js— method names that are not found on the element now raise an error instead of being evaluated as arbitrary JavaScript
Migration
Code that previously passed JavaScript functions as method names needs to use ui.run_javascript() instead:
# Before:
row = await grid.run_grid_method('g => g.getDisplayedRowAtIndex(0).data')
# After:
row = await ui.run_javascript(f'return getElement({grid.id}).api.getDisplayedRowAtIndex(0).data')
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| Python (PyPI) | nicegui | < 3.8.0 | 3.8.0 |
Verweise
- CVSS-Vektor
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N- Schwäche (CWE)
CWE-79- Plattform
- Python (PyPI)
- Paket
nicegui- Veröffentlicht
- 24.02.2026
- Aktualisiert
- 11.10.2026 13:19
Quellen und Lizenzen
OSV / GitHub Advisory Database - PYSEC-2026-2232 - PyPA Advisory Database; CC BY 4.0
OSV / GitHub Advisory Database - GHSA-78qv-3mpx-9cqq - CC BY 4.0
Schwachstellenhistorie: nicegui
Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 17
- Erste → letzte
- 04.2024 05.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 0
Verteilung nach Schweregrad
- Hoch 6
- Mittel 11
Veröffentlichungen pro Jahr
- 2024: 1
- 2025: 5
- 2026: 11
-
NiceGUI vulnerable to XSS via Code Injection during client-side element function execution dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.