MEDIUM 5.3

CVE-2026-9204: GitLab Gitaly SSRF via Repository Import – Patch Guidance

GitLab has fixed a vulnerability that lets authenticated users on versions 18.10 (before 18.10.8), 18.11 (before 18.11.5), and 19.0 (before 19.0.2) read files directly from the Gitaly server and reach internal network resources during repository imports. The issue stems from incomplete validation of secondary URLs in the import process. An attacker must already have valid GitLab credentials to exploit this flaw.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
Weaknesses (CWE)
CWE-918
Affected products
2 configuration(s)
Published / Modified
2026-06-11 / 2026-06-17

NVD description (verbatim)

GitLab has remediated an issue in GitLab CE/EE affecting all versions from 18.10 before 18.10.8, 18.11 before 18.11.5, and 19.0 before 19.0.2 that under certain conditions could have allowed an authenticated user to read arbitrary files from the Gitaly server and access internal network resources during repository import, due to insufficient validation of secondary URLs.

2 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-9204 is a Server-Side Request Forgery (SSRF)-adjacent vulnerability (CWE-918) in GitLab Community Edition and Enterprise Edition. During repository import operations, the system fails to properly validate secondary URLs, permitting an authenticated actor to craft requests that bypass intended network boundaries. This allows direct filesystem access to the Gitaly backend and potential lateral movement to internal services. The vulnerability requires prior authentication and manual intervention (triggering an import), making exploitation conditional but not prevented by default network isolation.

Business impact

Organizations running vulnerable GitLab instances face two primary risks: (1) exposure of repository metadata, configuration files, and potentially sensitive data stored on Gitaly servers; and (2) pivot points into internal networks, enabling reconnaissance or access to systems adjacent to GitLab. For companies using GitLab as a central development platform, this creates a path for authenticated insiders or compromised accounts to escalate access beyond their intended permissions.

Affected systems

GitLab Community Edition (CE) and Enterprise Edition (EE) versions are affected as follows: all versions from 18.10 before 18.10.8, 18.11 before 18.11.5, and 19.0 before 19.0.2. Organizations on 18.10.8 and later, 18.11.5 and later, or 19.0.2 and later are not affected by this issue.

Exploitability

Exploitation requires valid GitLab authentication credentials and the ability to initiate a repository import operation. An attacker cannot trigger this vulnerability anonymously or through network access alone. The attack surface is internal to GitLab users with project creation or import permissions. Practical exploitation assumes either a malicious insider or a compromised user account; once authenticated, the process is deterministic. This is rated CVSS 5.3 (Medium) due to the requirement for authentication and high-complexity attack conditions, despite high confidentiality impact.

Remediation

Upgrade to the patched versions: GitLab 18.10.8 or later, 18.11.5 or later, or 19.0.2 or later. These releases include hardened secondary URL validation during repository import. No workarounds are available; patching is the only remediation path. Organizations unable to upgrade immediately should restrict repository import privileges to a minimal trusted set of users and monitor import activity logs for suspicious URL patterns.

Patch guidance

Plan and execute upgrades according to your standard change management process. Verify against the official GitLab security advisory for your specific deployment model (CE vs. EE). Test upgrades in a non-production environment first. If upgrading is delayed, reduce the attack surface by limiting which users can create or import repositories. Apply upgrades during a planned maintenance window, as GitLab restarts are typically required.

Detection guidance

Monitor GitLab repository import logs and activity audits for imports sourced from unusual or internal IP ranges, localhost references, or file:// URL schemes. Check Gitaly server access logs for unauthenticated or unexpected file-read patterns. Implement alerts on failed import operations that reference internal network segments or filesystem paths. Review user permissions and recent account activity for users with repository import capabilities, especially if roles changed recently or activity is outside normal patterns.

Why prioritize this

Although rated CVSS 5.3 (Medium), this vulnerability warrants timely patching because it enables authenticated actors to bypass network segmentation and read sensitive repository data. The Gitaly server often stores critical source code and configuration; even insider threats or account compromise create meaningful exposure. The fix is straightforward and non-breaking, reducing barriers to deployment.

Risk score, explained

CVSS 5.3 reflects a Medium severity profile: network-accessible attack vector and high confidentiality impact are offset by the requirement for valid authentication (PR:L) and moderately complex attack setup (AC:H). The vector CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N indicates no integrity or availability impact. In organizational context, risk elevation depends on how tightly access controls govern import permissions and the sensitivity of repository content.

Frequently asked questions

Do I need to update if my GitLab instance is air-gapped or runs only private repositories?

Yes. While air-gapped deployments reduce external attack surface, the vulnerability is exploitable by any authenticated internal user. If your organization enforces strict access controls on import permissions and regularly audits user accounts, your risk is lower but not eliminated.

Can an attacker exploit this without a valid GitLab account?

No. The vulnerability requires prior authentication. An attacker must either be a legitimate user with import privileges or have compromised a valid account. Anonymous or unauthenticated exploitation is not possible.

What exactly can an attacker read from the Gitaly server?

The vulnerability allows reading of files accessible to the GitLab process on the Gitaly server. This typically includes repository objects, metadata, and configuration. Depending on deployment, this may also include application secrets or credentials stored on that system.

Is there a way to detect if someone has already exploited this before we patch?

Review Gitaly access logs and GitLab import audit trails for entries referencing internal IPs, localhost, or file paths. Look for imports that failed with URL validation errors or accessed unexpected network ranges. However, logs may not capture all attack evidence if retention is short; proactive patching is the safest course.

This analysis is for informational and defensive purposes only. The information provided does not constitute professional security advice and should be validated against official vendor advisories and your organization's risk management framework. Verify all patch versions and compatibility with your specific GitLab deployment before applying updates. Test patches in non-production environments. Security risk is context-dependent; organizations should assess impact based on their own access controls, data classification, and threat model. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).