Case study — SolarWinds SUNBURST (2020)
TL;DR: Russian intelligence (APT29, tracked as UNC2452 / NOBELIUM) compromised SolarWinds’ Orion build environment, injected a backdoor (SUNBURST) into the Orion DLL, and shipped it to ~18,000 customers via the standard SolarWinds update channel. The implant was passive: it called home to a DGA-generated domain, waited weeks before activating, and was selective about which environments to advance. Used the foothold for downstream cloud / Microsoft 365 / SAML token forging campaigns. The defining cascading supply-chain compromise. Companion to case-study-3cx-supply-chain and cve-2024-3094-xz-utils-backdoor.
Why this matters
- ~18,000 organisations received the backdoor; a smaller subset of high-value targets had the chain advanced (US Treasury, Commerce, DHS, FireEye, Microsoft, others).
- Detection came from FireEye observing one of its own employees register a new MFA token unexpectedly — a single anomalous Duo registration unravelled the entire campaign.
- The follow-on SAML token forgery (Golden SAML) moved laterally into Microsoft 365 tenants without classic AD compromise.
- Defined the cascading supply-chain model that xz (2024) and 3CX (2023) later echoed.
The kill chain at a glance
- Build-environment compromise (mid-2019 onward) — UNC2452 gained access to SolarWinds’ Orion development infrastructure. Methods incompletely public; phishing + credential abuse + persistence in build tooling.
- Backdoor implantation — SUNBURST DLL (
SolarWinds.Orion.Core.BusinessLayer.dll) modified to include malicious .NET code; rebuilt and re-signed by SolarWinds’ legitimate signing pipeline. - Distribution — shipped via SolarWinds’ update channel between March 2020 and June 2020. ~18,000 customers installed.
- Dormancy — SUNBURST waited 12–14 days before contacting C2 to avoid sandbox detection.
- Beacon to DGA domain —
avsvmcloud.comsubdomains. The DNS response signaled whether the victim was “interesting” (based on AV products installed, domain name, etc.). - Selective advance — only ~100 of the 18,000 had follow-on activity. The 100 were chosen by attacker selection.
- Second-stage implants (TEARDROP, RAINDROP) — Cobalt Strike Beacon variants, fileless loaders.
- Lateral movement — kerberoasting, golden tickets, golden SAML.
- Cloud pivot — forged SAML tokens authenticated to Microsoft 365 / Azure as legitimate users. Often, attackers had administrator-equivalent without ever touching domain controllers in tenant.
SUNBURST technical highlights
- Signed by SolarWinds with valid code signing — bypassed application-whitelisting.
- Anti-analysis — checked for AV processes, sandbox indicators; bailed if detected.
- DGA domain construction — encoded the victim’s domain into the DNS query subdomain, exfiltrating identity.
- Late activation — backdoor stayed dormant on most hosts forever; only “interesting” hosts got commands.
- Code obfuscation — heavy .NET method-name obfuscation; legitimate-looking class structure.
Golden SAML
Once attackers had AD-level access, they extracted the AD FS token-signing certificate. With the private key:
- Forge SAML assertions for any user.
- Assertions sign valid against the AD FS public key.
- Microsoft 365 / Azure accept the assertion.
The attacker is then any user — including Global Admins — without ever logging into AD or being seen by AD auth logs. Microsoft 365 sign-in logs show “successful federated sign-in” with no obvious anomaly.
Mandiant’s detection rule: SAML assertions issued without a corresponding AD FS auth event.
Detection — how FireEye caught it
FireEye’s employee enrolled a new Duo MFA device unexpectedly. The employee hadn’t requested it; the helpdesk pulled the audit trail. Investigation:
- Found the device enrollment came from an anomalous source.
- Reviewed the employee’s session — credentials being used from non-employee IPs.
- Pulled lateral movement traces.
- Identified Cobalt Strike Beacon traffic.
- Traced beacon-loader to a specific DLL.
- Traced DLL to Orion update.
- SolarWinds confirmed compromised build.
One MFA event. The entire campaign hinged on that detection.
What this teaches
- Cascading supply chain — vendor compromise propagates to thousands of downstream customers.
- Code signing alone is not enough — every defence relying on “is this binary signed” failed.
- SBOM and build provenance matter — see SLSA, in-toto, Sigstore.
- Identity compromise in cloud SaaS can occur without classic AD touching points (Golden SAML).
- Patient adversaries beat naive detection — 12-day dormancy defeats most sandboxes.
- One anomaly is enough — well-tuned identity-anomaly detection (Duo enrollment in this case) was the catch.
Defensive baseline informed by SUNBURST
- Continuous Access Evaluation (CAE) — invalidate sessions on risk events.
- Token signing certificate protection — HSM-bound AD FS / Entra Connect signing keys; rotation.
- SAML assertion auditing — alert on assertions without corresponding IdP auth events.
- Build environment isolation — separate networks, signed-only-from-CI gating.
- Vendor risk assessment — supply-chain-specific incident response runbooks.
- DNS monitoring — DGA-style domain queries; high-cardinality subdomains.
IR posture for similar campaigns
If you receive notification that a vendor was compromised:
- Inventory — which versions of the vendor product are deployed where.
- Network isolation of vendor product instances if not already.
- Hunt for known IoCs — hash matches, network indicators.
- Behavioural hunt — anomalous outbound from vendor product instances.
- Identity hunt — anomalous SAML / token activity in any tenant the vendor product touches.
- Patch — apply vendor’s fix.
- Rotate — credentials, certificates, SAML signing keys.
- Long-term hunt — adversaries who got in via this vector may have established other persistence; assume environment-wide.
Related supply-chain cases
- case-study-3cx-supply-chain — different attacker (DPRK), same cascading pattern.
- cve-2024-3094-xz-utils-backdoor — different vector (OSS maintainer takeover), similar industry impact.
- case-study-okta-2023-support-system — different angle on cascading identity-vendor risk.