What is GitLab?
GitLab Community Edition (CE) and Enterprise Edition (EE) form a self-hosted DevOps platform combining Git hosting, code review, CI/CD, package registries, and issue tracking. Tens of thousands of organizations run their own instance, and that instance holds the keys to the software supply chain: SSH host keys, the Rails secrets file, database credentials, runner registration tokens, CI/CD variables that often contain cloud API keys, and every private repository. An unauthenticated file read on a GitLab server is therefore rarely "just" information disclosure; it is usually a direct path to signing keys, session forgery, and cloud account takeover.
Overview
CVE-2026-85706 is a CVSS 10.0 path traversal (CWE-22) in the GitLab repository commits API. An unauthenticated attacker can read arbitrary files that the GitLab application user can access with a single HTTP request. GitLab shipped fixes on 2026-09-10; mass exploitation attempts began within hours, and CISA added the CVE to KEV on 2026-09-11 with a three-day deadline. GitLab.com and GitLab Dedicated were patched by GitLab before disclosure; only self-managed instances need action.
Affected Versions
| Affected range | Fixed version |
|---|---|
| 18.7 through 19.1.7 | 19.1.8 |
| 19.2.0 through 19.2.5 | 19.2.6 |
| 19.3.0 through 19.3.1 | 19.3.2 |
Both CE and EE are affected. The same patch release fixed 17 other vulnerabilities.
Technical Details
The repository commits API (POST /api/v4/projects/{id}/repository/commits) accepts a file.path parameter for actions on files in the target repository. Two defects combined:
- Missing authentication enforcement. The code path handling that parameter was reachable without a valid session or token.
- Improper path confinement. The supplied path was not confined to the repository working tree, so
../sequences allowed the request to reference arbitrary files on the server that thegitapplication user can read.
The result is an unauthenticated arbitrary file read. Typical targets are /etc/gitlab/gitlab-secrets.json (Rails secret key base and database encryption keys), /etc/gitlab/gitlab.rb, SSH host keys, and runner tokens. With the secrets file an attacker can forge sessions and API tokens, so the flaw is realistically an authentication bypass and full compromise, which is why the CVSS vector carries scope change (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N).
Attack characteristics: no authentication, low complexity, one HTTP request, no user interaction.
Discovery
The vulnerability was reported to GitLab through its HackerOne bug bounty program by the researcher known as s3ntago. GitLab disclosed it in the 2026-09-10 critical patch release.
Exploitation Context
watchTowr's honeypot network began recording exploitation attempts around 06:00 UTC on 2026-09-11, less than a day after the patch. Independent researchers observed the same internet-wide probing, and watchTowr assessed with high confidence that the bug would become indiscriminately exploited given the single-request path. Rapid7 and CISA confirmed in-the-wild exploitation the same day. There is no public attribution to a specific group as of 2026-09-16; the pattern matches opportunistic scanning by multiple actors.
Remediation
- Upgrade self-managed GitLab immediately to 19.3.2, 19.2.6, or 19.1.8. If you cannot patch within hours, take the instance off the public internet or place it behind a VPN or authenticating proxy until you can.
- Search access logs (
gitlab-rails/production_json.log,nginx/gitlab_access.log) forPOSTrequests to/api/v4/projects/*/repository/commitscontaining afile.pathparameter with traversal sequences, particularly from unauthenticated sources. - Assume secrets were read if the instance was exposed and unpatched on 2026-09-11 or later. Rotate
gitlab-secrets.jsoncontents (this invalidates existing sessions and re-encrypts stored CI variables, so follow GitLab's documented procedure), database passwords, SSH host keys, runner registration and authentication tokens, and personal access tokens. - Rotate downstream credentials stored in CI/CD variables, especially cloud provider keys, container registry credentials, and deploy keys, since those are the highest-value contents of a GitLab server.
- Review for persistence: new admin users, new personal access tokens, changed webhooks, and unexpected runner registrations created after 2026-09-10.
- Subscribe to GitLab security release notifications and keep self-managed instances on a supported minor version; the affected range began at 18.7, so instances lagging several releases were exposed longest.
Key Details
| Property | Value |
|---|---|
| CVE ID | CVE-2026-85706 |
| Vendor / Product | GitLab — Community Edition and Enterprise Edition |
| NVD Published | 2026-09-12 |
| NVD Last Modified | 2026-09-14 |
| CVSS 3.1 Score | 10 |
| CVSS 3.1 Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N |
| Severity | CRITICAL |
| CWE | CWE-22 find similar ↗ |
| CISA KEV Added | 2026-09-11 |
| CISA KEV Deadline | 2026-09-14 |
| Known Ransomware Use | No |
CVSS 3.1 Breakdown
Required Action
Timeline
| Date | Event |
|---|---|
| 2026-09-10 | GitLab releases 19.3.2, 19.2.6, and 19.1.8 fixing the flaw, reported via HackerOne by researcher s3ntago |
| 2026-09-11 | watchTowr honeypots observe internet-wide exploitation attempts from about 06:00 UTC |
| 2026-09-11 | Added to CISA Known Exploited Vulnerabilities catalog |
| 2026-09-12 | CVE record published by NVD |
| 2026-09-14 | CISA BOD 22-01 remediation deadline |
References
| Resource | Type |
|---|---|
| NVD - CVE-2026-85706 | Vulnerability Database |
| CISA KEV Catalog Entry | US Government |
| GitLab - Critical Patch Release: 19.3.2, 19.2.6, 19.1.8 | Vendor Advisory |
| watchTowr - Rapid Reaction: GitLab Critical Path Traversal Vulnerability (CVE-2026-85706) | Security Research |
| Rapid7 - CVE-2026-85706: Critical GitLab Path Traversal Exploited in the Wild | Security Research |
| BleepingComputer - CISA: Hackers now exploit max severity GitLab flaw in attacks | News |
| The Hacker News - GitLab CVSS 10 File-Read Flaw Draws In-the-Wild Probes After Disclosure | News |