You patched your own code, locked down the VPN, and still woke up to a malicious package in production. Software supply-chain attacks skip the front door and walk in through something you already trust: a dependency, an update channel, a build plugin, a vendor’s cloud connector. This explainer maps the main patterns, how to spot them early, and what to do when one lands.
What “supply chain” means here
In software, the supply chain is everything that carries code or trust into your estate that you did not write yourself: open-source libraries, container base images, CI/CD actions, signed vendor updaters, managed service agents, and the human workflows that approve them. Attackers compromise one upstream node and inherit every downstream customer. That is leverage classic phishing cannot match.
The patterns you will actually see
- Poisoned open-source packages. A maintainer account is hijacked, a typosquat mimics a popular name, or a install-script runs on
npm install/pip install. The testmetest npm worm showed how quickly hooks in.github/init.jsand AI-assistant integrations can spread once a package is trusted. - Trojanised official updates and trusted build paths. The classic SolarWinds (2020) shape: a build system is compromised so the vendor’s signed update carries the malware. The 2023 3CX desktop-app incident followed a similar “trusted updater” path. XZ Utils (2024) showed how a long-game compromise of a maintainer workflow can plant a backdoor in a near-ubiquitous library before a release ships widely. MOVEit Transfer (2023) sits next door: a widely embedded file-transfer product became a mass data-theft corridor for anyone who depended on that vendor path. Customers who “did everything right” still inherit the upstream trust.
- Vendor and SaaS pivot. A partner tool, backup agent or OAuth integration is breached and used against tenants. See ConnectWise Cloud Backup / Storm-0940 and the more recent Warp telemetry breach via a third-party vendor.
- Build and CI compromise. Malicious GitHub Actions, poisoned caches, or secrets exfiltrated from pipelines turn your own release process into the distribution channel.
- Model and AI-tooling chains. Poisoned model weights, malicious prompts in shared templates, or a tainted SDK such as the LiteLLM 1.107.0 poison that forced secret rotation for everyone who pulled it.
Why these attacks work
Trust is cached. Package managers cache popularity. Update clients cache publisher signatures. Security teams cache the assumption that “vendor patch” equals “safe”. Attackers buy or steal that trust once and reuse it everywhere. They also favour pre-install and post-install scripts, because those run with the privileges of your developers or your build runners — often more privilege than the finished app ever needed.
How to reduce the blast radius
- Pin and verify. Lock files, hash pinning, and signature verification beat floating tags. Rebuild from known commits when an upstream advisory lands.
- Separate build identities. CI secrets must not be the same as production admin. Short-lived OIDC tokens beat long-lived PATs in logs waiting to be stolen.
- Allow-list what runners may fetch. Egress controls on build agents stop a compromised package from quietly phoning home with your cloud keys.
- Inventory vendors with tenant-wide reach. Backup agents, endpoint tools, SSO apps and AI coding assistants can move laterally for an attacker. Review their OAuth scopes quarterly.
- Watch the KEV and your tracker. When a widely embedded component hits the KEV catalogue (opens in a new tab), treat every product that bundles it as in-scope. Cross-check our Alert Tracker for exploitation notes.
SBOM without the theatre
A software bill of materials helps only if you can query it when a CVE or a malicious version appears. Start with the applications that face the internet and the agents that sit on every laptop. Generate SBOMs in CI for those first, store them with the release, and practise one lookup drill: “show every production service that shipped package X version Y”. If that drill takes more than an hour today, the paperwork will not save you tomorrow. Pair the SBOM with the human list of vendors who can push code or config into the estate without a change ticket — that second list catches the SaaS pivots SBOMs miss.
When you suspect a supply-chain hit
- Identify the tainted artefact: package version, update build, Action SHA, vendor agent build.
- Block further installs and freeze related pipelines.
- Rotate secrets that the artefact could read — especially cloud keys, npm tokens and CI credentials. Assume exfiltration until logs say otherwise.
- Hunt for post-install behaviour: unexpected child processes, new SSH keys, scheduled tasks, odd DNS.
- Tell downstream customers if you redistribute software; tell upstream if you have evidence they are the source.
CISA and partners publish recommended practices for developers and for customers in the securing the software supply chain (opens in a new tab) series, and NIST’s SSDF remains the governance backbone many regulated buyers now ask for. You do not need a perfect SBOM programme on day one. You do need to know which ten upstreams could ruin your week, and how you would revoke them on a Tuesday night.
Supply-chain defence is mostly undramatic: pin, verify, least-privilege the builder, rehearse rotation. The drama arrives when those habits were skipped.
Sources
- CISA — Securing the software supply chain: recommended practices (opens in a new tab)
- NIST — Secure Software Development Framework (SSDF) (opens in a new tab)
- CISA — Known Exploited Vulnerabilities Catalog (opens in a new tab)
- Cyber-Threat.net — Alert Tracker
- Cyber-Threat.net — ConnectWise Cloud Backup / Storm-0940
- Cyber-Threat.net — testmetest npm worm
Follow Cyber-Threat.net RSSFeedly (opens in a new tab)X (opens in a new tab)Bluesky (opens in a new tab)LinkedIn (opens in a new tab)


