CVE-2026-21872 NiceGUI apps are vulnerable to XSS which uses `ui.sub_pages` and render arbitrary user-provided links
An attacker can execute arbitrary JavaScript in a victim's browser via malicious links in NiceGUI sub-pages, requiring user interaction.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-21872?
CVE-2026-21872 is a medium-severity cross-site scripting vulnerability in zauberzeug nicegui, published on 8 Jan 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official description
NiceGUI is a Python-based UI framework. From versions 2.22.0 to 3.4.1, an unsafe implementation in the click event listener used by ui.sub_pages, combined with attacker-controlled link rendering on the page, causes XSS when the user actively clicks on the link. This issue has been patched in version 3.5.0.
Weakness: CWE-79
Which versions are affected by CVE-2026-21872?
3 open source packages ship an affected version, including nicegui. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
nicegui PyPI | From 2.22.0 | 3.5.0 |
nicegui PyPI | From 2.22.0 | 3.5.0 |
nicegui PyPI | From 2.22.0 | 3.5.0 |
Products include Zauberzeug Nicegui.
How do I fix CVE-2026-21872?
Upgrade nicegui to 3.5.0 or later.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2026-21872 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-21872 exists.
Other vulnerabilities in zauberzeug nicegui
- CVE-2026-25732 NiceGUI's Path Traversal via Unsanitized FileUpload.name Enables Arbitrary File Write
- CVE-2025-66645 NiceGUI Path Traversal Vulnerability in app.add_media_files() Allows Arbitrary File Reading
- CVE-2026-21873 Zero-click XSS in all NiceGUI apps which uses `ui.sub_pages`
- CVE-2026-33332 NiceGUI's unvalidated chunk size parameter in media routes can cause memory exhaustion
- CVE-2026-27156 NiceGUI has XSS via Code Injection
Sources
Also known as GHSA-m7j5-rq9j-6jj9, PYSEC-2026-1701.