CISA confirms exploitation of GitLab's CVSS 10 file read flaw CVE-2026-85706
Self-managed GitLab instances on 18.7 through 19.3.1 let an unauthenticated attacker read server files, and the credentials in those files are the real prize.

On this page
Key takeaways
- CVE-2026-85706 is a CVSS 10.0 path traversal and missing authentication flaw in GitLab's repository commits API, allowing unauthenticated arbitrary file reads.
- Fixed in GitLab CE and EE 19.3.2, 19.2.6 and 19.1.8, released September 10, 2026. Affected: all versions from 18.7 before 19.1.8, 19.2 before 19.2.6, 19.3 before 19.3.2.
- CISA added the CVE to the KEV catalog on September 11, 2026, with a September 14 deadline for federal civilian agencies and forensic triage required under BOD 26-04.
- watchTowr says activity moved from behavioural probes to successful exploitation, including dumps of config files and system SSH configurations.
- GitLab.com is already patched and GitLab Dedicated needs no action. The risk sits with self-managed instances, above all internet-facing ones.
What to do now
Immediate urgency- Inventory every self-managed GitLab instance, including staging, standby and DR copies, and record versions.
- Upgrade to 19.3.2, 19.2.6 or 19.1.8 as an emergency change, outside the normal patch cycle.
- Remove public internet exposure immediately for any instance that can't be patched right away.
- Search logs for POST requests to /api/v4/projects/{id}/repository/commits/ carrying file.path parameters.
- Rotate CI/CD variables, deploy tokens, runner registration tokens and SSH keys on instances that were internet-facing.
- Preserve logs and take a configuration backup for forensics, without delaying the upgrade.
GitLab shipped emergency patches on September 10, 2026 for CVE-2026-85706, a path traversal flaw in the repository commits API that GitLab rates CVSS 10.0. Under certain conditions an unauthenticated user can read arbitrary files from a self-managed GitLab server. Exposure management firm watchTowr reported probes against its honeypot network the next morning, and CISA added the CVE to its Known Exploited Vulnerabilities catalog on September 11 with a federal remediation deadline of September 14.
Patching closes the hole but doesn't undo a read. Any secret that sat in a config or log file on an exposed instance should be treated as known to an attacker until proven otherwise.
A CVSS 10.0 unauthenticated file read flaw in GitLab's commits API, CVE-2026-85706, is being exploited in the wild and is now in CISA's KEV catalog.
Upgrade self-managed GitLab to 19.3.2, 19.2.6 or 19.1.8 now. Then hunt your commits API logs and rotate every credential a file read could have exposed.
Affected & context
GitLab released critical patch versions 19.3.2, 19.2.6 and 19.1.8 on September 10, 2026, fixing CVE-2026-85706, a CVSS 10.0 path traversal flaw in the repository commits API that lets an unauthenticated user read arbitrary files from the server. watchTowr reported in-the-wild probes the next day, and CISA added the CVE to its Known Exploited Vulnerabilities catalog on September 11.
GitLab servers hold source code, CI/CD variables, deploy keys and tokens. An unauthenticated file read on a self-managed instance turns into credential theft, and from there into access to everything downstream of the build pipeline.
Organizations running self-managed GitLab Community Edition or Enterprise Edition on affected versions, especially internet-facing instances. GitLab.com is already patched and GitLab Dedicated customers need no action.
- Vendors
- GitLab
- Products
- GitLab Community EditionGitLab Enterprise Edition
- Geography
- Global
- Industry
- Software developmentTechnologyManaged servicesPublic sector
- CVEs
- CVE-2026-85706CVE-2026-87719
What GitLab patched on September 10
GitLab CVE-2026-85706 is a path traversal flaw in the repository commits API that lets an unauthenticated user read arbitrary files from a self-managed GitLab server. GitLab fixed it on September 10, 2026 in versions 19.3.2, 19.2.6 and 19.1.8 for Community Edition and Enterprise Edition, and told self-managed customers to upgrade immediately.
The release fixes 18 security issues. Two are rated critical. Per GitLab's patch release blog, the root cause of the headline bug is improper path confinement combined with missing authentication enforcement on that API. GitLab assigned it a CVSS v3.1 base score of 10.0, the maximum.
The issue came in through GitLab's HackerOne bug bounty programme, credited to the researcher s3ntago. The CVSS vector is AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, which reads as network reachable, low complexity, no privileges and no user interaction.
This is a self-managed problem
GitLab.com already runs the patched version and GitLab Dedicated customers don't need to act. The risk sits with instances you host yourself.
- Patch release date: September 10, 2026
- Fixed versions: 19.3.2, 19.2.6, 19.1.8 (CE and EE)
- 18 security fixes in total, two rated critical
- CVSS v3.1 vector: AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
How the commits API flaw works
Path traversal is a class of bug where an application accepts a file path from a request and fails to keep it inside the directory it's supposed to serve. Feed it the right sequence and the application reads a file somewhere else on disk.
In GitLab's case, two problems stack on the same endpoint. The path isn't properly confined, and authentication isn't enforced on the affected route. So the request doesn't need credentials to come back with file contents.
watchTowr, which reproduced the issue and published a Rapid Reaction write-up on September 11, says a single HTTP request is enough to read a file. Jake Knott, its head of threat intelligence, told The Hacker News that exploitation has one prerequisite: at least one public project must exist on the instance.
No public exploit code, indicator list or attacker infrastructure has been published by GitLab, CISA or watchTowr at the time of writing.
- Affected endpoint: the repository commits API
- Root cause: improper path confinement plus missing authentication enforcement
- Prerequisite reported by watchTowr: at least one public project on the instance
- No attacker indicators published so far
Which versions and deployments are affected
CVE-2026-85706 affects GitLab CE and EE across three ranges, per the vendor advisory. That covers a long tail of instances that skipped the last few patch cycles.
- All versions from 18.7 before 19.1.8
- All versions from 19.2 before 19.2.6
- All versions from 19.3 before 19.3.2
Deployment type doesn't change the exposure. GitLab notes that when no specific deployment type is named, all of them are affected: Linux package, source install, Helm chart and containers alike.
The real risk multiplier is reachability. An instance published to the internet can be read by anyone who finds it. One behind a VPN or a zero trust proxy still needs the patch, but the window for an opportunistic scan is much smaller.
- Affected: 18.7 before 19.1.8, 19.2 before 19.2.6, 19.3 before 19.3.2
- All deployment types affected: Linux package, source, Helm, containers
- GitLab.com patched; GitLab Dedicated requires no customer action
CISA put it in the KEV catalog within a day
CISA added CVE-2026-85706 to its Known Exploited Vulnerabilities catalog on September 11, 2026, based on evidence of active exploitation. Federal Civilian Executive Branch agencies were given until September 14, 2026 to remediate.
The entry also carries forensic triage requirements under Binding Operational Directive 26-04. That's the part worth reading if you're not a US federal agency. CISA is signalling that vulnerable systems may have been accessed before the patch landed, so patching alone doesn't close the incident.
CISA lists known ransomware use as unknown. No named threat actor has been tied to the activity in public reporting, and the agency hasn't attributed it.
- KEV addition date: September 11, 2026
- FCEB remediation deadline: September 14, 2026
- Forensic triage required under BOD 26-04
- Known ransomware use: unknown
From probes to exfiltration in a weekend
watchTowr's first report described behavioural probes against its global honeypot network, meaning someone had already reverse engineered the fix and rebuilt a working request. That was roughly a day after the patch, from around 06:00 UTC on September 11 per the firm's statement to The Hacker News.
Knott's later update went further. He said attackers moved from identifying vulnerable instances to successful exploitation and exfiltration, with config files dumped for secrets alongside system SSH configurations. That pairing matters: credentials plus SSH config can turn a file read into interactive access where password authentication is allowed.
Rapid7, which also covered the release, recommends looking for signs of compromise even after the update is applied. Of the 18 CVEs in this patch, only CVE-2026-85706 is known to be exploited so far.
- Probes observed from around 06:00 UTC on September 11, 2026
- Reported read targets: config files with secrets and system SSH configurations
- Only CVE-2026-85706 of the 18 fixes is known to be exploited
The other critical bug in the same release
CVE-2026-87719 is the second critical fix, rated CVSS 9.9 and limited to Enterprise Edition. GitLab says an authenticated user with Duo Chat access could obtain Advanced Search instance configurations and sensitive credentials through a crafted GraphQL subscription argument that bypasses serialization and performs a server object lookup. Rapid7 classifies it as insecure deserialization, CWE-502.
It affects EE from 18.3 before 19.1.8, 19.2 before 19.2.6 and 19.3 before 19.3.2. The same three patch versions fix it. There's no public report of exploitation.
Context from watchTowr: this is the second critical GitLab flaw in recent weeks, after a GraphQL code injection issue tracked as CVE-2026-19478 that was attacked almost immediately after disclosure.
- CVE-2026-87719: CVSS 9.9, EE only, needs an authenticated user with Duo Chat access
- Affected EE range: 18.3 before 19.1.8, 19.2 before 19.2.6, 19.3 before 19.3.2
- No public exploitation reports for CVE-2026-87719
What to do now, in order
Start with an inventory. Find every self-managed GitLab instance, including staging, standby and disaster recovery copies, and record the running version and whether it's reachable from the internet.
- Upgrade to 19.3.2, 19.2.6 or 19.1.8 depending on your branch, as an emergency change.
- Pull any instance you can't patch within hours off the public internet first.
- Hunt your commits API logs for exploitation attempts before assuming you're clean.
- Rotate every secret a file read could have exposed on an instance that was public.
- Preserve logs and take a configuration backup for forensics, without delaying the upgrade.
This patch includes database migrations, so single node installs will take downtime while they run. Multi node deployments can follow GitLab's zero downtime procedure.
For the hunt, watchTowr suggests reviewing logs for HTTP POST requests to the commits API carrying file path parameters. Check GitLab Rails and production logs together with NGINX, reverse proxy and WAF telemetry.
POST /api/v4/projects/{id}/repository/commits/ ... file.path=Patching is only half the job
The upgrade stops the read. It doesn't invalidate anything already read. Treat CI/CD variables, deploy tokens, runner registration tokens and SSH keys on exposed instances as burned.
- Patched versions: 19.3.2, 19.2.6, 19.1.8
- Log hunt: POST to /api/v4/projects/{id}/repository/commits/ with file.path parameters
- Database migrations mean downtime on single node installs
- Rotate CI/CD variables, deploy tokens and SSH keys after patching an exposed instance
What to watch next
watchTowr assesses that a move to indiscriminate mass exploitation is likely, given how low the complexity is. Public scanning data and honeypot reports over the coming days will show whether that happens, and whether ransomware crews pick it up.
Two other signals are worth tracking. GitLab publishes the underlying issue for each security fix 90 days after the patch, which will add detail once that window closes. And CISA may update the KEV entry if ransomware use is confirmed.
For teams running GitLab inside a software supply chain, the downstream question is bigger than the server. What could an attacker do with a stolen pipeline token before you rotated it?
- watchTowr expects a transition to indiscriminate exploitation
- GitLab publishes vulnerability issues 90 days after the patch release
- KEV ransomware status is currently listed as unknown
Timeline
GitLab ships the critical patch release
GitLab released 19.3.2, 19.2.6 and 19.1.8 for CE and EE, fixing 18 security issues. CVE-2026-85706 carries a CVSS score of 10.0 and was reported through the HackerOne bug bounty programme.
Source: GitLab critical patch release blog
Confidence: High
- 06:00 UTC
First in-the-wild probes reported
watchTowr said it was seeing in-the-wild probes for the vulnerability from 06:00 UTC, as reported by The Hacker News. The firm had reproduced the bug and assessed rapid, indiscriminate exploitation as likely.
Source: watchTowr, via The Hacker News
Confidence: Medium
- 13:31 UTC
watchTowr publishes its Rapid Reaction write-up
The write-up confirmed reproduction of the flaw, described behavioural probes against watchTowr's honeypot network, and published log hunting guidance for the commits API.
Source: watchTowr Rapid Reaction
Confidence: High
CISA adds CVE-2026-85706 to the KEV catalog
CISA listed the flaw based on evidence of active exploitation, set a September 14, 2026 remediation date for federal civilian agencies, and flagged it for forensic triage under BOD 26-04. Ransomware use is listed as unknown.
Source: CISA Known Exploited Vulnerabilities catalog
Confidence: High
Reported shift from probing to exfiltration
Over the weekend of September 12 and 13, watchTowr reported successful exploitation and exfiltration of sensitive files, including config files dumped for secrets alongside system SSH configurations. Exact incident dates aren't public.
Source: watchTowr, via The Hacker News
Confidence: Medium
Impact
Any self-managed GitLab instance on an affected version can have its server-side files read without credentials. On internet-facing instances, assume secrets stored in readable config and log files are compromised.
Business impact
Source code, pipeline secrets and deployment credentials are exposed on unpatched public instances. The downstream risk is code injection into build pipelines and access to whatever those pipelines can reach.
Technical impact
Unauthenticated arbitrary file read on the GitLab server. Patching requires a version upgrade with database migrations, which means downtime on single node installs.
Security impact
Credential theft leading to possible follow-on access. watchTowr reports config file dumps combined with system SSH configurations, which can enable interactive access where password authentication is permitted.
Privacy impact
Files readable from the server may contain personal data held in repositories, logs or configuration, depending on the instance.
Affected audience: Sysadmins running self-managed GitLab, DevOps and platform teams, MSPs hosting GitLab for clients, Security teams doing compromise assessment
Action required.
Technical details
- CVEs
- CVE-2026-85706, CVE-2026-87719
- CVSS
- 10
- Exploitation
- Exploited in the wild
- Attack vector
- Network. An unauthenticated HTTP request to the repository commits API, on an instance with at least one public project according to watchTowr.
- Affected versions
- GitLab CE/EE 18.7 up to 19.1.7, GitLab CE/EE 19.2 up to 19.2.5, GitLab CE/EE 19.3 up to 19.3.1
- Patched versions
- 19.1.8, 19.2.6, 19.3.2
Detection methods
- Review logs for HTTP POST requests to /api/v4/projects/{id}/repository/commits/ URIs containing file.path parameters (watchTowr guidance).
- Correlate GitLab Rails and production logs with NGINX, reverse proxy, WAF and load balancer telemetry for unauthenticated requests to the commits API.
- Check for unusual outbound access using credentials that were stored in GitLab configuration files.
Mitigations
- Upgrade to GitLab CE/EE 19.3.2, 19.2.6 or 19.1.8.
- Restrict or remove public internet access to self-managed instances that can't be patched immediately.
- Rotate credentials and secrets readable from the server after exposure.
Technical references
Response
Vendor statement
GitLab published the flaw in its critical patch release blog, rated it CVSS 10.0, and strongly recommends that all affected self-managed installations upgrade as soon as possible. It confirms GitLab.com is already patched and that GitLab Dedicated customers need no action.
Authorities
CISA added CVE-2026-85706 to the KEV catalog on September 11, 2026 based on evidence of active exploitation, set a September 14 remediation date for federal civilian agencies, and attached forensic triage requirements under BOD 26-04.
Customer guidance
Upgrade self-managed instances to 19.3.2, 19.2.6 or 19.1.8. Where an instance is internet-facing and can't be patched at once, limit public access. Review commits API logs for exploitation attempts and rotate exposed secrets.
Response status: Patched
Patch available: Yes
Workaround available: No
Updates
Initial draft, covering the KEV addition
Draft written after CISA added CVE-2026-85706 to the KEV catalog and after watchTowr reported escalation from probing to exfiltration. Story is still developing and may need a further update if mass exploitation or ransomware use is confirmed.
FAQ
Which GitLab versions fix CVE-2026-85706?
GitLab CE and EE 19.3.2, 19.2.6 and 19.1.8, released on September 10, 2026. Affected versions are all releases from 18.7 before 19.1.8, 19.2 before 19.2.6, and 19.3 before 19.3.2.
Is GitLab.com affected?
No. GitLab says GitLab.com already runs the patched version, and GitLab Dedicated customers don't need to take action. The vulnerability is a problem for self-managed CE and EE instances.
Is CVE-2026-85706 being exploited?
Yes. CISA added it to the Known Exploited Vulnerabilities catalog on September 11, 2026 based on evidence of active exploitation. watchTowr reported probes the same day and later described successful exploitation with file exfiltration.
How do I check whether my instance was exploited?
watchTowr suggests reviewing logs for HTTP POST requests to /api/v4/projects/{id}/repository/commits/ URIs containing file.path parameters. Correlate GitLab Rails and production logs with NGINX, reverse proxy and WAF telemetry. No public indicator list exists yet.
Is patching enough?
No. The upgrade stops further reads but doesn't undo any read that already happened. On instances that were internet-facing, rotate CI/CD variables, deploy tokens, runner registration tokens and SSH keys, and run a compromise assessment.
The bottom line
GitLab fixed a CVSS 10.0 unauthenticated file read in the repository commits API on September 10, 2026. Probes appeared within a day, and CISA listed the CVE as known exploited on September 11.
Upgrade self-managed GitLab to 19.3.2, 19.2.6 or 19.1.8 now, then treat every secret that lived in a readable file on an exposed instance as burned.
What happens next
Watch for confirmation of mass exploitation or ransomware use, further watchTowr and CISA updates, and the GitLab issue disclosure 90 days after the patch.
What to do
Inventory your self-managed GitLab instances, patch them as an emergency change, hunt the commits API logs and rotate exposed credentials.
Sources
GitLab · Sep 10, 2026 · Primary source
Claims supported
- Patch release date and fixed versions 19.3.2, 19.2.6, 19.1.8
- CVE-2026-85706 description, CVSS 10.0 score and vector
- Affected version ranges for CVE-2026-85706 and CVE-2026-87719
- GitLab.com is patched and GitLab Dedicated needs no action
- The release contains 18 security fixes and includes database migrations
Cybersecurity and Infrastructure Security Agency · Sep 11, 2026 · Primary source
Claims supported
- CVE-2026-85706 added to the KEV catalog on September 11, 2026 based on evidence of active exploitation
- September 14, 2026 remediation date and BOD 26-04 forensic triage requirement for federal civilian agencies
- Known ransomware use listed as unknown
watchTowr · Sep 11, 2026 · Primary source
Claims supported
- In-the-wild behavioural probes observed against watchTowr's honeypot network
- watchTowr reproduced the vulnerability and assesses rapid indiscriminate exploitation as likely
- Log hunting guidance for the commits API and the file.path parameter
- A single HTTP request is enough to read a file
The Hacker News · Sep 11, 2026
Claims supported
- Probes observed from 06:00 UTC on September 11, 2026
- Jake Knott statements on the public project prerequisite and on escalation to exfiltration
- Comparison with the earlier GraphQL code injection issue CVE-2026-19478
Rapid7 · Sep 13, 2026
Claims supported
- Only CVE-2026-85706 is known to be exploited among the vulnerabilities in the release
- Recommendation to look for signs of compromise even after patching
- CVE-2026-87719 classified as insecure deserialization, CWE-502
BleepingComputer · Sep 13, 2026
Claims supported
- Corroboration of the KEV addition and of active exploitation reporting
- Attackers can read credentials and secrets from vulnerable servers
Reader feedback
Written reviews
Loading reviews…