今天我们发布了Grafana 7.5.11和8.1.6。这些补丁版本包括一个重要的安全修复,该问题影响到2.0.1以来的所有Grafana版本。
自2021-09-16以来,所有Grafana云实例都受到保护,审计没有发现任何使用这种攻击媒介的情况。2021-09-28,Grafana企业版客户在禁售期得到了更新的二进制文件。
8.1.5包含一个针对柱状图面板的单一修复。我们相信,用户可以通过直接从8.1.4转移到8.1.6来加快部署。
总结
CVSS评分:9.8分 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:A:H
我们在2021-09-15收到一份安全报告,security@grafana.com,内容是Grafana中关于快照功能的漏洞。后来发现它影响了Grafana从2.0.1到8.1.5的版本。CVE-2021-39226已被分配给该漏洞。
影响
未认证和已认证的用户能够通过访问字面路径查看具有最低数据库密钥(数据库索引中的最低数字)的快照:
/dashboard/snapshot/:key,或/api/snapshots/:key
如果快照 "public_mode "配置设置为true(相对于默认或false),未经认证的用户能够通过访问字面路径删除具有最低数据库密钥的快照:
/api/snapshots-delete/:deleteKey
无论快照 "public_mode "设置如何,已验证的用户能够通过访问字面路径来删除具有最低数据库密钥的快照:
/api/snapshots/:key,或/api/snapshots-delete/:deleteKey
删除和查看的组合能够完整地浏览所有快照数据,同时导致快照数据完全丢失。
攻击审计
我们不能保证下面的内容能识别所有的攻击,所以如果你使用下面描述的审计过程发现了什么,你应该考虑做一个全面的评估。
通过反向代理/负载平衡器日志
要确定你的Grafana安装是否被利用了这个漏洞,通过你的反向代理/负载平衡器访问日志搜索路径为/dashboard/snapshot/:key ,/api/snapshots/:key ,或/api/snapshots-delete/:deleteKey ,并且响应状态代码为200(OK)的实例。例如,如果你使用Kubernetes ingress-nginx控制器并将日志发送到Loki,使用LogQL查询,如{job="nginx-ingress-controller"} |= "\"status\": 200" |= "\"uri\": \"/api/snapshots/:key\"" 。
通过Grafana企业审计功能
如果你在配置中用router_logging = true 启用了 "Log web requests",那么请查找"requestUri":"/api/snapshots-delete/” 、“requestUri":"/api/snapshots/:key" 或"type":"snapshot" ,并结合"action":"delete" 。
打过补丁的版本
8.1.6版
7.5.11版
解决方案和缓解措施
下载并安装适合您的Grafana版本的补丁:
Grafana云实例已经打了补丁,Grafana企业版客户在禁售期内获得了更新的二进制文件。
解决方法
如果由于某些原因你不能升级,你可以使用反向代理或类似的方法来阻止对字面路径的访问:
/api/snapshots/:key/api/snapshots-delete/:deleteKey/dashboard/snapshot/:key/api/snapshots/:key
它们没有正常的功能,可以被禁用而不产生副作用。
时间线和事后总结
下面是一个详细的时间线,从我们最初得知这个问题开始,所有时间均为UTC:
- 2021-09-15 14:49:Tran Viet Tuan发送了关于未经认证查看快照的初始报告。
- 2021-09-15 15:56: 初步再现。
- 2021-09-15 17:10: 宣布严重程度为MEDIUM。
- 2021-09-15 18:58: 在Grafana云上部署了解决方法。
- 2021-09-15 19:15:
/api/snapshots/:key,发现也有漏洞。 - 2021-09-15 19:30:
/api/snapshots/:key在Grafana Cloud上被阻止。 - 2021-09-16 09:31:
/api/snapshots-delete/:deleteKey也被发现存在漏洞,并在Grafana Cloud上被阻止。从这一点来看,云端不再受到影响。 - 2021-09-16 09:35: 宣布严重程度高。
- 2021-09-16 11:19: 意识到删除和查看的组合允许枚举和永久DoS。
- 2021-09-16 11:19: 宣布严重。
- 2021-09-17 10:53: 确定不需要周末工作。虽然问题是重要的,但范围是非常有限的。
- 2021-09-17 14:26: 对Grafana云的审计结束,没有证据表明存在剥削。
- 2021-09-23:Grafana云的实例更新。
- 2021-09-28 12:00:Grafana企业版图像在禁售期向客户发布。
- 2021-10-05 17:00: 公开发布。
报告安全问题
如果你认为你发现了一个安全漏洞,请发送报告到security@grafana.com。这个地址可用于Grafana实验室的所有开源和商业产品(包括但不限于Grafana、Tempo、Loki、k6、Tanka以及Grafana Cloud、Grafana Enterprise和grafana.com)。我们只接受这个地址的漏洞报告。我们希望你使用我们的PGP密钥对你的信息进行加密。密钥的指纹是f988 7bea 027a 049f ae8e 5caa d125 8932 be24 c5ca
该密钥可从keys.gnupg.net搜索security@grafana 获得。
安全公告
我们在社区网站上维护了一个名为 "安全公告"的类别,我们将在这里发布任何包含安全修复的补丁的摘要、补救措施和缓解细节。如果您有 grafana.com 账户并登录到社区网站,您也可以通过电子邮件订阅该类别的更新,或者通过安全公告 RSS 源的更新。
鸣谢
我们要感谢Tran Viet Tuan负责任地将最初发现的漏洞披露给我们。