mythsthe wider recordJetBrains TeamCity2023software / devops

everyone assumed:

our internal CI/CD build server isn't an attacker target

what was actually true:

A build server is not a tool that sits below the things worth protecting.

how it happened

  1. whoAPT29 and othersCVE-2023-42793
  2. the gapunpatched CI servercode execution
  3. the resultglobal campaignjoint advisory December 2023
the gap that let it happen the result

what everyone assumed

A CI/CD server feels like plumbing. It compiles, it packages, it signs, and it lives on the inside, which is the part that makes it feel safe: attackers are out there, and this is in here. The reasonable belief is that the interesting targets are the customer database and the email system, and the build server is just a tool that quietly serves the people who already have the keys.

what happened

On September 6, 2023, a critical authentication-bypass vulnerability in JetBrains TeamCity On-Premises was disclosed and given the identifier CVE-2023-42793, with a severity score of 9.8 out of 10. A patch followed within days. The vulnerability let an unauthenticated attacker bypass authorization and run code directly on the server. For organizations that did not apply the patch, the window stayed open while the work of the day went on, because nothing about a build compiling looks different when someone else can also reach it. By the time the joint advisory was published, the actors exploiting it included Russia’s foreign intelligence service, the group tracked as APT29, and the reach of the campaign was global.

step by step

  1. 6 September 2023a 9.8 authentication bypass in TeamCityUnauthenticated attackers can run code on the server.
  2. a patch follows; not everyone applies itBuilds keep compiling, so nothing looks wrong.the assumption breaks here
  3. APT29 exploits unpatched serversA global campaign.
  4. 13 December 2023joint advisory AA23-347AA build server can reach dozens of developers and what they ship.

how it surfaced

On December 13, 2023, CISA and partner agencies, including the FBI, the NSA, Poland’s military counterintelligence service, CERT Polska, and the UK’s NCSC, published advisory AA23-347A. The assessment was specific about why a build server was worth the effort: compromising it could give an intelligence service access to the networks of dozens of software developers, and to everything those developers build. The machine that felt like plumbing was a position. Whatever it built, an attacker who held it could shape on the way out.

A build server is not a tool that sits below the things worth protecting.

It is upstream of them, because it touches the code, the signatures, and the credentials of everything it ships, which is exactly why a patient actor reaches for it first.

picture it at a company like yours

The company here is made up. The other two paths are not: they happened, and each links to the story.

your company
a normal dayYour developers run a build server that turns code into the product you ship.
the gap nobody seesA critical patch came out, and nobody applied it because the builds kept working.trusting what a supplier ships
  1. in this story
    the day it mattersAn attacker uses the unpatched flaw to take over the build server.
    what it costs youFrom there they could change what you ship to every customer.
  2. or it goes like this
    howA genuine, signed update from a certified vendor carries a backdoor.
    what leavesa quiet way into your networkwho ends up with ita state intelligence service
    it happenedSolarWinds / Sunburst, 2020
  3. or it goes like this
    howA build helper everyone uses is hijacked and its versions repointed.
    what leavessecret keys, printed into build logswho ends up with itanyone reading public logs
    it happenedtj-actions/changed-files, 2025

sources

  1. CISA, Russian Foreign Intelligence Service (SVR) Exploiting JetBrains TeamCity CVE Globally (AA23-347A) ,
  2. CISA news release, December 13, 2023 ,
  3. JetBrains, CVE-2023-42793 Vulnerability in TeamCity ,

← all myths

your turn

what you can do about it

  1. this week

    Find your CI/CD and build infrastructure on the patch list and check where it sits relative to your internet-facing services, and look at which credentials and signing keys it can reach if someone else is holding it.

    Somewhere in your environment is a server that compiles or deploys, installed by someone who has since changed teams, patched on a schedule that is slower than your customer-facing systems because it never faces a customer. That gap is the assumption.

  2. go deeper

  3. if you're not sure where to start

    Run the offboarding checklist on one leaver. It covers every account and token to close when someone leaves.

    open the checklist →

the letter · every two weeks

one access gap in your inbox, with the fix.

Every issue takes one way access creeps in, shows a real incident where it went wrong, and ends with one thing to check that week. Written for the people who run the tools, without a security team behind them.

  • 1one mechanism, explained plainly
  • 2one real incident, taken apart
  • 3one step you can take on Monday

get the next issue

One email every two weeks. Your address stays here and is never passed to vendors. One click to unsubscribe. Privacy.