事件经过
mcp-gitlab 是一个向 AI 代理公开 GitLab 操作(项目、合并请求、问题、管道、wiki、发布版本)的 MCP 服务器,其 job_id 参数处理中存在路径遍历漏洞(CVSS 8.6),允许攻击者逃脱预期的 API 路径前缀并将 GitLab API 调用重定向到其他地方。
影响分析
mcp-gitlab 是一个流行的 GitLab MCP 服务器,用于让编码代理(Claude Code、Cursor 等)与 GitLab 交互。使用服务器存储的 GitLab 凭证重定向 API 调用可能会向攻击者控制的端点泄露 GitLab 令牌/会话数据,或被用来操纵 CI/CD 管道数据,鉴于 MCP 服务器通常代表 AI 代理持有特权令牌,这是一个有意义的风险。
攻击途径
攻击者向 build/index.js 提供精心构造的 job_id 值(例如包含 ../../../user 序列的值),逃脱预期的路径前缀,使得 MCP 服务器发出的 GitLab API 请求被重定向到任意的攻击者可控端点,而不是预期的 GitLab 作业资源。
受影响系统
mcp-gitlab(zereight/gitlab-mcp npm 包)
缓解措施
升级到 @zereight/mcp-gitlab 的修补版本;在构造 GitLab API 请求路径之前,在服务器端验证/清理 job_id 路径段。