问题背景
漏洞扫描时发现 Grafana 存在以下漏洞
CVE-2023 CVE-2023-3128 "Grafana是一个开源分析和数据可视化平台,通常用于可视化和分析各种实时和历史时间序列数据,提供与各种监控平台和应用程序的广泛集成选项。Grafana 6.7.0及之后版本存在身份认证绕过漏洞,未经身份认证的攻击者可利用该漏洞接管目标用户的Grafana账户并访问敏感数据信息。" "厂商补丁:Grafana-------目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:https://grafana.com/grafana/download"
CVE-2022 CVE-2022-31123 Grafana是Grafana Labs开源的一套提供可视化监控界面的开源监控工具。该工具主要用于监控和分析Graphite、InfluxDB和Prometheus等。Grafana存在数据伪造问题漏洞。攻击者利用该漏洞在Grafana上使用恶意数据,以欺骗受害者。 厂商补丁:建议使用此软件的用户随时关注厂商主页或参考网址以获取解决办法:https://grafana.com/
CVE-2022 CVE-2022-31107 Grafana是Grafana实验室的一套提供可视化监控界面的开源监控工具。该工具主要用于监控和分析Graphite、InfluxDB和Prometheus等。Grafana 存在授权问题漏洞,该漏洞源于攻击者可以通过配置OAuth IdP登录到Grafana实例,从而攻击者利用该漏洞可绕过身份验证,以任意帐户登录。 厂商补丁:目前厂商已发布升级补丁以修复漏洞,补丁获取链接:https://github.com/grafana/grafana/security/advisories/GHSA-mx47-6497-3fv2
CVE-2022 CVE-2022-39201 "Grafana是Grafana Labs开源的一套提供可视化监控界面的开源监控工具。该工具主要用于监控和分析Graphite、InfluxDB和Prometheus等。Grafana 5.0.0-beta1至8.5.14版本和9.1.8之前版本存在信息泄露漏洞。攻击者可利用该漏洞泄露用户cookie。" "厂商补丁:Grafana-------目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:https://github.com/grafana/grafana/commit/b571acc1dc130a33f24742c1f93b93216da6cf57"
CVE-2022 CVE-2022-31130 "Grafana是Grafana Labs开源的一套提供可视化监控界面的开源监控工具。该工具主要用于监控和分析Graphite、InfluxDB和Prometheus等。Grafana 9.1.8之前版本和8.5.14之前版本的端点存在信息泄露漏洞。攻击者可利用该漏洞泄漏身份认证令牌。" "厂商补丁:Grafana-------目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:https://github.com/grafana/grafana/commit/4dd56e4dabce10007bf4ba1059bf54178c35b177"
修复建议
当前已发布的 TiDB 版本中主要是 Grafana 7.x 的版本(例如 TiDB V8.5.1 版本自带的 Grafana 版本为 7.5.17)。针对漏洞问题,可以通过升级 Grafana 版本解决。具体方法是在 Grafana 官网上下载高版本安装包,并通过 tiup patch 的方式升级修复。
//查看 Grafana 版本
curl -u admin:admin 'http:///xx.xx.xx.xx:3000/api/health'
{
"commit": "84411794f3",
"database": "ok",
"version": "7.5.17"
}
Patch升级步骤
- 下载 Grafana 新版安装包,查看集群状态,并确认组件版本
//根据系统是 arm 还是 x86 选择相应的版本
wget https://dl.grafana.com/oss/release/grafana-10.4.19.linux-amd64.tar.gz
tiup cluster display <cluster-name>
mysql -uroot -hxx.xx.xx.xx -P4000 -pxxxxxx
select type,version,git_hash from INFORMATION_SCHEMA.CLUSTER_INFO;
- 解压安装包,进入目录,将内容重新打包(此步骤目的是保证压缩包的一级目录是conf bin等目录,正常下载下来的压缩包中一级目录是grafana-10.4.19)
tar -xf grafana-10.4.19.linux-amd64.tar.gz
cd grafana-10.4.19
tar -zcf grafana-10.4.19-linux-amd64.tar.gz *
- 备份相关元数据
#备份原生binary
mkdir /home/tidb/grafnabak
cd /home/tidb/grafnabak
cp -r ~/.tiup/storage/cluster/packages /home/tidb/grafnabak/
# 备份已打过patch的binary,如有
cp -r ~/.tiup/storage/cluster/clusters/<cluster-name>/patch /home/tidb/grafnabak/
- 通过 tiup patch 升级 Grafana
tiup cluster patch <cluster-name> grafana-10.4.19-linux-amd64.tar.gz -R grafana --overwrite
此过程会重启 Grafana、node_exporter、blockbox_exporter 组件,其他角色不受影响
- 验证 Patch 已成功安装
tiup cluster display <cluster-name>
mysql -uroot -hxx.xx.xx.xx -P4000 -pxxxxxx
select type,version,git_hash from INFORMATION_SCHEMA.CLUSTER_INFO;
登录 Grafana,查看页面右下角的版本有无变化,或使用 curl 查看 Grafana 版本变化
//查看 Grafana 版本
curl -u admin:admin 'http:///xx.xx.xx.xx:3000/api/health'
{
"commit": "5e7a8b1652847effdfaf023485dc7601675da672",
"database": "ok",
"enterpriseCommit": "863d4537a2549963782ae75266169a546c293e81",
"version": "10.4.19"
}