By NHI Mgmt Group Editorial TeamBased on Ethiack: “Now Detecting: CVE-2026-85706 - Unauthenticated Arbitrary File Read in GitLab” (September 11, 2026)

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.


At a glance

What this is: Ethiack reports that CVE-2026-85706 is a maximum-severity GitLab path traversal flaw that can expose arbitrary files through unauthenticated API access on self-managed instances.

Why it matters: This matters because GitLab often sits at the centre of software delivery trust, so arbitrary file read can expose secrets, tokens, and credentials that govern CI/CD and downstream systems.


Context

CVE-2026-85706 is a file-read and path traversal problem, which means an attacker can use a request path to escape the intended file boundary and retrieve content the application should never disclose. In GitLab, that becomes a governance issue as much as a vulnerability issue because repository services, pipelines, and deployment credentials often converge in the same platform.

The identity angle is direct: when a source control platform stores CI/CD variables, runner tokens, deploy keys, and database credentials, unauthenticated file access can turn one web-layer flaw into non-human identity exposure. That is typical of modern software delivery environments, where a single control-plane weakness can reach machine credentials faster than teams can rotate them.


Key questions

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.

Q: Why is unauthenticated file read in GitLab a credential-governance issue?

A: Because GitLab often stores the secrets that power pipelines, runners, deploys, and database access. When an attacker can read files without authentication, the problem extends beyond disclosure into machine identity exposure, token recovery, and downstream trust revocation across the delivery stack.

Q: What are the signs that a source control platform flaw has become an identity incident?

A: Look for exposed CI/CD variables, unexpected token use, unknown runner registrations, and any file access paths that could reveal credentials stored in configuration or environment files. If those secrets grant access outside the platform, the incident has crossed into identity governance and privilege recovery.

Q: When should security teams compare patching to credential rotation after a GitLab vulnerability?

A: Use both, but sequence them according to exposure. Patching removes the exploit path, while rotation removes any trust the attacker may have harvested before the fix. If the instance was reachable while unpatched, rotation should follow immediately after containment and before routine service resumption.


Technical breakdown

How GitLab path traversal becomes arbitrary file read

Path traversal happens when an input value is used to construct a file path without strict confinement to an approved directory. In a repository commits API, that can let a request escape expected path checks and reach server-side files. The critical failure is not only validation, but also the missing authentication gate around a function that should never be anonymously reachable. Once the API hands back file content, the application has effectively converted a routing problem into a disclosure primitive. In a platform that hosts source code, credentials, and deployment artefacts, that primitive is enough to break the trust boundary around the whole delivery stack.

Practical implication: treat any unauthenticated file-returning API as a high-risk control boundary and force authenticated access plus strict path normalization.

Why self-managed GitLab instances become high-value exposure points

Self-managed GitLab often acts as a control plane for code, pipelines, runners, and secrets, so the blast radius is larger than the application itself. If an attacker can read configuration, credentials, or environment material, they may pivot into CI/CD systems, cloud providers, or internal databases that trust GitLab-issued identities. That makes the vulnerability especially sensitive in environments where service accounts and automation tokens are reused across projects. The issue is not merely data theft. It is identity compromise through the platform that issues and stores the credentials that power software delivery.

Practical implication: inventory every machine credential and deployment secret that depends on GitLab, then assume exposure if the instance was reachable before patching.

Why patching has to be immediate in mixed deployment estates

GitLab's affected-version window matters because many organisations run multiple self-managed nodes with different update cadences, backup images, and edge exposure profiles. A flaw like this can persist in only one internet-facing node and still compromise the environment because attackers need just one reachable instance. The article also notes that the patch includes database migrations, which means operational teams must plan downtime or use the zero-downtime procedure carefully. In practice, vulnerability response has to be coupled to service-owner coordination, because delaying a patch to avoid disruption can create a much larger credential recovery problem later.

Practical implication: prioritise exposure-based patching for any internet-reachable GitLab node and coordinate migration-aware maintenance before attackers exploit the window.


Threat narrative

Attacker objective: The attacker wants unauthenticated access to sensitive GitLab-resident files and the credentials that let them pivot into software delivery and connected systems.

  1. Entry occurs through anonymous access to the repository commits API on a self-managed GitLab instance that exposes the vulnerable path.
  2. Credential and file disclosure follows when improper path confinement and missing authentication enforcement allow reads of arbitrary server-side files.
  3. Escalation can occur if the exposed files contain CI/CD variables, runner tokens, database credentials, or deploy keys that extend trust beyond GitLab.
  4. Impact is the compromise of source control trust and downstream delivery systems, with possible movement into cloud, pipeline, or internal service accounts.
  • Internet Archive breach 2024: An exposed GitLab token opened Internet Archive code and 31 million user records; unrotated Zendesk tokens let the attacker back in weeks later.
  • Sisense breach 2024: A credential in Sisense's GitLab reportedly opened S3 buckets of customer tokens, passwords and certificates; CISA urged a full reset.

Read and download The State of NHI & AI Agent Breach Report 2026, covering 200+ breaches impacting Non-Human Identities including AI Agents.


NHI Mgmt Group analysis

Arbitrary file read in a control-plane application is an identity problem, not just a web vulnerability. When a source control platform stores CI/CD secrets and deployment credentials, anonymous file access becomes machine-identity exposure. That changes the response model from patching a bug to protecting the non-human identities that inherit trust from the platform. Practitioners should treat the credential estate behind GitLab as part of the incident surface, not a separate cleanup task.

GitLab-oriented delivery stacks create a concentrated trust dependency that attackers can exploit through one exposed node. The article's warning about self-managed instances reachable from untrusted networks reflects a larger pattern in software delivery governance: central platforms amplify both efficiency and compromise. A single unauthenticated path traversal can expose secrets that were never intended to be externally observable. Practitioners should reduce that concentration wherever possible and segment platform trust from downstream execution rights.

Standing secrets remain the real failure mode this flaw exposes. The issue works because CI/CD variables, runner registration tokens, access tokens, and deploy keys often remain valid beyond the moment they were created. That is a long-lived credential problem disguised as a file-read bug. Practitioners should map exposed files to the identities they unlock and treat rotation, revocation, and reachability together rather than as separate tasks.

Exposure-based remediation is now the correct governance posture for self-managed DevOps platforms. The important question is no longer whether a patch exists, but whether the instance was exposed before patching and what identities may have been harvested in that window. That is a material governance signal for identity teams, platform owners, and security operations. Practitioners should align remediation with credential recovery, not stop at version replacement.

OWASP-NHI NHI-02 Secret Leakage is the most precise lens for this issue. The article describes a condition where server-side file access can surface CI/CD secrets and tokens that were never meant to leave the platform boundary. This is exactly the sort of secret exposure that turns a technical flaw into a lifecycle failure for non-human identities. Practitioners should classify the incident as secret leakage with downstream identity impact, not as a generic disclosure event.

From our research library:

What this signals

GitLab file-read flaws should now be treated as credential-harvest events. In a platform that stores CI/CD variables, runner tokens, and deploy keys, the security outcome is not limited to disclosure. The programme response needs to shift from vulnerability closure to non-human identity recovery, because the file read is only the entry point to broader trust compromise.

Secret leakage becomes a platform-level governance problem when delivery systems are centralised. A vulnerability in the commits API can surface credentials that were intended to stay inside the software delivery boundary, and that means exposure checks must include identity ownership, revocation order, and downstream trust mapping. Practitioners should align platform hardening with credential lifecycle control, not isolate the issue to application patching alone.


For practitioners

  • Patch all affected GitLab instances immediately Upgrade self-managed GitLab CE or EE to 19.3.2, 19.2.6, or 19.1.8, and plan for database migrations and possible downtime during the change window.
  • Reduce reachability until patching is complete Place unpatched instances behind SSO, a VPN, or an IP allowlist, and restrict /api/v4/projects/*/repository/commits* at the WAF or reverse proxy.
  • Rotate every exposed machine credential If the instance was exposed while unpatched, rotate secret_key_base, database credentials, CI/CD variables, runner registration tokens, access tokens, and deploy keys.
  • Review downstream trust relationships Identify which pipelines, environments, and services trust GitLab-issued secrets so you can revoke or reissue credentials in the correct dependency order.
  • Validate external exposure across the estate Check for GitLab nodes outside the known inventory and verify which ones were reachable from untrusted networks before the patch window closed.

Key takeaways

  • This flaw turns GitLab from a code-management issue into a machine-identity exposure point because the platform often stores secrets that downstream systems trust.
  • The practical risk is broader than file disclosure because compromised CI/CD variables, runner tokens, and deploy keys can extend into pipelines and connected services.
  • Patching matters, but credential rotation and trust review determine whether the incident stays contained or becomes a wider delivery-chain compromise.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 and MITRE ATT&CK address the attack and risk surface, while NIST CSF 2.0 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP Non-Human Identity Top 10NHI-02 — Secret LeakageThe flaw can expose CI/CD secrets and tokens stored in GitLab files.
NHI-07 — Long-Lived SecretsThe article explicitly calls for rotating tokens and deploy keys after exposure.
Recommendation — Revoke any secrets exposed through GitLab file access and treat them as leaked NHI credentials. Reduce long-lived NHI exposure by rotating tokens and deploy keys after any reachable compromise.
MITRE ATT&CKTA0006; TA0010 — Credential Access; ExfiltrationThe attack path uses unauthenticated access to retrieve files and the secrets they contain.
Recommendation — Map the exploit to credential access and exfiltration techniques to drive detection and response.
NIST CSF 2.0PR.AA-05 — Access Permissions, Entitlements and AuthorizationsThe flaw shows a missing access control boundary around a sensitive API.
Recommendation — Tighten API authorizations and verify only intended identities can reach file-returning endpoints.
CIS Controls v8CIS-5 — Account ManagementSecret rotation and revocation are central to limiting the blast radius.
Recommendation — Use account and secret management controls to revoke exposed credentials immediately after validation.

Key terms

  • Path Traversal: A bug where crafted path segments such as ../ allow input to escape an intended directory boundary. In practice, it turns a normal file operation into a boundary break, which is especially dangerous when the affected service runs with non-human identity privileges and touches production data or secrets.
  • Commits API: A Commits API is an interface that lets software read, create, or track commit records in a version control system. It exposes structured data about code changes, authorship, timestamps, and history, which supports automation, auditing, release workflows, and security analysis of software supply chains.
  • Protected CI/CD Variable: A protected CI/CD variable is a pipeline secret restricted to approved branches, environments, or execution contexts. It reduces exposure, but it does not remove the governance obligation to limit scope, mask output, and revoke the secret when its purpose changes.
  • Automated Credential Rotation: Automated credential rotation is the controlled, scheduled replacement of reusable secrets without manual intervention. It shortens the useful life of exposed or stale credentials and reduces the chance that long-lived access remains available because teams forget or delay rotation.

Deepen your knowledge

The NHI Foundation Level course covers NHI governance, machine identity security, and secrets management in the industry's only accredited NHI security programme. It helps practitioners connect platform exposure to the credential lifecycle decisions that matter most.
NHIMG Editorial Note
Published by the NHIMG editorial team on September 14, 2026.
Updated on October 11, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org