Media

NiceGUI has a Reflected XSS

  • Publicada: 03.10.2025
  • Actualizado: 11.10.2026 13:19

Summary

A Cross-Site Scripting (XSS) risk exists in NiceGUI when developers render unescaped user input into the DOM using ui.html(). Before version 3.0, NiceGUI does not enforce HTML or JavaScript sanitization, so applications that directly combine components like ui.input() with ui.html() without escaping may allow attackers to execute arbitrary JavaScript in the user’s browser. Same holds for ui.chat_message with HTML content.

Applications that directly reflect user input via ui.html() (or ui.chat_message in HTML mode) are affected. This may lead to client-side code execution (e.g., session hijacking or phishing). Applications that do not pass untrusted input into ui.html() are not affected.

Details

NiceGUI allows developers to bind user input directly into the DOM using ui.html() or ui.chat_message(). However, the library does not enforce any HTML or JavaScript sanitization, which potentially creates a dangerous attack surface for developers unaware of this behavior.

The vulnerable code path appears when combining these:

python
ui.input("XSS Input:", on_change=inject)
def inject(e):
    ui.html(f'{e.value}')

In this setup, any input provided by the user is rendered verbatim into the page’s DOM via innerHTML, enabling injection of script-based payloads.

PoC (Proof of Concept)

  1. Create a simple app:

    python
    from nicegui import ui
    
    @ui.page('/')
    def main():
        def inject(e):
            ui.html(f'{e.value}')  # vulnerable use
    
        ui.input("XSS Input:", on_change=inject)
    
    ui.run()
  2. Run the app:

    bash
    python app.py
  3. In the browser, input the following payload:

    html
    <img src=x onerror=alert('XSS')>
  4. Observe the JavaScript alert popup:

    XSS

Impact

  • Vulnerability type: Reflected Cross-Site Scripting (XSS)
  • Attack vector: User input rendered as raw HTML
  • Affected users: Any NiceGUI-based application using ui.html() or ui.chat_message() with HTML content from user input

Software afectado

Haz clic en una tecnología para ver todas sus vulnerabilidades.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) nicegui < 3.0.0 3.0.0

Referencias

Puntuación CVSS 6.1/10
Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Debilidad (CWE)
CWE-79
Plataforma
Python (PyPI)
Paquete
nicegui
Publicada
03.10.2025
Actualizado
11.10.2026 13:19

Fuentes y licencias

OSV / GitHub Advisory Database - PYSEC-2026-1699 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-8c95-hpq2-w46f - CC BY 4.0

Historial de vulnerabilidades: nicegui

Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.

Todas (17) en el archivo
Entradas en total
17
Primera → última
04.2024 05.2026
Sin corrección
0
Explotada en ataques
0

Distribución por gravedad

  • Alta 6
  • Media 11

Divulgaciones por año

  1. 2024: 1
  2. 2025: 5
  3. 2026: 11
Gravedad:
  1. Alta · 7.2 CVE-2026-21873 >= 2.22.0, < 3.5.0 3.5.0
  2. NiceGUI has a Reflected XSS esta entrada
    Media · 6.1 CVE-2025-53354 < 3.0.0 3.0.0
  3. Alta · 7.5 CVE-2025-21618 < 2.9.1 2.9.1
  4. Alta · 8.2 CVE-2024-32005 >= 1.4.6, < 1.4.21 1.4.21

Identifica las vulnerabilidades de tu aplicación

Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.