GitLab's Perfect 10: One Request Reads Every File on Your Server
GitLab’s Perfect 10: One Request Reads Every File on Your Server
Section titled “GitLab’s Perfect 10: One Request Reads Every File on Your Server”GitLab shipped patches on September 10 with a CVSS 10.0 advisory, the maximum score on the CVSS v3.1 scale (The Register, 2026). The flaw, CVE-2026-85706, lives in the repository commits API. It lets an unauthenticated attacker read arbitrary files from a self-managed GitLab server (Rapid7, 2026). Exploitation attempts started within roughly a day of the fix (Security Affairs, 2026). If you host GitLab yourself, this is the story to act on today.
The flaw: two failures, one request
Section titled “The flaw: two failures, one request”GitLab attributes the bug to two layered weaknesses. The repository commits API lacked proper path confinement, and the endpoint was missing authentication enforcement (SOC Prime, 2026). The API built a file path from attacker input without confining it to the repository, and the vulnerable condition did not require a login (Horizon3, 2026). Together they let a remote attacker walk the path out of the repo and read files anywhere the GitLab process can reach.
The exploit is one HTTP POST request with a crafted file.path parameter (Security Affairs, 2026). No credentials, no plugin, no multifactor bypass. watchTowr assessed the exploitation complexity as low and predicted broad in-the-wild attacks the day after the fix shipped (watchTowr, 2026).
GitLab fixed the flaw in versions 19.1.8, 19.2.6, and 19.3.2 for Community Edition and Enterprise Edition. Every earlier supported release is vulnerable (Field Effect, 2026; AhnLab ASEC, 2026).
What one request can expose
Section titled “What one request can expose”Arbitrary file read on a GitLab server is a credential grab, not a curiosity. The files most teams store on that box include SSH keys, database credentials, deploy tokens, CI/CD variables, and cloud keys (Security Affairs, 2026). Those files give an attacker the repositories, runners, registries, and production deployments that GitLab orchestrates (SOCRadar, 2026). Dark Reading framed the outcome directly: a maximum-severity GitLab flaw puts software supply chains at risk (Dark Reading, 2026).
| Typical file on a self-managed GitLab box | Why it matters |
|---|---|
| SSH keys | Direct access to repositories and hosts |
| Database credentials | Control of the GitLab database |
| Deploy and runner tokens | Impersonate pipelines and CI/CD jobs |
| CI/CD variables | Secret values injected into every build |
| Cloud keys | Access to the infrastructure GitLab deploys to |
The confirmed behavior is file disclosure, not direct code execution (SOCRadar, 2026). The risk does not stop there. The disclosed files are usually the credentials that unlock code execution and lateral movement elsewhere (Bank Info Security, 2026).
The timeline: patch to exploit in under a day
Section titled “The timeline: patch to exploit in under a day”| Date | Event |
|---|---|
| Sept 10 | GitLab ships 19.1.8, 19.2.6, and 19.3.2 with an advisory for CVE-2026-85706, one of 17 fixes (watchTowr, 2026) |
| ~20 hours later | Exploitation and probing attempts observed, one request per hit (forkast, 2026) |
| Sept 11 | CISA adds CVE-2026-85706 to the Known Exploited Vulnerabilities catalog (CyberSecurityNews, 2026) |
| Sept 12 | Public proof-of-concept code circulates, lowering the skill bar further (SOC Prime, 2026) |
| Sept 14 | The Register: “Perfect-10 GitLab bug under attack days after patch lands” (The Register, 2026) |
CISA set the federal remediation due date at September 14 and marked the CVE for forensic triage under Binding Operational Directive 26-04 (Rapid7, 2026).
The rest of the batch
Section titled “The rest of the batch”CVE-2026-85706 was one of 17 vulnerabilities fixed on September 10 (forkast, 2026). Two others deserve your attention:
| CVE | CVSS | What it does |
|---|---|---|
| CVE-2026-87719 | 9.9 | Insecure deserialization in the GraphQL subscription serializer. An authenticated user with Duo Chat access can pull Advanced Search configurations and credentials (GitLab Security, 2026; Rapid7, 2026) |
| CVE-2026-88765 | 8.5 | Buffer overflow in the Unicode conversion wrapper. Remote code execution via crafted Git project exports (forkast, 2026) |
GitLab’s own security response team made the practical point: install the complete patch release, not a single fix (GitLab Security, 2026). The 9.9 deserialization flaw needs the same release, and it can expose credentials of its own. Of the batch, only CVE-2026-85706 is known to be exploited in the wild so far (Rapid7, 2026).
Your checklist
Section titled “Your checklist”- Upgrade now. Move to 19.3.2, 19.2.6, or 19.1.8 depending on your track (watchTowr, 2026). Exploitation arrived before many teams finished reading the advisory.
- Check for compromise before rotating anything. Look for POST requests to the commits API with a
file.pathparameter (Security Affairs, 2026). SOC Prime shipped detection content for the signal (SOC Prime, 2026). - Rotate exposed credentials. Tokens, SSH keys, CI/CD variables, and cloud keys must all change after the patch (GitLab Security, 2026).
- Patch the whole release. A partial install leaves CVE-2026-87719 and the rest of the batch open (GitLab Security, 2026).
- Treat exposure as an incident. A GitLab box with exposed SSH and a file-read hole is a source-code and secrets breach, not a patch ticket (Dark Reading, 2026).
Also today: Cisco’s email gateway under attack
Section titled “Also today: Cisco’s email gateway under attack”Cisco patched a separate zero-day on September 15. CVE-2026-76461 is a SQL injection in the AsyncOS email parsing engine of the Secure Email Gateway, rated CVSS 9.8. An unauthenticated remote attacker can execute commands with root privileges, and Cisco confirms active exploitation (BleepingComputer, 2026; The Hacker News, 2026). It is the second Secure Email Gateway CVE in the KEV catalog after CVE-2025-20393 (SecurityWeek, 2026). If you run the appliance, the patch is the update.
The takeaway
Section titled “The takeaway”CVE-2026-85706 is the new baseline for patch urgency in self-hosted DevOps. A CVSS 10.0 file read, no authentication, one request, exploited within a day and added to KEV in two (The Register, 2026). The fix versions are known, the detection signal is documented, and the credential rotation list is short (Rapid7, 2026). The only open question is whether your instance was scanned before you patched. Upgrade, audit, rotate, and assume the attackers already checked your version string.