IPBUF安全漏洞报告
English
CVE-2025-66469 CVSS 6.1 中危

CVE-2025-66469 NiceGUI ui.add_css等函数反射型XSS漏洞

披露日期: 2025-12-09

漏洞信息

漏洞编号
CVE-2025-66469
漏洞类型
反射型XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
NiceGUI (Python UI框架)

相关标签

反射型XSS跨站脚本NiceGUIPythonCVE-2025-66469UI框架前端安全

漏洞概述

NiceGUI是一个基于Python的UI框架,提供现代化的Web用户界面开发能力。该框架的ui.add_css、ui.add_scss和ui.add_sass函数存在反射型跨站脚本(XSS)漏洞,存在于3.3.1及以下版本中。攻击者可以通过这些函数注入恶意代码,利用框架在生成CSS和JavaScript内容时缺少适当的输入清理和输出编码的缺陷,成功突破预期的<style>或<script>标签上下文,进而在受害者浏览器中执行任意JavaScript代码。由于该漏洞需要用户交互触发,攻击者通常需要诱导用户访问包含恶意代码的页面或点击特定链接。虽然漏洞的机密性和完整性影响等级为低,但在特定场景下可能被用于窃取用户会话、劫持账户或进行钓鱼攻击。此问题已在版本3.4.0中得到修复。

技术细节

漏洞根源在于NiceGUI框架的ui.add_css()、ui.add_scss()和ui.add_sass()函数在处理用户提供的CSS/SCSS/SASS样式内容时,直接将输入内容嵌入到生成的HTML响应中,而未进行充分的HTML实体编码或标签过滤。当用户通过这些函数提交包含</style>或</script>等HTML闭合标签的内容时,攻击者可以提前闭合框架生成的<style>或<script>标签,然后注入任意的<script>标签或HTML内容。由于浏览器会解析这些被注入的标签并执行其中的JavaScript代码,攻击者即可实现存储型或反射型XSS攻击。具体利用方式为:攻击者构造包含闭合标签和恶意JavaScript代码的payload,例如通过ui.add_css注入</style><script>alert(document.cookie)</script>,当其他用户访问包含此内容的页面时,恶意脚本将在其浏览器上下文中执行。修复方案在3.4.0版本中对这些函数增加了适当的输出编码,确保用户输入的CSS内容被正确转义,不会破坏周围的HTML结构。

攻击链分析

STEP 1
步骤1
攻击者识别目标网站使用NiceGUI框架构建,并发现存在调用ui.add_css、ui.add_scss或ui.add_sass函数的页面
STEP 2
步骤2
攻击者构造恶意payload,包含HTML闭合标签(如</style>)和恶意JavaScript代码(如<script>alert(document.cookie)</script>)
STEP 3
步骤3
攻击者通过URL参数、表单提交或其他用户可控输入点将恶意payload传递给目标服务器的NiceGUI应用
STEP 4
步骤4
目标服务器的ui.add_css等函数将恶意内容直接嵌入到响应HTML中,未进行适当的编码或过滤
STEP 5
步骤5
受害用户访问包含恶意内容的页面时,浏览器解析HTML并执行攻击者注入的JavaScript代码
STEP 6
步骤6
攻击者通过执行的JavaScript窃取用户Cookie、会话令牌或其他敏感信息,或进行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import asyncio from nicegui import ui # PoC for CVE-2025-66469: Reflected XSS via ui.add_css # This demonstrates the vulnerability in NiceGUI < 3.4.0 async def vulnerable_page(): """ Example of vulnerable code that allows XSS injection. Attackers can inject closing tags to escape the style context. """ # Malicious CSS input that breaks out of <style> tag malicious_css = "</style><script>alert('XSS - CVE-2025-66469')</script>" # This will render the script tag in the page, causing XSS ui.add_css(malicious_css) ui.label('Vulnerable page - CVE-2025-66469') # To test: # 1. Run this code with NiceGUI < 3.4.0 # 2. Access the page in a browser # 3. The alert will execute, demonstrating XSS vulnerability ui.page('/vulnerable')(vulnerable_page) ui.run()

影响范围

NiceGUI <= 3.3.1

防御指南

临时缓解措施
在官方修复版本发布前,可以采取以下临时缓解措施:1) 在Web服务器层面添加输入过滤规则,拒绝包含</style>、</script>等标签的请求;2) 部署WAF(Web应用防火墙)规则检测和拦截XSS攻击payload;3) 实施严格的Content-Security-Policy策略,限制内联脚本执行;4) 限制ui.add_css等函数的访问权限,确保只有可信用户可以使用这些功能;5) 考虑临时禁用这些函数直到完成升级。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表