CVE-2026-21874CVE-2026-21874是NiceGUI框架中的一个拒绝服务漏洞。NiceGUI是一个基于Python的现代化UI框架,支持使用简单的Python代码构建用户界面。该漏洞影响从v2.10.0到v3.4.1的所有版本。攻击者可以在无需任何认证的情况下,通过反复打开和关闭浏览器标签页来耗尽Redis服务器的所有连接。当Redis连接数达到上限后,将导致服务降级,影响所有依赖NiceGUI应用的用户。由于NiceGUI会持续接受新连接而只是记录错误,最终导致应用虽然保持运行但存储功能完全失效。这是一个典型的资源管理不当导致的拒绝服务漏洞,攻击门槛低,影响范围广,任何使用Redis作为后端存储的NiceGUI应用都可能受到影响。
该漏洞的根本原因在于NiceGUI对Redis连接的生命周期管理存在缺陷。当用户打开浏览器访问NiceGUI应用时,系统会创建Redis连接用于会话存储和状态管理。然而,当用户关闭浏览器标签页时,这些已建立的Redis连接并未被正确释放和关闭。随着时间的推移和多次开闭浏览器操作,未释放的连接不断累积,最终耗尽Redis服务器配置的最大连接数。从技术实现角度分析,NiceGUI使用异步方式管理Redis连接,但在连接复用和清理逻辑上存在竞态条件。具体表现为:1) 连接池未设置合理的超时和淘汰机制;2) 浏览器断开连接时回调函数未能正确触发;3) 连接对象的引用计数管理存在疏漏。攻击者仅需编写简单的脚本,模拟多个浏览器客户端的访问行为,即可快速触发该漏洞。修复版本v3.5.0通过改进连接池管理和添加连接生命周期监控解决了此问题。