Is your build server still trustworthy?

Whatever your build server produces gets signed and shipped to every customer. That makes it one of the most valuable machines an attacker can compromise, and one of the least watched.

A build pipeline that looks trusted but hides an implant on the build server, beside a change view of the build agent that flags a replaced tool DLL, a new scheduled task and a backdated timestamp
Trusted on the outside, verified on the inside.

Most organisations protect their source code carefully: access controls, code review, signed commits. Far fewer look closely at the machine that turns that source code into the product. Yet the build server is where trust is created. Its output is signed with your certificate and installed by your customers without a second thought.

If an attacker controls the build server, they don't need to touch your source code at all. They only need to change what happens during the build.

How build servers get compromised

The best-known example is the SolarWinds attack, disclosed in December 2020. Investigators found that the attackers had placed malware on the build environment that watched for the product being compiled and quietly swapped in a malicious source file during the build, then put the original back. The source code in the repository looked clean. The signed release that reached customers was not.

In 2023, the 3CX desktop app was trojanised in a similar way: the attackers reached the company's build environment and shipped a tampered, signed release to its customers. The entry point was traced back to compromised software on an employee's machine, a reminder that the path to a build server is often indirect.

The pattern is the same each time. The attacker changes something on the build machine: a tool, a library, a script, a scheduled task. Then they wait for the next release.

Why it goes unnoticed

What to check on a Windows build agent

The question to answer is simple: has anything changed on this machine that the build process didn't put there? In practice, look at:

Why a clean baseline matters

You can only spot an unexpected change if you know what the machine looked like before. The best time to record a build agent is straight after it is built or rebuilt, when you know it is clean. Every later scan can then be compared with that baseline, and with the scan before it.

That turns "is our build server compromised?" from a question nobody can answer into a list of specific changes, each with a time and a location.

Where Tracknosis fits

Tracknosis is a lightweight agent for Windows that reads every file and registry record directly from the disk and compares each scan with the last. On a build agent, that means:

Your own build output will appear as change, which is expected: scan between builds, focus on the toolchain and the system, and use rules to hide routine log and temporary files. Unsigned executables and scripts are never hidden by folder rules, by design, and High-risk changes are never hidden at all, so a tampered tool can't be tidied away by a broad rule.

A simple routine

  1. Scan each Windows build agent straight after it is built or rebuilt: that is your clean baseline.
  2. Scan again on a schedule, between builds, and before every release.
  3. Review any High-risk change to the toolchain, auto-starts or system before the release is signed.
  4. Keep the scan history: if something is ever questioned, you can show exactly what the build server looked like when each release was made.

Source code gets reviewed. The machine that builds it should be checked too.

Check what changed on your build servers

Request a guided trial: we install Tracknosis with you on one of your Windows machines and walk you through your first results.

Request a guided trial See the use case