Cloud & DevOpsSecurity

GitLab CVE-2026-85706: Patch Your Self-Hosted Instance Now

GitLab CVE-2026-85706 CVSS 10.0 path traversal vulnerability - patch your self-hosted instance now
GitLab CVE-2026-85706: CVSS 10.0 path traversal flaw allowing unauthenticated arbitrary file read. Patch to 19.3.2 immediately.

GitLab shipped an emergency patch on September 10 for CVE-2026-85706, a CVSS 10.0 path traversal flaw in the repository commits API. No login required — one unauthenticated HTTP request is enough to read any file on your server. Secrets, SSH keys, database credentials, cloud access tokens: all readable by anyone who knows the endpoint. Active scanning started the next morning. CISA added it to the Known Exploited Vulnerabilities catalog on September 11 and gave federal agencies until September 14 to remediate. If you’re running a self-hosted GitLab instance and haven’t upgraded, you’re a live target right now.

What the Vulnerability Does

The flaw lives in the commits API endpoint at /api/v4/projects/{id}/repository/commits/. An attacker sends a POST request with a crafted file.path parameter that escapes the repository directory — standard path traversal mechanics, except GitLab skipped both authentication enforcement and path confinement on this endpoint. The server returns whatever file the path points to. No token. No account. Nothing.

That combination — network-accessible, zero authentication, trivial to execute — is why this hits CVSS 10.0. A PoC exploit was published publicly on Sploitus the same day watchTowr confirmed active scanning. The window between “patch released” and “attacker toolkits updated” was under 24 hours.

What an Attacker Can Read

GitLab servers make rich targets precisely because of what they store. Files an attacker could extract from a vulnerable instance include:

  • gitlab-secrets.json — GitLab’s master key file for encrypted data
  • /etc/gitlab/gitlab.rb — full server configuration including third-party API keys
  • database.yml — database connection strings and passwords
  • SSH private keys
  • AWS, GCP, and Azure credentials stored in config or environment files
  • CI/CD pipeline secrets written to disk

If your GitLab server has stored application tokens or Vault credentials anywhere on the filesystem, those are also in scope. Read access to gitlab-secrets.json alone is effectively full compromise — it contains the keys used to decrypt everything else.

Affected Versions

GitLab.com is already patched and not at risk. Self-managed instances running any of these are vulnerable:

  • GitLab CE/EE 18.7 through 19.1.7
  • GitLab CE/EE 19.2.0 through 19.2.5
  • GitLab CE/EE 19.3.0 through 19.3.1

The patched versions are 19.3.2, 19.2.6, and 19.1.8. Upgrade to whichever matches your current minor version line. This is a second critical CVE for self-managed GitLab in six weeks — CVE-2026-19478 (CVSS 9.4) hit in August and also saw exploitation within days of disclosure. At this point, delaying self-managed GitLab upgrades is a liability, not a maintenance preference.

How to Patch

Run the upgrade command for your deployment type. Refer to the official GitLab patch release notes for full details.

Omnibus on Debian/Ubuntu:

sudo apt-get update && sudo apt-get install gitlab-ee
# Community Edition: replace gitlab-ee with gitlab-ce

Omnibus on RHEL/CentOS:

sudo yum update gitlab-ee

Docker:

# Update your image tag in docker-compose.yml to 19.3.2-ee.0
docker compose pull && docker compose up -d

Verify your current version before upgrading:

cat /opt/gitlab/version-manifest.txt | head -1

If you’re multiple versions behind, use the GitLab upgrade path tool to determine intermediate steps before jumping to 19.3.2.

If You Can’t Patch Right Now

There is no vendor-approved workaround that substitutes for patching. That said, if you need a few hours while coordinating a maintenance window:

  • Block or rate-limit external access to /api/v4/projects/*/repository/commits/ at your WAF or load balancer
  • Enable two-factor authentication across your instance
  • Disable SAML two-factor bypass in GitLab admin settings

These reduce the attack surface but do not close the vulnerability. Patch as soon as possible.

After Patching: Rotate Your Secrets

Patching stops new exploitation but doesn’t undo access that already happened. Review your access logs for unusual hits to the commits API before September 10. If you see anything suspicious — or can’t rule out prior exposure — rotate:

  • All credentials referenced in gitlab-secrets.json
  • SSH keys on the server and in CI/CD pipelines
  • Cloud provider access keys
  • Any application tokens or integration secrets stored in GitLab config

CISA’s Binding Operational Directive 26-04 explicitly flags this vulnerability for forensic triage because exploitation may have occurred before public disclosure. BleepingComputer notes that active in-the-wild probes began at 06:00 UTC on September 11 — meaning any internet-exposed instance was under active attack within hours of the patch release. If your instance was internet-facing before September 10, treat it as potentially compromised until confirmed otherwise.

ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *