Skip to content

Build1 publisher3 min readPublished

A file.path parameter in GitLab's commit API reads server files before authentication

The fix ships in 19.3.2, 19.2.6 and 19.1.8, and scanning for the flaw started the day after disclosure. Whether you can tell if a read succeeded on your instance depends on whether your proxy logs request bodies.

The Engineer · Build desk

Illustration accompanying A file.path parameter in GitLab's commit API reads server files before authentication

What happened

  • CVE-2026-85706 is rated CVSS 10.0 and sits in the commit API of self-managed GitLab, where an unauthenticated request can read files on the server when specific conditions are met.
  • Attack attempts against the flaw were observed the day after disclosure, according to the dev.to write-up citing BleepingComputer and GitLab.
  • On the published reconnaissance information, the write-up says success as far as obtaining valid credentials and using them has not been confirmed.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • constraint The evidence an operator needs lives in the request body, and standard access logs record only method, URL and status, so on an instance whose proxy logs skip bodies, a probe and a successful read look identical.
  • decision Patching and credential revocation are separate calls, and the second one has to be made without confirmation either way on most hosts.
  • exposure Any credential written into a config file or log on the GitLab box becomes reachable by an unauthenticated caller, and tokens for integrated services extend that reach past GitLab itself.
  • contradiction Confirmation stops at scanning, so the case for rotating rests on an inference the write-up itself declines to make.

The traversal string travels in the request body. GitLab's commit API accepts a `file.path` parameter, and the attack supplies a path outside the intended scope; when the conditions are met, the server returns file contents [3]. A default reverse-proxy access log records the method, the URL and the status, and the body goes unlogged. The write-up says so in its own detection notes: URLs alone cannot verify the `file.path` value, so you need a proxy or application log that captures request bodies [9]. Most self-managed instances leave bodies out, for the sensible reason that bodies contain secrets.

That leaves a weaker signal. The same guidance suggests checking response sizes on unauthenticated requests and the traffic that follows, while conceding that a large response by itself falls short of confirming that file data left the box [10]. On a host that keeps no file-access records, the write-up says past reads may never be pinned down after the fact [11].

Patching and rotating are two separate decisions. Updating to 19.3.2, 19.2.6 or 19.1.8, or later in each series, prevents reads caused by this flaw [4]. A token already copied is untouched by the update. The write-up lists GitLab guidance titled "Rotate the secrets file" among its related sources [12], and notes separately that revoking credentials is a countermeasure distinct from tightening file permissions and narrowing where sensitive data is stored [13].

Those three fixed versions cover the 19.1, 19.2 and 19.3 series [16]. Anyone running an older series sits outside that list. The same write-up lists a second CVE, CVE-2026-87719, alongside CVE-2026-85706 [15].

What public reporting confirms is scanning. The dev.to write-up, dated 11 September 2026 and citing BleepingComputer and GitLab, says attack attempts were observed the day after disclosure [6][5]. It also says that on the published reconnaissance information, success as far as obtaining valid credentials and unauthorized access has not been confirmed [7]. A good deal of the rest of its guidance is labelled inference by the author, including the VPN and allowlist advice [14] and the list of what a stolen token would reach: repositories, CI/CD variables, artifacts and runners [17]. That labelling is unusual and useful.

The flaw itself is rated CVSS 10.0 against self-managed GitLab CE and EE, on the grounds that an unauthenticated network caller can read credentials and sensitive information [1][2][20]. The interface shows nothing of the request, and the attack runs without user interaction, so normal use of the instance will not surface it [8].

In my view, an instance that was internet-facing during the exposure window, with no body-capturing proxy logs and no host file-access records, should rotate the secrets file and the credentials stored near it. The write-up's follow-up checks all run after the fact: token use from unknown sources, runner registration, project enumeration [18].

What to watch

  • A confirmed case of credentials actually read from a GitLab host, rather than scanning alone, would settle the rotation question for operators still deciding.
  • GitLab spelling out the "specific conditions" under which the commit API read succeeds, which would tell operators whether their configuration was ever exposed.
  • Detail on CVE-2026-87719, listed alongside CVE-2026-85706 in the same critical patch release.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories