GitLab CVE-2026-85706: One HTTP Request, No Login, Full File Read — Exploited Within 24 Hours

Category
Cybersecurity
Explore more in this category
A CVSS 10.0 path traversal in GitLab's repository commit API lets unauthenticated attackers read any file on the server — and exploitation began within a day of disclosure. If you self-host GitLab, this is your patch window.
On September 10, 2026, GitLab disclosed CVE-2026-85706, a path traversal vulnerability in its repository commit API carrying the maximum possible severity score: CVSS 10.0. By September 11 — within roughly 24 hours of disclosure — security researchers were already observing active exploitation against internet-facing GitLab instances. For any organization running a self-managed GitLab server, this is not a "schedule it for next sprint" bug. It is a patch-tonight bug.
What the vulnerability does
The flaw lives in the code path that serves repository commit data. By crafting a single HTTP request with a maliciously formed path, an attacker can escape the intended directory and read arbitrary files from the server's filesystem — no account, no token, no authentication of any kind required.
Three properties make this as bad as vulnerabilities get:
1. Unauthenticated. The attacker needs nothing but network reachability to your GitLab instance. 2. Trivially exploitable. One HTTP request. No race conditions, no heap grooming, no special timing. If the endpoint answers, the file leaks. 3. Maximum impact on a high-value target. A GitLab server is not a random box. It holds your source code — and, far too often, the secrets embedded in it.
Why "file read" means "full compromise" in practice
Arbitrary file read sounds contained. On a GitLab server it is anything but. A short list of what a single request can return:
- CI/CD variables and job logs — cloud provider keys, registry credentials, deployment tokens.
- `config/gitlab-secrets.json` and database configuration — the keys that protect session tokens and encrypted columns.
- Source code of private repositories — including every hardcoded credential your developers swore they removed.
- SSH keys, TLS private keys, and service account files left readable by the GitLab process user.
Each of those converts a read-only bug into remote code execution, cloud account takeover, or persistent access downstream. This is why the CVSS panel scored it 10.0 even though the primitive is "only" a file read.
Exploited within 24 hours — the new normal
The speed of weaponization is the story inside the story. A decade ago, defenders measured their patch windows in weeks. The exploit-versus-patch gap for critical, internet-facing flaws has collapsed to hours. Automated scanning infrastructure — much of it now AI-assisted, as we covered in our reporting on AI agents exploiting freshly disclosed flaws — fingerprints vulnerable versions within minutes of a proof of concept appearing, and opportunistic actors follow immediately.
Self-hosted GitLab is a particularly attractive target because its footprint maps almost one-to-one onto software companies, consultancies, and IT departments — exactly the victims whose repositories and CI pipelines unlock further supply-chain access.
What to do right now
If you run self-managed GitLab, work this list in order:
1. Patch immediately. Upgrade to the fixed release GitLab published on September 10. Verify the running version after restart — do not trust the package manager's word alone. 2. Assume prior compromise. If your instance was internet-facing and unpatched between disclosure and your upgrade, treat it as breached until proven otherwise. 3. Hunt for indicators. Review access logs for requests to repository commit endpoints containing traversal sequences (`../`, encoded variants like `..%2f` and `%2e%2e`), especially from unfamiliar IPs or at unusual hours. 4. Rotate secrets, not just passwords. Any credential readable from disk — CI variables in job logs, deploy keys, registry tokens, cloud keys — should be considered exposed. Rotate them all. 5. Restrict exposure going forward. GitLab admin and API surfaces do not need to face the open internet. Put them behind a VPN or zero-trust gateway, and enable rate limiting and request logging at the edge. 6. Check your downstreams. If your GitLab instance builds or deploys production systems, review recent pipeline runs and artifact signatures for anything you did not trigger.
The bigger lesson
CVE-2026-85706 is the third major "patch in hours, not weeks" event of 2026's second half, following the FortiBleed credential dump and the ongoing Cisco FMC exploitation by ransomware and state-sponsored crews. The pattern is consistent: internet-facing development and edge infrastructure is where the attackers are investing, because that is where trust, secrets, and reach converge.
Your source code host is production infrastructure. Staff it, monitor it, segment it, and patch it like the crown jewels live there — because they do.




