SolarWinds SUNBURST and Overpermissioned Build Pipeline Access

Overpermissioned build systems and trusted deployments combined to turn one breach into thousands.

Summary

Overpermissioned build systems and trusted deployments combined to turn one breach into thousands.

SolarWinds' Orion build server carried more privilege, in practical terms, than almost any single customer network it was built to monitor. That asymmetry, not a clever zero-day or a cracked encryption scheme, is why one compromised vendor became a vast number of compromised downstream environments. The build pipeline controlled the signing process, so whoever controlled the pipeline controlled what every privileged Orion deployment would run next. Attackers did not need to breach the Treasury Department, Microsoft, and the other eventual victims one at a time. They needed to breach one vendor's build server once, and let the update mechanism those victims trusted do the rest of the work for them.

Why the SolarWinds build server was a more valuable target than any single victim network

A single customer network, however large, has a ceiling on what it offers an intruder: one organization's data, one set of credentials, one perimeter to eventually get caught inside. A build server that produces signed software for thousands of customers has no such ceiling, because its output is trust itself, manufactured on a schedule and shipped automatically. The build process controlled the signing step, and the signing step was what made Orion's auto-update mechanism trustworthy to every firewall, antivirus product, and SOC analyst downstream. Compromise that one step and the attacker does not need thousands of separate intrusions. The update arrived carrying SolarWinds' own legitimate digital certificate, so it cleared every conventional check a customer's defenses were built to run. A firewall does not interrogate a signed update from a monitoring vendor it has trusted for years. That is the whole point of a signature, and that is what made it the perfect vehicle.

SUNSPOT and the Build Process as Injection Point

The tool that did the work, SUNSPOT, did not touch finished binaries and did not leave a trace in the checked-in source repository. It targeted the one moment in the entire software lifecycle where source code and signed, trusted output are effectively the same object: compilation. SUNSPOT watched for the processes involved in building Orion, swapped in a modified version of a source file in the instant before the compiler read it, let the compiler do its job, then put the original file back. The file it replaced was InventoryManager.cs, and the payload it introduced was built into SolarWinds.Orion.Core.BusinessLayer.dll, compiled and signed as though nothing had happened, because as far as the build system was concerned, nothing had. The tool even carried safeguards to stop an Orion build from failing outright, since a failed build draws a developer's attention and attention was the one thing this operation could not survive.

Because the swap happened on disk, transiently, during compilation, and the repository was restored to its clean state immediately after, code review of the checked-in source would never have found it. There was nothing to find; the file that mattered didn't exist long enough to be looked at. The operation also had a dry run: between September 2019 and February 2020, the attackers tested their injection method with benign placeholder code, confirming that the swapped file would compile cleanly and that the resulting DLL would pass signing checks, before committing to the weaponized version. How the attacker first got into SolarWinds' environment has never been officially confirmed. What is confirmed is narrower and arguably more important: the attacker had access to the CI/CD pipeline, the exact place where code gets built, tested, and shipped.

Excess Privilege on the Build Server

Speed is the reason build servers end up this powerful. Software teams under pressure to ship fast routinely grant DevOps toolchain accounts more access than any single task requires, and SolarWinds was not an unusual case in that respect so much as a representative one. Accounts along the build-and-deploy chain collect privileges the way junk drawers collect batteries, useful once, never removed, a pattern visible across the industry.

The specific privilege that mattered here was signing authority sitting inside the same process that compiled the code. That combination meant a compromised build was, by construction, a legitimately signed build, because the system doing the compiling was also the system authorized to invoke the certificate. Practitioners examining SolarWinds' downstream products described the pattern in plain terms: the user accounts those products ran under were almost always over-privileged, so whatever access the Orion service account held, the build's output inherited and extended. Keeping the signing key in a hardware security module would not have changed the outcome, because the key was never stolen. The build server was a trusted signer in its own right, so the real question was never who could steal the key. It was who could invoke it, and the build process could invoke it freely.

A build architecture that separated compilation, signing, and distribution into distinct steps with distinct identities and distinct access scopes would have changed the math considerably. A compromised build process would then need to defeat a second, independent boundary before it could produce an artifact anyone trusted. SolarWinds had no such boundary. One compromised step was sufficient for the whole chain.

The Overpermissioned Orion Deployment and the Blast Radius

Diagram: One Breach, Two Independent Privilege Failures. Visualizes: Show two sequential failure stages that together produced the SolarWinds blast radius.

The build-time failure was only the first of two independent privilege failures. The second happened inside every customer's own network, the moment Orion got installed and started running with the access it had always been given to do its job. Orion monitors infrastructure, so Orion typically holds broad access across that infrastructure, by design, in nearly every environment it touches. SUNBURST's value to the attacker scaled directly with however much privilege a given Orion deployment already carried, and because Orion's footprint was commonly the broadest account on the network, the backdoor inherited an unusually wide reach the moment it activated. Practitioners who reviewed the incident described the resulting access, specifically the service account's privileges, in blunt terms: the keys to the kingdom.

That reach was visible in the lateral movement that followed. Attackers forged SAML authentication tokens through a technique known as Golden SAML, using a compromised ADFS signing certificate to gain access to cloud services like Azure and Microsoft 365 without ever needing a valid password or multi-factor prompt. SUNBURST itself was built to wait. It sat dormant for up to two weeks after installation, checked its surroundings for security tools and sandbox indicators, and only then reached out to its command infrastructure, a delay engineered specifically to outlast the short window most organizations watch closely right after a software update. The payoff for that patience was dwell time exceeding 14 months, among the longest recorded for an operation of this scale, long enough for reconnaissance, lateral movement, and data exfiltration to proceed without tripping a single alarm. The resulting victim list included the U.S. Departments of Treasury, Commerce, State, Energy, Homeland Security, Justice, Defense, and Labor, plus the National Institutes of Health, Microsoft, FireEye, Cisco, Intel, Nvidia, VMware, and Malwarebytes.

FireEye's Accidental Discovery and the Limits of Perimeter and Signature-Based Detection

Nothing SolarWinds built, and nothing any customer's security stack was running, caught this on its own. FireEye found it while investigating irregularities in its own environment, traced the thread back to Orion, labeled the campaign UNC2452, and disclosed publicly on December 13, 2020. SolarWinds notified customers that same day and issued its own formal breach announcement on December 14, CISA issued Emergency Directive 21-01, and Microsoft published separate threat analysis. FireEye, Microsoft, and GoDaddy later worked together to sinkhole the primary command-and-control domain, avsvmcloud[.]com, functioning as a kill switch for infected systems still calling home. That action came after the backdoor had already been live in customer environments for months, making it a cleanup step.

The reason no perimeter tool flagged it earlier is structural. The SUNBURST DLL was, to endpoint protection and code-signing checks, indistinguishable from authentic SolarWinds software, so antivirus had no signature to match and no certificate anomaly to raise. A software bill of materials would not have helped either. SUNBURST carried no known vulnerability for a scanner to find; the malicious part was intent injected into otherwise legitimate code, which is exactly the blind spot SBOM-only approaches have. The fair reading of that gap is not that SBOMs are worthless. They answer a different question (what components exist in a piece of software) than the one SUNBURST posed (is a trusted component behaving the way it's supposed to, right now). The thing that could have caught this earlier was runtime behavioral monitoring, specifically the kind that flags a known monitoring service account the moment it starts forging SAML tokens or reaching into resources outside its normal operating pattern.

The SEC Enforcement Arc and Accountability for Pre-Breach Access Posture

The legal aftermath took up the question of who answers for a system built this way before anything goes wrong, and the record so far is mixed. On October 30, 2023, the SEC filed a civil complaint in the U.S. District Court for the Southern District of New York against SolarWinds and its CISO, Timothy G. Brown, alleging fraud in the company's cybersecurity disclosures and failures in internal controls. In July 2024, U.S. District Court Judge Paul Engelmayer dismissed most of those claims in a 107-page decision, writing that the disclosure-related charges "do not plausibly plead actionable deficiencies" and "impermissibly rely on hindsight and speculation." On July 2, 2025, the SEC, SolarWinds, and Brown announced a settlement in principle covering what remained of the case. That settlement never materialized, and on November 20, 2025, the SEC dismissed the lawsuit with prejudice through a joint stipulation, with no conditions attached.

Separately, and with a cleaner outcome, the SEC settled with four companies on the receiving end of the breach, Unisys, Avaya, Check Point, and Mimecast, for misleading disclosures about how the attack affected their own environments. Unisys paid the largest civil penalty of the group. Avaya had told the public that hackers accessed "a limited number of emails," while internally the intrusion had reached a larger set of files in its cloud file-sharing environment. The pattern that emerges from these two tracks is specific: downstream companies that misrepresented the scope of their own exposure paid real penalties, while the vendor whose build pipeline created the exposure in the first place did not, because a court found the pre-breach claims against its CISO too dependent on looking backward. There is currently no settled legal mechanism for holding anyone liable simply for building an overpermissioned automated system. Liability, so far, attaches to lying about what happened after the fact, not to the architecture that made the thing possible.

The structural controls that would have constrained the damage at each stage

Nothing about SUNBURST required a capability no one had thought of before. It required the absence of controls at specific points, and each of those points has a known fix. Build pipeline isolation separates the compilation environment from the signing authority, so a compromised build process has no direct path to invoke a certificate it does not hold. Reproducible, attested builds close a related gap: Docker Hardened Images now ship with complete software bills of materials and proof of provenance under SLSA Level 3, a standard that requires the build process itself to be verifiable. SUNSPOT's on-disk file swap, happening inside a non-isolated build environment, would break that chain of attestation, because the resulting provenance record would no longer match what was actually compiled, a direct violation of the build-isolation and non-falsifiable-provenance requirements SLSA Level 3 sets out.

Least-privilege service accounts address the runtime half of the problem. Orion needed broad read access to do its monitoring job. It never needed write access, token-signing authority, or standing cloud identity credentials, and scoping the service account down to what monitoring actually requires would have sharply limited how far an attacker could move after the backdoor activated. Runtime behavioral monitoring covers what signature-based tools cannot: an agent built to notice when a known monitoring service suddenly starts forging SAML tokens, invoking the task scheduler for lateral movement, or reaching into cloud resources outside its normal pattern would have cut the 14-month dwell time down considerably, because the anomaly itself, not a signature match, is the trigger.

The last piece generalizes past SolarWinds. Automated pipelines and AI agents now inherit the same kind of human-scale credentials Orion's service account carried, and they act on those credentials at machine speed. The same discipline that would have contained SUNBURST, scoped access, continuous monitoring, and real-time revocation the moment behavior deviates from policy, applies without modification to any autonomous system running inside an organization today.

Why SUNBURST is not a historical case study but an architectural warning about any automated system with excess access

SUNBURST succeeded for a specific reason: an automated system, the Orion build pipeline and its downstream service accounts, held more access than its actual task required, operated without a human watching each action, and triggered no alert when that access got misused. That description applies just as well to how most enterprise AI agent deployments are configured right now, as organizations roll them out across engineering, finance, product, and sales faster than they are rethinking what access those agents should actually hold.

AI agents spread through an organization the way Orion once did, quietly, usefully, and with credentials modeled on human roles rather than on the narrower thing the agent is actually supposed to do. An access model built for a person checking a dashboard once a day does not fit a system acting thousands of times an hour, and that same mismatch is what turned a monitoring tool into the keys to the kingdom in 2020. The lesson is not "secure your build pipeline" as a one-time fix. Any automated system carrying excess access, with no one watching what it does against what it's permitted to do, is a SUNBURST that simply hasn't been found yet. Finding every such system, measuring its behavior against its actual mandate, and enforcing that boundary in real time rather than after an incident report, is the direct, literal application of what the SolarWinds investigation established.

Sources

  1. SolarWinds Supply Chain Attack Uses SUNBURST Backdoor

More in Breach Reconstruction