GitLab CE/EE CVE-2026-5173: Brief Summary of a High Severity WebSocket Access Control Flaw

A brief summary of CVE-2026-5173, a high severity improper access control vulnerability in GitLab CE/EE WebSocket connections that allows authenticated users to invoke unintended server-side methods. Includes patch information and affected version details.

CVE Analysis

7 min read

ZeroPath CVE Analysis
ZeroPath CVE Analysis

2026-04-08

GitLab CE/EE CVE-2026-5173: Brief Summary of a High Severity WebSocket Access Control Flaw
Experimental AI-Generated Content

This CVE analysis is an experimental publication that is completely AI-generated. The content may contain errors or inaccuracies and is subject to change as more information becomes available. We are continuously refining our process.

If you have feedback, questions, or notice any errors, please reach out to us.

[email protected]

Introduction

A recently patched access control flaw in GitLab's WebSocket connection layer allowed any authenticated user, even one with minimal privileges, to invoke internal server-side methods that should never have been reachable. For organizations running self-managed GitLab instances, this vulnerability (CVE-2026-5173, CVSS 8.5) quietly exposed sensitive data and limited modification capabilities to anyone with a valid login, and the vulnerable code has been present since the 16.9.x release series, spanning over two major version cycles.

Technical Information

Root Cause: CWE-749 and Exposed Server-Side Methods

CVE-2026-5173 falls under CWE-749: Exposed Dangerous Method or Function. The core issue is that GitLab's WebSocket endpoint did not sufficiently restrict which internal methods could be called through incoming connections. The product provides an interface for interaction with external actors, but that interface includes dangerous methods that are not properly restricted. Exposing critical functionality in this way essentially provides an attacker with the privilege level of the exposed functionality, which could result in the modification or exposure of sensitive data.

In practical terms, the WebSocket connection handler accepted method invocations from authenticated clients without validating whether the calling user was authorized to reach those specific server-side operations. A user with only basic authentication (low privileges) could craft WebSocket messages targeting internal methods that were intended to be restricted to higher privilege levels or internal system use only.

CVSS Profile and Attack Characteristics

The CVSS 3.1 vector string is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N, scoring 8.5 HIGH. Breaking this down:

MetricValueTechnical Implication
Attack Vector (AV)Network (N)Exploitable remotely over a network connection
Attack Complexity (AC)Low (L)No advanced conditions or complex security bypasses required
Privileges Required (PR)Low (L)Attacker must be authenticated but only needs basic user privileges
User Interaction (UI)None (N)No action required from a victim user
Scope (S)Changed (C)Impact extends beyond the vulnerable authorization scope
Confidentiality (C)High (H)Total loss of confidentiality for affected data
Integrity (I)Low (L)Some data modification possible, but not total control
Availability (A)None (N)No disruption to service availability

The "Changed" scope is particularly notable here. It means that a successful exploit allows the attacker to impact components beyond the vulnerable WebSocket handler itself, reaching into other parts of the GitLab system that the attacker's authorization context should not permit.

Attack Flow

Based on the advisory details and CWE classification, the exploitation path follows this general sequence:

  1. The attacker authenticates to the GitLab instance with a low privilege account (any valid user account suffices).
  2. The attacker establishes a WebSocket connection to the GitLab server through the normal WebSocket endpoint.
  3. Through the WebSocket connection, the attacker sends messages that invoke server-side methods which are not intended to be accessible to their privilege level.
  4. Because the WebSocket handler does not enforce proper access control on which methods can be called, the server executes the requested operations.
  5. The attacker gains access to sensitive information (high confidentiality impact) and can potentially modify some data (low integrity impact) that should be outside their authorization scope.

The low attack complexity and lack of required user interaction make this vulnerability straightforward to exploit once an attacker has any authenticated session.

Patch Information

GitLab addressed CVE-2026-5173 in a coordinated security patch release published on April 8, 2026, shipping fixes across three supported version tracks for both GitLab Community Edition (CE) and Enterprise Edition (EE):

ProductAffected Version RangeFixed Version
GitLab CE/EE18.10 before 18.10.318.10.3
GitLab CE/EE18.9 before 18.9.518.9.5
GitLab CE/EE16.9.6 before 18.8.918.8.9

GitLab.com (the SaaS offering) was already running the patched version at the time of the announcement, and GitLab Dedicated customers required no action.

The fix tightened the access control enforcement on the WebSocket connection handler. Specifically, the patch restricts the set of methods that can be invoked through WebSocket messages, ensuring that only explicitly authorized operations are reachable. This is the classic remediation for CWE-749: reducing the attack surface by whitelisting or gating which methods are exposed to external callers, rather than relying on the assumption that internal methods will not be discovered or called.

Upgrade notes for self-managed instances:

  • No database migrations are included in this patch release, meaning multi-node deployments can upgrade without downtime.
  • All deployment types are affected: Omnibus, source code, and Helm chart installations.
  • GitLab skipped version numbers 18.10.2, 18.9.4, and 18.8.8, so administrators should update directly to 18.10.3, 18.9.5, or 18.8.9 respectively.
  • By default, Omnibus packages will stop, run migrations, and start again regardless of the upgrade size. Administrators can change this behavior by adding a specific configuration file to skip auto reconfiguration during updates.

The detailed technical work item is tracked at gitlab.com/gitlab-org/gitlab/-/work_items/588959. Per GitLab's standard security disclosure policy, that issue is currently confidential and will be made public on the GitLab issue tracker approximately 30 days after the patch release (around May 8, 2026), at which point the exact code level diff will be available for review.

No workarounds or temporary mitigations have been documented by GitLab. The only vendor supported remediation is applying the official patch.

Affected Systems and Versions

The vulnerability impacts all deployment types of GitLab CE and EE (Omnibus, source code, and Helm chart) across a wide version range:

  • GitLab CE/EE 16.9.6 through all versions before 18.8.9
  • GitLab CE/EE 18.9.0 through versions before 18.9.5
  • GitLab CE/EE 18.10.0 through versions before 18.10.3

The vulnerable code path was introduced approximately in the 16.9.x series and persisted for over two major version cycles. Any self-managed GitLab instance running a version within these ranges is affected. GitLab.com and GitLab Dedicated are not affected as they have already been patched or require no action.

Vendor Security History

GitLab maintains a structured security release cadence, typically issuing scheduled patch releases twice a month on the second and fourth Wednesdays. The company operates a mature bug bounty program. In 2024, GitLab awarded over US$1 million in bounties across 275 valid reports, receiving a total of 1,440 reports from 457 researchers. This demonstrates a proactive approach to identifying and remediating vulnerabilities.

CVE-2026-5173 was discovered internally by GitLab team member Simon Tomlinson, rather than through external threat actor activity or the bug bounty program. GitLab's policy of making vulnerability details public 30 days after the patch release provides a defined window for organizations to apply fixes before technical details become widely available.

Threat Intelligence

As of April 9, 2026, there is no evidence that CVE-2026-5173 is being actively exploited in the wild. The vulnerability is not currently listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.

However, organizations should be aware of the disclosure timeline. GitLab will make the detailed issue public approximately 30 days after the patch release, around May 8, 2026. The public release of vulnerability details historically accelerates the development of proof of concept exploits. Given the low attack complexity and the only requirement being basic authentication, the window between now and that disclosure date is the critical period for patching self-managed instances.

References

Detect & fix
what others miss

Security magnifying glass visualization