{"id":"CVE-2025-66470","aliases":["GHSA-2m4f-cg75-76w2","PYSEC-2026-1696"],"title":"NiceGUI Stored/Reflected XSS in ui.interactive_image via unsanitized SVG content","summary":"NiceGUI Stored/Reflected XSS in ui.interactive_image via unsanitized SVG content","severity":"medium","cvss":6.1,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","vendor":"nicegui","product":"nicegui","ecosystem":"pip","affected":["nicegui < 3.4.0"],"patched":["nicegui 3.4.0"],"published":"2025-12-08","updated":"2026-07-07","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/GHSA-2m4f-cg75-76w2","references":[{"url":"https://github.com/zauberzeug/nicegui/security/advisories/GHSA-2m4f-cg75-76w2"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-66470"},{"url":"https://github.com/zauberzeug/nicegui/commit/58ad0b36e19922de16bbc79ea3ddd29851b1a3e3"},{"url":"https://github.com/zauberzeug/nicegui"}],"tags":["osv","pip","exploit-available"],"epss":0.00254,"epssPercentile":0.15124,"ingestedAt":"2026-07-08T18:25:44.559Z","exploits":{"github":1,"githubRepos":["https://github.com/Jmehta10/CVE-2025-66470"],"checkedAt":"2026-09-26T09:05:34.704Z"},"exploitAvailable":true,"slug":"CVE-2025-66470","body":"## Overview\n\n### Summary\nA Cross-Site Scripting (XSS) vulnerability exists in the `ui.interactive_image` component of NiceGUI (v3.3.1 and earlier). The component renders SVG content using Vue's `v-html` directive without any sanitization. This allows attackers to inject malicious HTML or JavaScript via the SVG `<foreignObject>` tag.\n\n### Details\nThe vulnerability is located in `nicegui/elements/interactive_image.js`.\nThe component uses the following code to render content:\n```javascript\n<g v-html=\"content\"></g>\n```\nVue's v-html directive renders raw HTML strings into the DOM. If an application allows user-controlled input to be passed to the content property of an interactive image, an attacker can embed a <foreignObject> tag containing malicious scripts, bypassing typical image restrictions.\n\n### PoC\n```python\nfrom nicegui import ui\n\n@ui.page('/')\ndef main():\n    ui.label('NiceGUI SVG XSS PoC')\n    \n    # Standard image loading\n    img = ui.interactive_image('[https://picsum.photos/640/360](https://picsum.photos/640/360)')\n    \n    # Payload: Embeds raw HTML execution inside SVG\n    # This executes immediately when the image component is rendered\n    img.content = (\n        '<foreignObject>'\n        '<body xmlns=\"[http://www.w3.org/1999/xhtml](http://www.w3.org/1999/xhtml)\">'\n        '<img src=x onerror=alert(\"XSS-SVG\")>'\n        '</body>'\n        '</foreignObject>'\n    )\n\nui.run()\n```\n\n### Impact\n- Type: Reflected / Stored XSS (depending on data source)\n\n- Severity: Moderate\n\n- Impact: Attackers can inject malicious scripts that execute whenever the image component is rendered or updated. This is particularly dangerous for dashboards or multi-user applications displaying user-generated content or annotations.\n\n## Affected packages\n\n- `nicegui < 3.4.0`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `nicegui 3.4.0`","depth":"twilight","depthScore":46,"depthScoreParts":{"impact":33.6,"likelihood":0.1,"exploitation":12,"ransomware":0},"changes":[{"seq":4864,"id":"CVE-2025-66470","ts":1788887212304,"field":"exploit_available","old":"false","new":"true"},{"seq":3747,"id":"CVE-2025-66470","ts":1788886328934,"field":"exploit_available","old":"true","new":"false"},{"seq":2592,"id":"CVE-2025-66470","ts":1788883009983,"field":"exploit_available","old":"false","new":"true"},{"seq":1621,"id":"CVE-2025-66470","ts":1788882410301,"field":"exploit_available","old":"true","new":"false"},{"seq":732,"id":"CVE-2025-66470","ts":1788881847531,"field":"exploit_available","old":"false","new":"true"}]}