GitLab disclosed it Thursday. Probes started at 06:00 UTC Friday. CVE-2026-85706 is a 10.0 in the repository commits API and the advisory language is "read arbitrary files." That phrasing is why it lands in somebody's queue as information disclosure and waits for the Monday change window. CISA put it in KEV the same morning the probes started, with a federal deadline of September 14. On a GitLab server the arbitrary files are CI/CD variables, runner tokens, and whatever the logs picked up. watchTowr's Jake Knott put the precondition plainly. One public project has to exist. After that there is no authentication step. Here is the part the patch does not cover. If your instance faced the internet on Friday morning, upgrading tells you nothing about what left before you did. The work order is rotation. Every CI secret, every runner registration token, every deploy key, and then a pass through the logs for POST requests to the repository commits API carrying a file.Path parameter, which is the shape watchTowr says the attempts take. I have yet to see the rotation half of this ride on the same ticket as the patch. It gets opened later, by someone else, and it is the half that decides whether last week mattered. This is GitLab's second critical in a few weeks. https://lnkd.in/g6KpX8n2 #VulnerabilityManagement #DevSecOps #GitLab #IncidentResponse #CISO
GitLab CVE-2026-85706 Information Disclosure Vulnerability
More Relevant Posts
-
A GitLab patch window is not just a maintenance window when the vulnerable API is already being probed from the internet. CVE-2026-85706 matters because the failure sits at the intersection of unauthenticated access and path traversal. On a self-managed GitLab server, that turns an exposed application endpoint into a potential route to local files, configuration data, and credentials. The operational problem is not only whether the instance has been upgraded; it is whether exploitation happened before the upgrade. That distinction changes the response. A clean package update does not tell you whether secrets were read yesterday, whether CI/CD credentials need rotation, or whether an exposed token has already been used elsewhere. In practical terms, it is a good time to: - inventory self-managed GitLab instances and confirm they are running 19.3.2, 19.2.6, 19.1.8, or a later fixed release - query reverse-proxy and GitLab logs for POST requests to /api/v4/projects/*/repository/commits/ containing file.path parameters - compare suspicious request timestamps with authentication, runner, repository, and outbound network activity - identify secrets stored on the GitLab host or exposed through configuration and CI/CD variables, then rotate those with plausible exposure When a critical patch lands after exploitation has begun, where does your process stop: upgrade complete, or compromise assessment complete? #LinuxSecurity #GitLab #VulnerabilityManagement #IncidentResponse #DevSecOps https://lnkd.in/dUSa6k2K
To view or add a comment, sign in
-
I went down a bit of a rabbit hole with CVE-2026-85706, and calling it “GitLab path traversal” actually undersells it! GitLab's repository commits API accepts a "path" parameter: "GET /projects/:id/repository/commits" Under normal conditions, that parameter is supposed to stay inside the repository, but the vulnerable code failed to enforce that boundary, and the endpoint was missing the authentication that should have protected it. So you end up with a pretty nasty result: Unauthenticated request → attacker-controlled path → filesystem boundary crossed → arbitrary file read. Now that's a very different problem from “someone can read a private GitLab repository.” The attacker here is eager to know what the GitLab process can read from the underlying host!! Now consider this, GitLab installation can have access to things such as: - application configuration - database connection details - CI/CD configuration - runner-related configuration - SSH keys or certificates - service credentials - environment-specific secrets - internal hostnames and infrastructure information So, the first file an attacker gets might not be the prize at all, it would be the map that points to the prize! We still talk about path traversal like the win is reading "/etc/passwd" (it might be) but here the question revolves around, what the GitLab process has permission to read? and suddenly the host’s permission model matters: • What user is GitLab running as? • What can that account actually touch? • Where are the real secrets stored? • What else lives on that box? Now add the fact that this is CVSS 10.0, unauthenticated, remotely reachable, and being exploited, now a “simple” file-read starts looking a lot more useful in a real attack chain. One detail that caught my eyes here is how the dangerous input sits on an API that developers already expect to handle paths. It doesn’t scream “read a file from the OS.” It looks like a normal repository path request. If you run self-managed GitLab, checking the version is table stakes, you should ask the better questions here like, • Was the instance exposed while vulnerable? • What could the GitLab process actually reach? • Do the logs show anyone walking the commits API somewhere it shouldn’t? What's you take on this? Help me understand how you are approaching the post-exploitation angle on this one? Source Documents: https://lnkd.in/dUkACBKh https://lnkd.in/dFmDp_cN #CyberSecurity #InfoSec #GitLab #DevSecOps #WebSecurity #ThreatHunting #OTSecurity #SupplyChain
To view or add a comment, sign in
-
GitLab shipped the fix on 10 September. Probes appeared on honeypots by around 06:00 UTC the next morning. CISA added it to the KEV catalogue the same day. And it marked the vulnerability as requiring forensic triage under BOD 26-04. That is the detail worth noticing. A forensic triage flag is a government agency stating, in a binding directive, that installing the update does not answer the question — the question is whether someone was already inside. CVE-2026-85706 is a path traversal in GitLab's repository commits API, scored 10.0. Improper path confinement plus missing authentication enforcement. One HTTP request, no credentials, arbitrary file read. On most servers that is a serious disclosure issue. On a GitLab server it is a harvest of CI/CD variables, deploy keys, access tokens, cloud credentials and signing material — the keys to everything downstream. Patching closes the endpoint and does nothing to the secrets read through it, which stay valid until rotated. Fixed in 19.3.2, 19.2.6 and 19.1.8. Self-managed only; GitLab.com and Dedicated are not affected. The log hunt costs nothing: HTTP POST to /api/v4/projects/{id}/repository/commits/ containing file.path parameters. It is a lead, not a rule, and a clean result proves nothing if your logs do not go back far enough. #devsecops #vulnerabilitymanagement #secretsmanagement #CISAKEV
To view or add a comment, sign in
-
GitLab has released fixes for CVE-2026-85706, a CVSS 10.0 path traversal flaw that drew in-the-wild probes within hours of public disclosure. The issue sits in the repository commits API and could allow an unauthenticated user to read arbitrary files from the GitLab server under the conditions described in the advisory. The release also addresses multiple other flaws, so this is one to track through normal GitLab patch channels rather than treating it as a single-CVE update.
To view or add a comment, sign in
-
GitLab just got hit with a CVSS 10 file-read flaw — and attackers are already probing it in the wild. CVE-2026-85706 is a path traversal vulnerability in the repository commits API. It lets unauthenticated users read arbitrary files from GitLab servers under certain conditions. The root cause? Improper path confinement and missing authentication enforcement. Impacted versions: • GitLab CE/EE 18.7 before 19.1.8 • GitLab CE/EE 19.2 before 19.2.6 • GitLab CE/EE 19.3 before 19.3.2 Exploitation requires just one thing: at least one public project must exist. Within hours of disclosure, watchTowr observed active in-the-wild probes. Attackers are reading log files and GitLab-specific configuration files to extract credentials, secrets, and sensitive information. By the weekend, threat actors escalated from behavioral probes to successful exploitation — dumping config files for secrets and system SSH configurations. That combination could allow password extraction and host access under the right conditions. This is the second critical GitLab vulnerability in recent weeks, following the GraphQL code injection flaw CVE-2026-19478 that was almost immediately exploited. Why attackers love GitLab: • Source code access • CI/CD secrets and credentials • Code injection into build pipelines • Downstream poisoning of anything connected CISA has already added CVE-2026-85706 to the Known Exploited Vulnerabilities catalog. Federal agencies must patch by September 14, 2026. If you run a self-managed GitLab instance exposed to the internet: • Patch to 19.3.2, 19.2.6, or 19.1.8 immediately • Limit public access if patching isn’t possible • Review logs for HTTP POST requests to /api/v4/projects/ id /repository/commits/ containing file.Path parameters Mass exploitation is likely not far away. Defenders have limited time to act. How is your team securing your infrastructure against this type of exploitation? Let’s discuss in the comments below. #GitLab #Vulnerability #CVE202685706
To view or add a comment, sign in
-
-
Gitlab Security #Vulnerability - Actively Exploited. #CISA has added CVE-2026-85706, a critical unauthenticated Gitlab path-traversal vulnerability to it's #KEV catalog. The vulnerable repository commits #API can expose arbitrary files, potentially including credentials and secrets. Affected installs should be upgraded to: 19.3.2 (or later), 19.2.6 (or later), or for the 19.1 branch, the applicable supported release. Detection and response: - Patch internet-facing Gitlab immediately and rotate secrets. Search proxy and Gitlab access logs for unauthenticated requests to /api/v4/projects/*/repository/commits - Prioritise requests containing file.path, traversal sequences, encoding variants or abnormal response sizes. - Review subsequent CI/CD token use, runner registrations, repository exports and modifications to pipeline definitions. - Assume credential exposure if exploitation evidence is found. Patching alone does not invalidate stole secrets. Detecting vulnerable versions: You can use the following query to detect vulnerable versions of #Gitlab in your estate using #Microsoft #Defender : DeviceTvmSoftwareVulnerabilities | where CveId =~ "CVE-2026-85706" | project DeviceName, DeviceId, OSPlatform, SoftwareVendor, SoftwareName, SoftwareVersion, CveId, VulnerabilitySeverityLevel, CveTags, RecommendedSecurityUpdate, RecommendedSecurityUpdateId
To view or add a comment, sign in
-
A namespace boundary is only as strong as the controller that acts on its behalf. CVE-2026-2270 is a useful reminder that Kubernetes authorization does not end when the API server accepts a request. A user with namespace-scoped write access to both StatefulSets and ControllerRevisions could influence kube-controller-manager, which operates with broader authority, into creating a pod in another namespace. That is the classic confused-deputy problem: the requester's permissions look limited, but a trusted controller later interprets stored data with more power than the requester ever had. In production clusters, this is exactly where simple RBAC reviews can miss risk. **In practical terms, it is a good time to:** - enumerate Roles and ClusterRoles granting create, update, or patch on both statefulsets and controllerrevisions - map those bindings to users, service accounts, CI jobs, and automation - confirm the running kube-controller-manager version, not just kubectl or worker-node versions - preserve and query Kubernetes audit events for changes to both resource types during the vulnerable period The bigger question is whether your access reviews evaluate individual permissions or dangerous combinations of permissions. Read the full analysis: #Kubernetes #CloudSecurity #LinuxSecurity #DevSecOps #AccessControl https://lnkd.in/eMzVYpyZ
To view or add a comment, sign in
-
⚠️ HACKTOBER DEVSECOPS AUDIT: How a 2-Year-Old Leaked GitLab Token Led to a Massive Breach A credential leaked two years ago can remain a silent ticking time bomb inside your software supply chain. In this #Hacktober supply chain autopsy, we examine how an exposed GitLab personal access token uncovered in public configs cascaded into the breach of the Internet Archive's 31-million-record database. 🔍 Technical Insights & Root Cause: • Ancient Token: An internal token generated in 2022 remained active with full API scopes across private GitLab repositories. • Lateral Pivot: Attackers leveraged the token to clone repositories, extract database connection secrets, and dump user data. • Core Lesson: Secrets do not age like fine wine—automated expiry and revocation are non-negotiable. 🛡️ Actionable Defense & Hardening Blueprint: Implement automated secret scanning across git commit histories, branches, and container images. Enforce maximum 90-day hard lifespans for all API tokens and developer credentials. 🔗 Read Blog: https://lnkd.in/gBt5bRE5 #sh3llc0d3 #shellcode #Hacktober #Hacktober2026 #SupplyChainSecurity #GitLab #SecretManagement #DevSecOps #DataBreach #InfoSec
To view or add a comment, sign in
-
GitLab CVE-2026-85706: One HTTP Request, No Authentication, Full File Read – Exploited Within 24 Hours: CVE-2026-85706, a CVSS 10.0 GitLab path traversal, was under active exploitation within 24 hours of disclosure. GitLab disclosed CVE-2026-85706 (CVSS score of 10.0) on September 10, 2026, a path traversal vulnerability in its repository commits API. CVE-2026-85706 affects GitLab’s repository commits API and can let attackers access files they should not see. A crafted request […]
To view or add a comment, sign in
-
RBAC audits often miss the credentials that matter most: the ones sitting inside automation. The permission combination behind CVE-2026-2270 is especially relevant to service accounts used by operators, deployment pipelines, and GitOps tooling. These identities often receive broader write access than human users because they are expected to reconcile complex application state. That makes credential placement part of the exposure calculation. A narrowly scoped developer account may be low risk while a CI runner with mounted credentials can provide the exact resource permissions an attacker needs after compromising the workload. **In practical terms, it is a good time to:** - inventory service accounts mounted into CI runners, operators, and deployment workloads - query their effective permissions for statefulsets and controllerrevisions - disable automountServiceAccountToken where workloads do not need Kubernetes API access - review projected tokens for audience and expiration settings - rotate credentials exposed to workloads that had the dangerous permission pair Read more: #Kubernetes #ContainerSecurity #DevSecOps #AccessControl #CloudSecurity https://lnkd.in/eMzVYpyZ
To view or add a comment, sign in
The same release also closed CVE-2026-87719, a 9.9 in EE where an authenticated Duo Chat user can pull Advanced Search config and stored credentials. Scope the rotation off both, not off the 10.0 alone. More of what we are tracking this week: https://www.cybersecurityalphabetsoup.com/news/