1. Executive summary
GitLab patched CVE-2026-85706 on 2026-09-10, a path traversal flaw (CWE-22) in the repository commits API affecting GitLab Community Edition and Enterprise Edition, rated CVSS 10.0 CRITICAL in the verified reference data. The vulnerability allows an unauthenticated attacker to read arbitrary files from the GitLab server via a single HTTP request, and it was added to CISA KEV on 2026-09-11 on evidence of active exploitation; EPSS stands at 11%. All self-managed deployment types are affected (Omnibus, source, Helm chart) across versions from 18.7 before 19.1.8, 19.2 before 19.2.6, and 19.3 before 19.3.2; GitLab.com is already patched and GitLab Dedicated customers need take no action. For EMEA financial services, the exposure is concentrated in internet-facing self-managed GitLab instances that hold source code, CI/CD variables, configuration files and credentials — an arbitrary file-read primitive on that asset is a direct route to downstream supply-chain compromise, and the KEV listing means this should be treated as an emergency change, not a routine patch cycle.
2. Regulatory framing
| Article | Trigger (the fact in this item) | Practical impact |
|---|---|---|
| DORA Art. 17: ICT-related incident management process | CVE-2026-85706 is KEV-listed with confirmed in-the-wild exploitation and an unauthenticated arbitrary file-read primitive; any client with an internet-facing self-managed GitLab instance in the affected version ranges must determine whether it was probed or exploited. | Activates the incident management process for exposure assessment and log review, not just a change ticket. Evidence of a successful read of secrets/credentials must be handled as an ICT-related incident with preserved artefacts. |
| DORA Art. 19: reporting of major ICT-related incidents to competent authorities | If the file-read primitive was successfully exercised against a client instance, the files reachable include configuration data, credentials and secrets — the classification question is whether that constitutes a major incident. | Determines whether a report to the competent authority is required and starts the reporting clock; the classification decision must be documented even where the outcome is "not major". |
| NIS2 Art. 21(2)(d): supply chain security measures | GitLab is a component of the client's own software development and CI/CD supply chain; compromise of credentials or configuration on that host can propagate into artefacts shipped to customers. | Requires the entity to assess and evidence supply-chain security measures around the development toolchain — patch currency, exposure of the instance, and secret hygiene on the host — not merely to remediate the CVE. |
No other article in the regulatory reference is directly engaged by this item on the facts available.
3. Technical analysis & attack chain
Confirmed attack chain (per vendor advisory, CISA KEV entry and Rapid7)
- Target identification. The attacker locates an internet-facing self-managed GitLab CE or EE instance in an affected version range: all versions from 18.7 before 19.1.8, all versions from 19.2 before 19.2.6, and all versions from 19.3 before 19.3.2. GitLab.com is already running a patched version and GitLab Dedicated customers are not affected; all self-managed deployment types are affected, including Omnibus, source code and Helm chart deployments.
- Unauthenticated request. The attacker sends a single HTTP request to the repository commits API — no authentication is required. watchTowr characterises exploitation as achievable with one HTTP request.
- Path traversal. The request carries a
file.pathparameter containing traversal sequences. GitLab attributes the flaw to improper path confinement combined with missing authentication enforcement in the repository commits API. The verified reference data classifies this as CWE-22 (Path Traversal); the CISA KEV entry describes the same root cause as improper path confinement plus missing authentication enforcement — both descriptions apply to the same defect. - Arbitrary file read. Successful exploitation returns the contents of arbitrary files from the GitLab server filesystem to the unauthenticated requester.
- Post-exploitation value. Per watchTowr, the files reachable include local files, configuration data, credentials and other secrets. This is the supply-chain relevance: a GitLab host typically holds CI/CD variables, deploy tokens, registry credentials and configuration that grant access beyond the host itself.
Observed exploitation activity. watchTowr reported over the weekend following disclosure that it was observing probes for CVE-2026-85706 in the wild, and warned that widespread exploitation was likely to follow quickly. CISA added the CVE to KEV on 2026-09-11 based on evidence of active exploitation. Confidence caveat: the specific probe observation is single-sourced to watchTowr — the KEV listing corroborates that exploitation is occurring, but the characterisation of probe volume and timing rests on one vendor's telemetry. Verify before treating probe counts as a reliable indicator of targeting against your estate.
What the sources do not establish. There is no reporting in the supplied material of a specific payload, malware family, persistence mechanism, privilege escalation, command-and-control channel, lateral movement or exfiltration tooling associated with this exploitation. The KEV entry records known ransomware campaign use: Unknown — there is no basis to describe this as ransomware activity. No threat actor is named in any source, and the verified reference data contains no MITRE ATT&CK profile for any actor in connection with this CVE; attribution is therefore unconfirmed and Adverse Trace makes none.
Related but distinct flaws in the same patch release. Rapid7 reports that the 2026-09-10 release also addresses 17 other vulnerabilities, including CVE-2026-87719, a critical insecure deserialization flaw (CWE-502) in GitLab EE with a CVSSv3.1 score of 9.9 — per GitLab, an authenticated user with Duo Chat access could, under certain conditions, obtain Advanced Search instance configurations and sensitive credentials using a specially crafted GraphQL subscription argument. This CVE is not in the verified reference data and is not known to be exploited in the wild; the 9.9 score is source-reported (Rapid7/GitLab) and has not been independently verified here. Separately, corpus-5 describes CVE-2026-19478, a critical code injection flaw patched in an earlier, unrelated GitLab release cycle (fixed in 19.2.4, 19.1.6, 19.0.8, 18.11.11) — it is not part of this patch release and its version ranges must not be conflated with those above.
4. Mitigation & containment
P1 — within 24 hours
- Inventory and patch. Identify every self-managed GitLab CE/EE instance and upgrade to the fixed version for its branch: 19.1.8, 19.2.6, or 19.3.2. Treat this as an emergency change outside normal patch cycles. GitLab.com and GitLab Dedicated require no action.
- If you cannot patch immediately, remove internet exposure. watchTowr's explicit advice for internet-facing self-hosted instances is to patch them or pull them from public access. Restrict the instance at the network edge (WAF/ACL/zero-trust proxy) so the
/api/v4/API is not reachable from untrusted networks. This is a containment measure, not a fix. - Hunt for exploitation attempts. Search web server, reverse-proxy and GitLab logs for HTTP POST requests to
/api/v4/projects/{id}/repository/commits/containingfile.pathparameters (watchTowr's stated detection guidance). Preserve matching log records before rotation. - Assume secret exposure where a probe succeeded. If any request matches, treat every secret reachable on that host as potentially disclosed: CI/CD variables, deploy keys and tokens, registry credentials, database credentials in
gitlab.rb/gitlab-secrets.json(Omnibus) and equivalent configuration in source and Helm deployments. Rotate in priority order — deploy tokens and CI/CD variables first, then integration credentials, then database and object-storage secrets.
P2 — within 72 hours
- Plan the upgrade window around migrations. The updates include database migrations. Single-node installations will experience downtime while migrations run; multi-node deployments can use GitLab's zero-downtime upgrade procedure. Of the fixed releases, only 19.3.2 includes post-deployment migrations — factor this into the change plan if you are moving to 19.3.2.
- Forensic triage. Rapid7 recommends looking for signs of compromise even after the update has been applied, because patching does not undo a prior read. Organisations subject to CISA's BOD 26-04 should follow the forensic triage requirements associated with the KEV entry. Note that the KEV entry sets a remediation due date of 2026-09-14 for US Federal Civilian Executive Branch agencies — not binding on EMEA entities, but a useful urgency marker for internal risk acceptance.
- Confirm exposure status of the instance. Establish whether the GitLab host was internet-facing during the window between the 2026-09-10 patch release and your remediation. This determination drives the DORA Art. 19 classification decision in §2.
P3 — within 7 days
- Patch the remainder of the release. Upgrade to a version that also carries the fix for CVE-2026-87719 (GitLab EE, CVSS 9.9 per Rapid7, CWE-502, Duo Chat / Advanced Search GraphQL subscription argument). Not known exploited, but it exposes instance configuration and credentials to an authenticated Duo Chat user. Where Advanced Search credentials were reachable, rotate them.
- Reduce standing exposure. Move self-managed GitLab behind authenticated access for administrative and API surfaces where operationally feasible, and add the
/api/v4/projects/*/repository/commits/path to edge logging and alerting on a permanent basis. - Vulnerability management coverage. Rapid7 states that Exposure Command, InsightVM and Nexpose customers can assess exposure to CVE-2026-85706 with a vulnerability check available in the September 15 content release — useful for confirming estate-wide coverage if you run those products.
5. Indicators of compromise
No atomic indicators of compromise (hashes, domains, IP addresses, file paths, registry keys) are available in the source material. The sources describe observable request behaviour only; those are listed below and are not machine-pivotable atomic indicators, so no copyable indicator block is provided.
Behavioural indicators
| Behaviour | Where to observe | Confidence |
|---|---|---|
HTTP POST request to /api/v4/projects/{id}/repository/commits/ containing a file.path parameter |
GitLab production logs, reverse-proxy / load-balancer access logs, WAF logs | Medium — detection guidance is single-sourced to watchTowr; the request path and parameter are consistent with the vendor's description of the vulnerable API |
| Unauthenticated access to the repository commits API from an unexpected source | GitLab api_json.log, proxy logs, netflow to the GitLab host |
Medium — inferred from the unauthenticated nature of the flaw as stated by GitLab and CISA; not independently corroborated by a second source |
| Probes against internet-facing GitLab instances in the affected version ranges | Edge IDS/IPS, WAF, external attack-surface telemetry | Low — the probe observation is single-sourced to watchTowr; verify against your own telemetry before drawing conclusions |
6. Detection
The sources provide no file-based artefacts (no hashes, filenames, mutexes or command lines), so no YARA rule is emitted — a rule built only from a URL path and a parameter name would be scanning for the exploit request rather than a malicious file, and is better expressed as the log detection below.
The following Sigma rule targets the request pattern watchTowr identified. The strings are reproduced exactly as they appear in the source and must not be defanged.
title: GitLab CVE-2026-85706 Repository Commits API Path Traversal Attempt
id: 8f3c1a52-6d47-4b9e-9c21-7a0e5d4b2f18
status: experimental
description: Detects HTTP POST requests to the GitLab repository commits API carrying a file.path parameter, the request pattern associated with exploitation of CVE-2026-85706 (unauthenticated arbitrary file read via path traversal).
author: Adverse Trace
date: 2026-09-14
references:
- https://www.theregister.com/security/2026/09/14/perfect-10-gitlab-bug-under-attack-days-after-patch-lands/5296176
- https://www.rapid7.com/blog/post/etr-cve-2026-85706-critical-gitlab-path-traversal-exploited-in-the-wild
logsource:
category: webserver
detection:
selection_method:
cs-method: 'POST'
selection_uri:
cs-uri-stem|contains: '/api/v4/projects/'
selection_path:
cs-uri-stem|contains: '/repository/commits/'
selection_param:
cs-uri-query|contains: 'file.path'
condition: selection_method and selection_uri and selection_path and selection_param
falsepositives:
- Legitimate authenticated API clients using the repository commits endpoint with a file.path parameter; correlate against authentication state and source IP reputation before escalating.
level: high
Deployment note. This rule is deliberately broad on the URI match because the project identifier in /api/v4/projects/{id}/repository/commits/ is variable. Tune by excluding known-good CI runners and internal automation source addresses. Because the flaw is exploitable without authentication, a matching request from an unauthenticated session should be treated as high priority regardless of source.
CVE assessment
1 referenced CVE — 1 actively exploited (CISA KEV), 1 critical (CVSS ≥ 9.0)
| CVE | CVSS | Exploited | EPSS | Summary |
|---|---|---|---|---|
| CVE-2026-85706 | 10.0 Critical | ⚠ KEV 2026-09-11 | 11% | GitLab has remediated an issue in GitLab CE/EE affecting all versions from 18.7 before 19.1.8, 19.2 before 19.2.6, and 19.3 bef… |
7. Sources
- Dark Reading — Maximum Severity GitLab Flaw Puts Supply Chains at Risk — https://www.darkreading.com/cyberattacks-data-breaches/maximum-severity-gitlab-flaw-supply-chains-risk — 2026-09-14
- The Hacker News — GitLab CVSS 10 File-Read Flaw Draws In-the-Wild Probes After Disclosure — https://thehackernews.com/2026/09/gitlab-cvss-10-file-read-flaw-draws-in.html
- NVD / CISA Known Exploited Vulnerabilities — CVE-2026-85706 — GitLab Community Edition and Enterprise Edition Path Traversal Vulnerability — https://nvd.nist.gov/vuln/detail/CVE-2026-85706
- Rapid7 — CVE-2026-85706: Critical GitLab Path Traversal Exploited in the Wild — https://www.rapid7.com/blog/post/etr-cve-2026-85706-critical-gitlab-path-traversal-exploited-in-the-wild — 2026-09-14
- The Register — Perfect-10 GitLab bug under attack days after patch lands — https://www.theregister.com/security/2026/09/14/perfect-10-gitlab-bug-under-attack-days-after-patch-lands/5296176 — 2026-09-14
- Help Net Security — Critical GitLab flaw allows attackers to modify or delete public projects (CVE-2026-19478) — https://www.helpnetsecurity.com/2026/08/18/gitlab-critical-code-injection-flaw-cve-2026-19478/ — 2026-08-18
- SecurityWeek — GitLab Vulnerability Exploited One Day After Disclosure — https://www.securityweek.com/gitlab-vulnerability-exploited-one-day-after-disclosure/
8. Adverse Trace position
We assess CVE-2026-85706 as an emergency-priority vulnerability for any EMEA financial services client running a self-managed GitLab CE/EE instance with internet exposure. The verified reference data gives CVSS 10.0 CRITICAL, CISA KEV status (added 2026-09-11) and EPSS 11%; the combination of unauthenticated exploitation, a single-request attack path, and an arbitrary file-read primitive on a host that concentrates source code and credentials makes this materially more dangerous than the EPSS figure alone suggests. Client impact is highest for firms whose GitLab instance is both internet-facing and holds production deploy credentials — the read primitive converts directly into downstream supply-chain risk. Two confidence caveats apply and should be carried into any internal reporting: the in-the-wild probe observation is single-sourced to watchTowr and should be verified against your own edge telemetry before enforcement decisions rest on it, and no actor attribution is available — no source names a threat group and the verified reference data contains no MITRE ATT&CK profile for this activity, so any attribution circulating elsewhere should be treated as unconfirmed. The KEV entry records ransomware campaign use as Unknown; we do not characterise this as ransomware activity. Adverse Trace will monitor for a second independent source on exploitation telemetry, for any GitLab advisory revision or additional fixed versions, and for evidence of post-exploitation activity (credential use, repository tampering) that would escalate this from a vulnerability advisory to an active-campaign advisory. Clients requiring assistance with exposure assessment, log hunting against the /api/v4/projects/{id}/repository/commits/ pattern, or DORA Art. 19 classification support should contact their Adverse Trace handler.
Published via PulseTrace — Adverse Trace threat intelligence.