TL;DR: A CVSS 10.0 path traversal flaw in GitLab CE and EE lets anonymous attackers read arbitrary files through the repository commits API, and Ethiack says it is already detecting exposure across affected self-managed instances. The risk is not just file disclosure, because reachable GitLab servers often sit at the centre of CI/CD trust, making exposed secrets and tokens an immediate governance problem.
NHIMG editorial — based on content published by Ethiack: Now Detecting CVE-2026-85706, an unauthenticated arbitrary file read in GitLab
By the numbers:
- GitLab CE and EE 18.7 through 19.1.7, 19.2 through 19.2.5, and 19.3 through 19.3.1 are affected.
Questions worth separating out
Q: What breaks when a self-managed GitLab instance is exposed to unauthenticated file read?
A: The immediate failure is not just disclosure of source files, but exposure of the secrets that let pipelines, runners, and deploy processes operate.
Q: Why does unauthenticated access to GitLab create such a broad security risk?
A: GitLab often sits at the centre of software delivery, so a single file-read flaw can expose credentials, tokens, and configuration that unlock downstream infrastructure.
Q: How should teams handle temporary controls while waiting to patch a critical GitLab flaw?
A: Use temporary controls only to reduce exposure, not as a substitute for remediation.
Practitioner guidance
- Patch affected GitLab instances immediately Upgrade self-managed GitLab to 19.3.2, 19.2.6, or 19.1.8 as soon as possible, and plan for database migrations that may cause downtime on single-node instances.
- Reduce reachability until patching is complete Place the instance behind SSO, a VPN, or an IP allowlist, and restrict access to /api/v4/projects/*/repository/commits* at the WAF or reverse proxy.
- Rotate exposed machine credentials If the instance was reachable while unpatched, rotate secret_key_base, database credentials, CI/CD variables, runner registration tokens, access tokens, and deploy keys.
What's in the full analysis
Ethiack's full article covers the operational detail this post intentionally leaves for the source:
- Version-by-version patch guidance for affected GitLab CE and EE releases
- The exact temporary access restrictions the vendor recommends while patching is in progress
- The proof-of-concept constraints, including the malformed credential condition described in the article
- Operational notes on database migrations and zero-downtime upgrades for multi-node deployments
👉 Read Ethiack's analysis of CVE-2026-85706 in GitLab →
GitLab arbitrary file read: what security teams need to patch now?
Explore further
Standing secret exposure is the real failure mode here: a path traversal bug becomes much more dangerous when GitLab stores secrets, tokens, and deploy keys close to code. The issue is not only that an unauthenticated attacker can read files, but that development platforms often retain machine credentials with broad downstream reach. That creates a direct NHI governance problem, because the exposed assets are service identities and secrets rather than just static configuration. Practitioners should treat source control platforms as privileged identity repositories, not ordinary web apps.
A few things that frame the scale:
- 79% of organisations have experienced secrets leaks, with 77% of these incidents resulting in tangible damage, according to the Ultimate Guide to NHIs.
- 91.6% of secrets remain valid five days after the targeted organisation is notified, showing a critical gap in remediation procedures.
A question worth separating out:
Q: What should teams do after a GitLab file-read vulnerability is discovered?
A: Treat the incident as both a platform compromise and a secret-exposure event. Check whether the instance was reachable during the vulnerable window, rotate all affected machine credentials, and review dependent CI/CD and deployment systems for reuse of the same secrets. The goal is to contain the blast radius before those credentials are reused elsewhere.
👉 Read our full editorial: CVE-2026-85706 exposes GitLab files through unauthenticated API access