CVE-2026-21720CVE-2026-21720是Grafana中的一个高危拒绝服务漏洞,CVSS评分7.5。该漏洞源于Grafana处理Gravatar头像刷新时的资源管理问题。当用户请求未缓存的头像时,系统会为每个请求生成一个goroutine来刷新Gravatar图像。这些goroutine通过无缓冲通道与主处理器通信。然而,当10槽位的工作队列负载过高时,刷新操作可能排队超过3秒,导致处理器超时并放弃监听结果。但后台goroutine仍会尝试向已关闭的无缓冲通道发送数据,造成永久阻塞。攻击者可以通过持续发送带有随机哈希的头像请求来触发此漏洞,每个请求都会创建新的goroutine。由于这些goroutine无法正常退出,内存使用量会线性增长,最终导致Grafana服务崩溃。此漏洞无需认证即可利用,攻击成本低,危害严重。
漏洞根源在于Grafana的/avatar/:hash路由处理机制。当收到未缓存的Gravatar头像请求时,系统执行以下流程:1) 创建新的goroutine执行头像刷新任务;2) goroutine通过无缓冲通道返回刷新结果;3) 主处理器等待通道数据,设置3秒超时;4) 如果工作队列已满(10个并发任务),新请求需等待;5) 等待超过3秒后,主处理器超时并关闭通道,但goroutine仍在运行;6) goroutine尝试向已关闭的无缓冲通道发送数据,导致永久阻塞。攻击者利用此漏洞的方法非常简单:持续向Grafana服务器发送带有随机哈希参数的/avatar/:hash请求。由于哈希随机,每个请求都会触发新的goroutine创建。工作队列快速填满后,新请求开始排队,超时机制被触发。goroutine不断累积,内存持续增长,最终触发OOM killer或系统资源耗尽,导致服务中断。