一、概述
2016年5月,Prometheus成为继Kubernetes之后第二个正式加入CNCF的项目,同年六月发布1.0版本,并与2018年8月顺利毕业。Prometheus现已被众多的企业、互联网公司和初创公司在其微服务业务环境下使用。
本篇为云原生服务测绘系列的第四篇,主要从资产发现、资产漏洞、资产脆弱性发现三个维度对国内暴露的Prometheus进行了测绘分析,最后笔者针对Prometheus提供了一些安全建议,希望各位读者通过阅读此文可对Prometheus服务风险暴露情况有更清晰的认识。
二、Prometheus资产风险测绘分析
2.1 Prometheus资产暴露情况分析
借助测绘数据,我们可以了解到国内Prometheus资产地区和版本的分布情况,笔者也以这两个维度为各位读者进行介绍。
2.1.1 Prometheus资产地区分布
笔者从测绘数据中得到Prometheus相关资产共5908条数据,地区分布如图1所示(资产数较少的由于篇幅原因不在图中显示)
笔者针对以上Prometheus资产暴露的端口情况进行了统计,如图2所示:
由图1、图2我们可以得出如下信息:
国内暴露的Prometheus资产信息中有约81%的数据来源于北京市、上海市、广东省、浙江省、香港特别行政区、江苏省,其中北京市暴露1403条数据位居第一
国内暴露的Prometheus资产使用的端口主要分布在9090端口,9090为Prometheus Dashboard提供HTTP服务的默认端口,使用9090端口的资产数约占整体资产数的94%
2.1.2 Prometheus资产版本分布
借助测绘数据,笔者对国内暴露的Prometheus资产版本进行了分析,其分布情况如图3所示(资产版本数较少的由于篇幅原因不在图中显示):
2.2 Prometheus脆弱性风险和漏洞介绍
2.2.1 脆弱性风险介绍
TLS and basic authentication is gradually being rolled out to the different components.Please follow the different releases and change logs to know which components have already implemented it. The components currently supporting TLS and authentication are: · Prometheus 2.24.0 and later · Node Exporter 1.0.0 and later
可以看出官方计划将TLS和Basic认证机制在不同的组件中实现,目前还在进行中,并给出了当前支持认证机制的具体版本范围,这也同时意味着在2.24.0及之前的版本中,只要用户对外暴露Prometheus的9090端口,那么任何人都可以对Prometheus Dashboard进行未授权访问。虽然Prometheus在2.24.0版本后针对Dashboard引入了TLS及Basic认证方式,但由于引入时间较晚,许多企业及组织已在云上部署了Prometheus,且未及时启用官方提供的认证机制,从而导致大量暴露在互联网Prometheus服务存在未授权访问风险。通过进一步挖掘,笔者发现这些Prometheus服务存在敏感数据泄露的风险,并将一些敏感的数据接口梳理如下:
- /api/v1/status/config
- /api/v1/targets
访问该接口将返回Prometheus目标服务的当前状态,包括活动状态(activeTargets)、下线状态(DroppedTargets)等,示例如下图所示:
-
/api/v1/status/flags
其中,config.file参数提供用于存放Prometheus配置文件(该配置文件与/api/v1/status/config接口返回的配置文件信息一致)的完整目录,若配置文件存放在/home目录下,则可能导致系统用户名泄露。
根据官方文档[3],若用户将web.enable-admin-api项参数值设为true,则将额外开启一些管理API供操作者调用,这些管理API允许用户删除Prometheus所有已保存的监控指标以及关闭相应的监控功能,因而攻击者可针对未设置认证机制的Prometheus服务进行访问,并通过修改web.enable-admin-api项为false,直接关闭或删除Prometheus服务提供的指标,危害巨大。
-
/api/v1/status/buildinfo
Prometheus于2013年开源至今,已有约9年时间,在此期间一共曝出两个个漏洞[2],漏洞数量相对较少,从CVE编号信息我们可以看出漏洞披露时间分别在2019、2021年,根据CVSS2.0标准,两个漏洞均为中危漏洞。CVE-2021-29622漏洞类型为开放式重定向、CVE-2019-3826为XSS,其中CVE-2021-29662漏洞在市面上曝光度较大,笔者也针对这两个漏洞进行了信息汇总,其中包括公开暴露的PoC及ExP信息,如图11所示:
2.3 Prometheus资产脆弱性暴露情况分析
2.4 安全建议
- 升级Prometheus版本为最新版本
- 升级Prometheus Dashboard使用认证机制,如Prometheus提供的Basic认证,使用TLS保证数据传输安全
- 禁止将用户名密码等敏感信息以明文形式写入Prometheusd的配置文件中
三、总结
参考文献
[1]https://security.archlinux.org/CVE-2021-29622
[2]https://www.cvedetails.com/vulnerability-list/vendor_id-20905/product_id-61503/Prometheus-Prometheus.html
[3]https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis
[4]https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
[5]https://soundcloud.com/
[6]https://sre.google/sre-book/practical-alerting/
[7]https://prometheus.io/docs/introduction/faq/#why-dont-the-prometheus-server-components-support-tls-or-authentication-can-i-add-those
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。