Incident Analysis

SunBurst: A Supply Chain Attack Evolution Study

The SolarWinds SunBurst campaign rewrote the supply chain threat model. Five years of research reveal what changed and what defenders still miss.

Shadab Khan
Security Engineer
6 min read

On December 13, 2020, FireEye (now Mandiant) published the disclosure that set the tone for the decade: a trojanized update to the SolarWinds Orion platform, shipped between March and June 2020 as signed builds 2019.4 HF5 through 2020.2.1 HF1, carried a backdoor now tracked as SUNBURST (SolarWinds.Orion.Core.BusinessLayer.dll, SHA-256 32519b85c0b422e4656de6e6c41878e95fd95026267daab4215ee59c107d6c77). Roughly 18,000 organizations downloaded the implant. Fewer than 100 received hands-on-keyboard follow-on activity from UNC2452 / APT29. What made SunBurst novel was not the malware — it was the attackers quietly modifying source during MSBuild at C:\BuildTool\Source\Orion\OrionImprovements, stripping their injector after compilation, and letting SolarWinds' own release signing infrastructure bless the result with a valid Authenticode signature. The attack ran for nine months undetected. This post reconstructs the build-time pivot, the SUNSPOT injector, and what the industry actually changed afterward.

How did the attackers subvert the SolarWinds build pipeline?

The attackers compromised the Orion build servers and installed SUNSPOT (taskhostsvc.exe), a bespoke implant that monitored running MsBuild.exe processes and swapped a legitimate source file for a trojanized variant mid-compile. CrowdStrike's analysis showed SUNSPOT polling process creation events roughly every second, matching the target argument Orion.Core.BusinessLayer.csproj, then performing a hash check to confirm the expected pristine source before replacement. After the compile completed, SUNSPOT restored the original file, leaving git history clean. Because the final DLL was signed with SolarWinds' valid Solarwinds Worldwide, LLC Authenticode certificate (serial 0fe973752022a606adf2a36e345dc0ed), downstream customers had no integrity signal to distrust. This is the critical lesson: source control integrity, CI logs, and artifact signatures all looked clean in isolation. Only cross-referencing source-to-binary reproducibility would have caught it.

Why did SUNBURST evade so much commercial tooling?

SUNBURST evaded EDR because it behaved like Orion itself for its first 12-to-14 days of dormancy, then used DGA-style subdomains under avsvmcloud[.]com encoded with a custom base32 variant to report victim identity before beacon escalation. The staging server distinguished high-value targets (US government, Microsoft, Mandiant, Cisco) and silently dropped uninteresting ones with a NOT_FOUND / kill switch response. Only selected victims received the TEARDROP memory-only loader and Cobalt Strike BEACON. Defensive products that looked for known IOCs found nothing because there were none; the C2 domain was registered August 2019 and held no reputation. SUNBURST also checked for analysis tools by hashing process and driver names against a blocklist of 125 entries including windbg, autoruns, and ollydbg. If any matched, it self-terminated.

What was the blast radius beyond SolarWinds customers?

The blast radius extended into Microsoft 365 via the second-stage tradecraft known as the Golden SAML attack, where operators forged SAML tokens using stolen AD FS token-signing certificates. CISA Alert AA21-008A documents that UNC2452 then used those tokens to access Microsoft 365 mail and files as any user, bypassing MFA entirely because MFA happens at authentication, not token validation. Microsoft disclosed that source code repositories for Azure, Exchange, and Intune were viewed. The Department of Justice confirmed 27 US Attorneys' Offices had email mailboxes accessed. The US Treasury, Commerce, State, Energy, and NIH were all victims. The Cyber Safety Review Board's later review of the related 2023 Storm-0558 incident explicitly cited SunBurst as the reason the token-forging threat model had to be treated as first-class.

How did SolarWinds respond technically?

SolarWinds rebuilt their pipeline around a model they call "Next-Gen Build System" — parallel reproducible builds across three independent pipelines with bit-for-bit comparison before signing. They adopted an in-toto-style attestation for every build step and moved signing keys into HSMs with quorum approval. They also began publishing their SBOMs in CycloneDX format and committed to the SLSA framework at level 3. This was not cosmetic. Before SunBurst, the industry assumption was "sign the output." After SunBurst, the assumption became "prove every input and transformation." The Executive Order 14028 (May 12, 2021) that followed directly cited this class of attack when mandating SBOMs, SLSA-style attestations, and secure software development attestations for federal vendors.

What should defenders actually do differently?

Defenders should treat the build server as a production system with the same controls as domain controllers: isolated network, hardware-rooted identity, ephemeral agents, attested boot, and append-only logs shipped out-of-band. Lock down who can push to release branches, enforce two-person review for infrastructure-as-code changes touching CI, and use hermetic builds where the toolchain is version-pinned and fetched by content hash. Critically, verify reproducibility — if two independent builders produce different bytes from the same source, you have a problem. For consumers of vendor software, require SBOMs, verify signatures against pinned keys, and monitor for unexpected outbound DNS from server software. A 12-day dormancy window means first-week behavioral baselines are worthless; extend them.

# Example hermetic build constraint
build:
  toolchain_sha256: "a1b2c3..."   # pinned compiler hash
  network_egress: deny            # no outbound during build
  reproducibility: required       # two builders, bit-identical
  attestation: in-toto/slsa-v1.0

Did we actually learn from SunBurst?

We partially learned from SunBurst. SLSA adoption is real but uneven — a 2023 ReversingLabs survey found only 27% of enterprises validated SBOMs against what actually deployed. Build pipeline compromise reappeared in PHP Git (March 2021), Codecov (April 2021), 3CX (March 2023), and JetBrains TeamCity (CVE-2023-42793, September 2023). The tradecraft did not stay exotic. Every one of those follow-on incidents reused the same conceptual primitive: mutate the build environment, let the vendor sign the artifact, ride the trust. Until verified reproducibility and cryptographic provenance become default for every release, SUNBURST-class attacks remain the most rational investment an advanced actor can make.

How Safeguard Helps

Safeguard's reachability analysis tells you whether a compromised transitive dependency actually reaches executable code in your service, so you can triage a SunBurst-class advisory in hours instead of weeks. Our SBOM ingestion validates CycloneDX and SPDX attestations against pinned vendor keys and flags drift the moment a published artifact disagrees with its source provenance. Griffin AI contextualizes advisories against your deployment graph, highlighting internet-exposed components first. TPRM workflows continuously assess fourth-party risk in the vendors you rely on — the part of the SolarWinds problem that fourth-party SBOMs would have surfaced. Policy gates block releases that lack SLSA provenance or carry unverifiable signatures, making SunBurst-style silent replacement materially harder to ship.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.