Summary
CVE-2026-61560 is a critical path traversal / missing authentication vulnerability (CWE-22) affecting @zereight/mcp-gitlab, a widely used Model Context Protocol (MCP) server that lets AI assistants interact with GitLab. In its default Docker deployment configuration (SSE=true), the server exposes all of its MCP tools over the network without authentication, and its upload_markdown tool allows unsanitized filesystem paths to be read. Combined, these flaws let an unauthenticated network attacker read arbitrary files from the host, steal the server’s GitLab Personal Access Token, and achieve full GitLab account takeover. The issue carries a CVSS v3.1 base score of 9.8 (Critical).
Technical details
- Root cause 1 – Missing authentication: When the server runs with SSE transport enabled (
SSE=true), the/sseand/messagesendpoints do not enforce any authentication or authorization checks. Any network-reachable client can open a session and invoke the server’s ~100+ MCP tools using the credentials configured on the server (theGITLAB_PERSONAL_ACCESS_TOKEN). - Root cause 2 – Path traversal in
upload_markdown: This tool accepts afile_pathparameter that is passed directly to a filesystem read call with no sanitization, allowlisting, or sandboxing, allowing reads of arbitrary files on the host. - Trigger conditions: The server must be deployed with SSE transport mode enabled and reachable over the network — this is the default configuration for Docker-based deployments of the project.
- Attack vector: Network, no privileges or user interaction required.
- Impact: An attacker can connect to the unauthenticated SSE endpoint, enumerate accessible projects, then call
upload_markdownwith a path such as/proc/self/environto exfiltrate environment variables (including theGITLAB_PERSONAL_ACCESS_TOKEN). The stolen token grants full API access to the victim’s GitLab account/projects. The same file-read primitive could also be used to access other sensitive host files (e.g., credential files, source code).
Affected software
@zereight/mcp-gitlab(also distributed asgitlab-mcp), all versions prior to 2.1.27, when deployed with SSE transport enabled.
Severity
- CVSS v3.1 Base Score: 9.8 (Critical)
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Mitigation and recommended actions
- Immediate: Upgrade
@zereight/mcp-gitlabto version 2.1.27 or later, which adds SSE authentication enforcement and blocks arbitrary remote file paths inupload_markdown. - If immediate patching is not possible:
- Set the
SSE_AUTH_TOKENenvironment variable to require authentication on the SSE transport. - Avoid exposing the SSE/
/messagesendpoints directly to untrusted networks; restrict access via network segmentation, firewall rules, or a reverse proxy requiring authentication. - Rotate the
GITLAB_PERSONAL_ACCESS_TOKENused by the MCP server, and scope it to the minimum required permissions. - Review GitLab audit logs for unexpected API activity originating from the token associated with the MCP server.
- Set the

