ZeroHour

CVE-2026-61560

niche

Unauthenticated Arbitrary File Read in @zereight/mcp-gitlab Steals GitLab Tokens

CVSS 3.1
9.8 critical
EPSS
Published
()
Modified
AI analysis

@zereight/mcp-gitlab, a Model Context Protocol (MCP) server for GitLab, in all versions prior to 2.1.27 exposes every MCP tool without authentication when run in SSE transport mode (SSE=true), which is the default for Docker deployments. An unauthenticated attacker who can reach the server over the network can invoke the upload_markdown tool, whose unsanitized file_path parameter permits path traversal (CWE-22) to read arbitrary files from the server's local filesystem, which are then uploaded to an attacker-visible GitLab project. By reading /proc/self/environ, the attacker can steal the server's GITLAB_PERSONAL_ACCESS_TOKEN and achieve full takeover of the associated GitLab account. Anyone running the package below 2.1.27 in SSE mode on a network-reachable host is affected, with a critical CVSS 3.1 score of 9.8. No public proof-of-concept is known and the flaw is not on the CISA KEV catalog, so exploitation status is currently none known.

What to do: Upgrade to @zereight/mcp-gitlab version 2.1.27 or later immediately. If the SSE port was ever reachable by untrusted hosts (check Docker port bindings and firewall rules for 0.0.0.0 exposure), treat the GITLAB_PERSONAL_ACCESS_TOKEN as compromised: revoke and rotate it, review GitLab audit logs and personal access token usage for anomalous activity, and restrict the service to localhost or an authenticated reverse proxy going forward.

Affected
zereight @zereight/mcp-gitlaball versions prior to 2.1.27 (vulnerable when run with SSE transport mode, SSE=true, including Docker default configuration)
Estimated exposure
nichelikely hundreds to low thousands of network-reachable SSE deployments, out of tens of thousands of total installs (clearly an estimate) — The npm package is one of the more popular GitLab MCP servers with tens of thousands of cumulative downloads, but MCP servers are typically run locally or inside private dev environments, so only the subset using the Docker/SSE default…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

`@zereight/mcp-gitlab` is a Model Context Protocol server for GitLab. Prior to version 2.1.27, the SSE transport mode (`SSE=true`) exposes all MCP tools without any authentication. The `upload_markdown` tool reads arbitrary files from the server's local filesystem via an unsanitized `file_path` parameter and uploads them to a GitLab project. Combined, any unauthenticated network-reachable attacker can read `/proc/self/environ` to steal the server's `GITLAB_PERSONAL_ACCESS_TOKEN` and achieve full GitLab account takeover. This is the default configuration for Docker deployments. Version 2.1.27 contains a patch.

Weakness
CWE-22
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.