JetBrains TeamCity: a critical auth bypass leading to RCE on your CI/CD server
> In short: JetBrains warns of a critical authentication bypass vulnerability in TeamCity On-Premises that could be exploited to achieve remote code execution. TeamCity is a CI/CD server — a compromise gives the attacker access to build pipelines, deployment credentials, source code, and the deployment keys for every environment the server can reach. Fix available.
Why this matters to you
If your engineering team self-hosts TeamCity for CI/CD (many enterprise and regulated environments do, for sovereignty reasons), this is a supply-chain incident waiting to happen. A CI/CD server compromise is the SolarWinds pattern at team scale: the attacker gets your source code, your build artifacts, and your deployment credentials in one move.
This follows the same pattern as the GitLab RCE we covered — self-hosted dev infrastructure with an authentication bypass that leads to code execution. The common thread: these platforms were designed for the intranet and are routinely exposed to the internet.
The flaw and its impact
An authentication bypass lets an unauthenticated attacker reach authenticated functionality on the TeamCity server. From there, the path to RCE depends on the server's configuration, but the CI/CD context makes the impact severe regardless:
What to do
The CI/CD attack surface pattern
TeamCity, GitLab, Jenkins, GitHub Actions runners — every major CI/CD platform has had a critical auth bypass or RCE in the past 18 months. The reason is structural: CI/CD servers are high-value targets (they hold every secret in the engineering org) with complex permission models and historical internet exposure. For a SaaS vendor, the operational answer is consistent: self-hosted CI/CD belongs behind a VPN, on a short patch cycle, with its secrets in a dedicated vault — not in build variables.
Building HR, payroll, or recruiting software? CleanIssue performs security audits for HR SaaS in real-world conditions, no source code access needed. For a first read of your exposure, start with an external review of your application.
Related articles
Three adjacent analyses to keep exploring the same attack surface.
GitLab RCE via Oj: a memory-corruption chain hidden in a non-security patch
Two Oj Ruby JSON parser bugs let any authenticated user run commands as `git` on self-managed GitLab <18.10.8 / <18.11.5 / <19.0.2, via crafted Jupyter notebooks. The fix shipped June 10 but was listed under bug fixes, not security. PoC published July 24.
Gitea CVE-2026-20896: a one-header auth bypass shipped in the official Docker image
The official Gitea Docker image shipped `REVERSE_PROXY_TRUSTED_PROXIES=*`, so with reverse-proxy auth enabled, an unauthenticated internet client became whoever it claimed to be via the X-WEBAUTH-USER header. CVSS 9.8, actively exploited. Fix: Gitea 1.26.3 / 1.26.4.
Supply chain: npm, composer, pip — when your dependencies are the attack
Supply chain attacks via package managers: typosquatting, dependency confusion, maintainer compromise, and how to protect yourself.
Sources
Related services
If this topic maps to a real risk in your stack, these are the most relevant CleanIssue audits.