Prometheus服务发现机制导致的敏感信息泄露分析

admin 2026-03-03 04:23:05 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析Prometheus服务发现机制引发的敏感信息泄露风险。由于默认保留元数据且无脱敏,攻击者可获取SSH密钥及K8s凭据等敏感信息,甚至利用管理接口删除数据或关闭服务。建议实施访问认证、禁用高危启动参数、避免在元数据中存储凭据,并严格执行网络隔离策略,将访问控制纳入云原生安全基线。 综合评分: 87 文章分类: 漏洞分析,云安全,数据泄露,安全建设


cover_image

Prometheus 服务发现机制导致的敏感信息泄露分析

原创

黑熊先生 黑熊先生

黑熊安全

2026年2月27日 11:09 日本

一、背景

在云原生环境中,Prometheus 被广泛用于基础设施与业务监控。然而,在大量实际部署案例中,Prometheus 常因未授权访问或错误暴露而成为内部信息泄露的重要入口。

相比传统漏洞利用,Prometheus 的风险往往并不来源于代码缺陷,而是其服务发现(Service Discovery)机制天然暴露大量运行时元数据(metadata)

这些数据一旦被未授权访问,可能直接泄露:

  • SSH 登录用户信息
  • Kubernetes 集群敏感标签
  • 服务注册中心账号密码
  • API 访问凭据
  • 云主机元数据

本文重点分析:

Prometheus 服务发现 metadata 的泄露方式,以及管理接口暴露带来的高危风险。


二、Prometheus 服务发现工作原理

Prometheus 为实现自动化监控目标发现,支持多种 Service Discovery 机制,例如:

  • Kubernetes
  • GCE / GCP
  • Consul
  • Nacos
  • Eureka
  • EC2 等云平台

其工作流程如下:

云平台 / 注册中心 API
        ↓
Service Discovery
        ↓
生成 __meta_* 标签
        ↓
relabel_configs 处理
        ↓
加入监控 targets

Prometheus 会生成大量以 __meta_* 开头的标签,用于描述目标实例上下文信息。

关键问题在于:

Prometheus 不会对 Service Discovery metadata 进行脱敏或过滤。

因此,一旦 Web 接口暴露,这些信息将被完整返回。


三、可能泄露的敏感字段

1. GCE / GCP 环境

可能出现:

__meta_gce_metadata_ssh_keys

可能泄露:

  • SSH 登录用户名
  • SSH 公钥信息

攻击者可据此识别云主机账户体系。


2. Kubernetes 环境

启用:

kubernetes_sd_configs

后可能暴露:

__meta_kubernetes_pod_annotation_*
__meta_kubernetes_secret_*

潜在泄露内容包括:

  • ServiceAccount Token
  • 内部 API 凭据
  • Annotation 中存储的认证信息

3. Consul / Nacos / Eureka

典型 metadata 字段:

__meta_consul_service_metadata_user_name
__meta_consul_service_metadata_user_password

或:

__meta_nacos_metadata_user
__meta_eureka_app_instance_metadata_user_password

若业务将账号密码写入 metadata,则 Prometheus 会直接采集并暴露。


四、敏感信息实际泄露接口

(1)/api/v1/targets —— 核心泄露接口

/api/v1/targets

重点字段:

discoveredLabels

示例:

{
  "activeTargets": [
    {
      "discoveredLabels": {
        "__meta_consul_service_metadata_user_name": "admin",
        "__meta_consul_service_metadata_user_password": "123456"
      }
    }
  ]
}

特点:

  • 包含完整服务发现结果
  • 未脱敏 metadata
  • 最常见泄露来源

(2)/service-discovery —— 最完整泄露页面

http://IP:9090/service-discovery

展示内容:

  • 原始服务发现数据
  • 未经过 relabel 的标签
  • 全部 __meta_* 字段

很多环境限制 API 却忽略 UI 权限控制,从而造成泄露。


(3)/api/v1/targets/metadata —— 补充接口

/api/v1/targets/metadata

返回:

  • metric metadata
  • job 信息
  • 实例标签

常用于环境指纹识别。


五、未授权访问漏洞—高危管理接口暴露风险(Admin API 与 Lifecycle API)

除信息泄露外,Prometheus 在特定启动参数开启时,还可能暴露高危管理接口。这两个参数默认是false,但是当开启时可以进行未授权删除和关闭监控服务器的权限。

接口地址:/api/v1/status/flags

1. Admin API(数据管理接口)

当启动参数开启:

--web.enable-admin-api

将开放 TSDB 管理能力。

删除监控指标

POST /api/v1/admin/tsdb/delete_series

示例:

POST /api/v1/admin/tsdb/delete_series?match[]={__name__=~".+"}

影响:

  • 删除匹配时间序列
  • 若匹配全部指标 ⇒ 等同清空监控数据

清理数据库数据块

POST /api/v1/admin/tsdb/clean_tombstones

作用:

  • 永久删除已标记数据
  • 释放磁盘空间

2. Lifecycle API(生命周期控制接口)

当开启:

--web.enable-lifecycle

将允许远程控制 Prometheus 运行状态。

关闭监控服务

POST /-/quit

效果:

  • 优雅关闭 Prometheus 进程
  • 监控系统立即停止

热加载配置

POST /-/reload

作用:

  • 重新加载 prometheus.yml
  • 无需重启服务

3. 接口对应关系

| 启动参数 | 危险接口 | 功能 | | — | — | — | | web.enable-admin-api | /api/v1/admin/tsdb/delete_series | 删除指标 | | | /api/v1/admin/tsdb/clean_tombstones | 清理数据 | | web.enable-lifecycle | /-/quit | 关闭服务 | | | /-/reload | 重载配置 |


4. 未授权风险原因

若满足以下条件:

  • Prometheus 暴露公网
  • 未设置访问认证
  • 启用了上述参数

攻击者仅需访问:

/api/v1/status/flags

即可确认:

  • 是否可删除全部监控数据
  • 是否可远程关闭监控系统

这类风险通常属于高危运维破坏面


六、风险本质分析

Prometheus 的设计目标是:

最大化监控可观测性,而非安全隔离。

因此:

  • metadata 必须完整保留
  • 服务发现默认可查询
  • 管理接口可被远程调用(若启用)

攻击链通常表现为:

Prometheus 未授权访问
        ↓
Service Discovery 信息泄露
        ↓
获取内部凭据
        ↓
调用管理接口或横向移动

Prometheus 往往成为内网攻击的起点。


七、安全加固建议

1. 禁止公网暴露 Prometheus

仅允许内网访问。


2. 增加访问认证

建议通过反向代理实现:

  • Basic Authentication
  • OAuth2 Proxy
  • SSO 接入

3. 禁止开启高危参数

避免启用:

--web.enable-admin-api
--web.enable-lifecycle

4. 避免在 metadata 中存储凭据

禁止在:

  • Service Metadata
  • Annotation
  • URL 参数

中保存账号密码。


5. 网络访问控制

仅允许:

  • Grafana
  • 运维网段
  • 监控系统

访问 Prometheus Web 端口。


八、总结

Prometheus 的安全风险往往被低估。

其真正危险之处并非远程执行漏洞,而是:

信息聚合能力 + 管理接口控制能力的组合风险。

一旦访问控制缺失,攻击者不仅能够获取:

  • 内网拓扑结构
  • 服务认证信息
  • 云主机登录数据

甚至可能:

  • 删除全部监控指标
  • 远程关闭监控系统

因此,Prometheus 接口访问控制应被纳入云原生安全基线的核心要求。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:黑熊安全 黑熊先生 黑熊先生《Prometheus 服务发现机制导致的敏感信息泄露分析》

评论:0   参与:  0