Lucene search
+L

GitLab MCP Server < 2.1.27 - Unauthenticated SSE Transport Access

🗓️ 30 Sep 2026 02:12:03Reported by ProjectDiscoveryType 
nuclei
 nuclei
🔗 github.com👁 13 Views

Unauthenticated access in @zereight/mcp-gitlab < 2.1.27 SSE transport enables local file read.

Related
Refs
Code
id: CVE-2026-61560

info:
  name: GitLab MCP Server < 2.1.27 - Unauthenticated SSE Transport Access
  author: ashish-cybersec
  severity: critical
  description: |
    The @zereight/mcp-gitlab GitLab MCP server exposes its SSE transport endpoints without any authentication when SSE mode is enabled. An unauthenticated attacker with network access can establish an MCP session and invoke every registered tool, including upload_markdown, which reads arbitrary files from the server filesystem via an unsanitized file_path parameter.
  impact: |
    Unauthenticated attackers can invoke all MCP tools exposed by the server, read arbitrary local files including /proc/self/environ, and recover the configured GITLAB_PERSONAL_ACCESS_TOKEN, leading to full GitLab account takeover.
  remediation: |
    Update to @zereight/mcp-gitlab 2.1.27 or later, set SSE_AUTH_TOKEN, and bind the service to a loopback address.
  reference:
    - https://github.com/zereight/gitlab-mcp/security/advisories/GHSA-cv3r-c5h8-f4g5
    - https://github.com/zereight/gitlab-mcp/commit/e436ee4ad067b64584ec9312c9e9c9a2641c1976
    - https://nvd.nist.gov/vuln/detail/CVE-2026-61560
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2026-61560
    epss-score: 0.02901
    epss-percentile: 0.86427
    cwe-id: CWE-22
  metadata:
    verified: true
    max-request: 2
    vendor: zereight
    product: gitlab-mcp
    shodan-query: http.html:"\"transport\":\"sse\""
  tags: cve,cve2026,mcp,gitlab,auth-bypass,exposure

variables:
  session: "{{rand_text_alpha(8)}}"

flow: http(1) && http(2)

http:
  - raw:
      - |
        GET /health HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        internal: true
        dsl:
          - 'contains_all(body, "\"transport\":\"sse\"", "\"status\":\"healthy\"")'
          - 'status_code == 200'
        condition: and

  - raw:
      - |
        POST /messages?sessionId={{session}} HTTP/1.1
        Host: {{Hostname}}

    matchers:
      - type: dsl
        dsl:
          - 'contains(body, "No transport found for sessionId")'
          - 'status_code == 400'
        condition: and
# digest: 4a0a00473045022051e727788e38469406762c231761a9457fc39c9f8c4fa709a98bb1a766cc6cce022100e7d6cfb811778dad153352ea92e4233d9b7b4489dee6eef64fd5c3e59bb1c1f5:922c64590222798bb761d5b6d8e72950

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

19 Sep 2026 17:16Current
5.9Medium risk
Vulners AI Score5.9
CVSS 3.19.8
EPSS0.02901
SSVC
13