Software Supply Chain Security: SCA, SBOM & Dependency Risk (2026)

Written by Suphi Cankurt
What is software supply chain security?
Software supply chain security is the practice of managing risks in the third-party code your applications depend on. That includes open-source libraries, commercial SDKs, container base images, build tools, and every transitive dependency they pull in.
The shift happened gradually, then all at once. Twenty years ago, developers wrote most of their code from scratch. Today, the Synopsys 2024 OSSRA report found that 96% of commercial codebases contain open-source components. The Linux Foundation estimates that open source accounts for 70-90% of the code in a typical modern application. You are not just building software. You are assembling it from parts you did not write, maintained by people you do not know.
That is not a criticism of open source. It is a practical reality that creates a security responsibility most teams have not caught up to. When your Node.js application has 20 direct dependencies and 800 transitive ones, you need a systematic way to know what you are running, whether it has known vulnerabilities, and whether someone has tampered with it.
Supply chain security sits above any single tool or process. It covers Software Composition Analysis (SCA) for vulnerability scanning, SBOM generation for component inventory, license compliance verification, malicious package detection, and dependency update management. It ties all of these practices together into a single program.
The dependency problem
Most security teams track the libraries their developers explicitly install. Few track what those libraries depend on. That gap is where supply chain risk lives.
Transitive dependencies are the blind spot
When a developer adds Express.js to a Node.js project, they get one direct dependency. But Express pulls in 30+ packages of its own, and those packages pull in more. A typical node_modules folder contains hundreds of packages the developer never chose and probably never heard of.
Log4Shell (CVE-2021-44228) demonstrated this problem at scale. Log4j was not a direct dependency in most affected applications. It was buried two, three, or four layers deep in the dependency tree. Organizations that only tracked direct dependencies had no idea they were exposed.
The npm left-pad incident in 2016 was an early warning. A single developer unpublished an 11-line package, breaking thousands of builds worldwide. The ecosystem had quietly built deep dependency chains on tiny packages no one was auditing.
Velocity makes it worse
New CVEs are disclosed daily. The NVD published over 28,000 vulnerabilities in 2023 alone, and the pace has not slowed. Dependencies release updates constantly. A mid-size application might see dozens of dependency updates per week across its direct and transitive tree.
Security teams that rely on periodic audits are always behind. Between quarterly reviews, vulnerable dependencies accumulate. The gap between disclosure and remediation (often called Mean Time to Remediate, or MTTR) averages 250+ days for many organizations, according to research from Veracode and Snyk.
The trust chain is fragile
Open-source packages are maintained by individuals or small teams, often unpaid. The XZ Utils backdoor in 2024 showed what happens when a determined attacker gains commit access to a critical project. A single maintainer was socially engineered over two years to hand over access to a malicious contributor.
Every package you depend on is a link in a trust chain that extends back to individual maintainers, their development machines, their CI systems, and the package registries that distribute their code. A compromise at any point in that chain can reach your application.
Software Composition Analysis
SCA is the primary tool for finding known vulnerabilities in your dependencies. It scans your manifest files (package.json, pom.xml, requirements.txt, go.mod), resolves the full dependency tree including transitive dependencies, and matches every component against vulnerability databases.
How SCA works
The process follows three steps. First, the tool discovers your dependencies by parsing lock files and manifest files. Better tools also scan compiled binaries and container images. Second, each component and version is checked against databases like the NVD, OSV, GitHub Advisory Database, and vendor-curated feeds. Third, results are reported with severity scores, affected versions, and upgrade guidance.
Modern SCA tools add two features that separate them from basic vulnerability scanners. Reachability analysis determines whether a vulnerability in a dependency is actually callable from your code. If your application never invokes the vulnerable function, the risk is lower. Endor Labs and Snyk both offer this capability, and it can cut alert volume by 70-90%.
Auto-remediation opens pull requests that bump vulnerable dependencies to patched versions. Dependabot and Renovate handle this for direct dependencies. Some commercial tools like Mend can also suggest transitive dependency overrides.
Key SCA tools
The SCA tools category covers the full landscape. Commercial leaders include Snyk Open Source, Mend, Black Duck, and Endor Labs. Strong open-source options include OWASP Dependency-Check, Trivy, and Grype. For a detailed breakdown of how SCA works, read our What is SCA? guide.
SBOM: Software Bill of Materials
An SBOM is a machine-readable inventory of every component in your software. Think of it as a nutrition label for code. It lists every library, its version, its license, and its supplier.
Why SBOMs matter
Without an SBOM, answering the question “are we affected by this new vulnerability?” requires running a fresh scan across every application. With SBOMs already generated and stored, you can query your inventory in seconds. When Log4Shell dropped, organizations with SBOMs could identify affected applications within hours. Those without spent days or weeks.
SBOMs also enable compliance. Procurement teams can verify that software they purchase meets their organization’s open-source policy. License conflicts surface before legal issues do, not after.
Formats: CycloneDX vs SPDX
Two formats dominate. CycloneDX (maintained by OWASP) was designed for security use cases. It is lightweight, supports vulnerability data inline, and is the more popular choice among AppSec teams. SPDX (maintained by the Linux Foundation, now ISO/IEC 5962:2021) originated in license compliance and has broader adoption in legal and procurement contexts. Most tools support both.
Generation tools
SBOMs can be generated as part of SCA scanning or independently. Syft (from the Anchore team) is the most popular standalone SBOM generator. Trivy generates SBOMs alongside vulnerability scanning. CycloneDX maintains build plugins for Maven, Gradle, npm, pip, and other ecosystems.
For a deeper dive into SBOM formats, tooling, and organizational adoption, read our What is SBOM? guide.
Common attack vectors
Supply chain attacks exploit the trust developers place in their dependencies and build infrastructure. Here are the patterns attackers use most.
Dependency confusion
In 2021, security researcher Alex Birsan demonstrated that major companies (Apple, Microsoft, PayPal) would automatically pull packages from public registries instead of their internal ones if a public package had the same name and a higher version number. An attacker publishes a package to npm or PyPI with the name of an internal company package. The build system grabs the public (malicious) version. Mitigations include scoping packages to private registries, using registry priority settings, and pinning dependencies.
Typosquatting
Attackers publish packages with names similar to popular libraries: lodahs instead of lodash, reqeusts instead of requests. A single typo in a developer’s install command pulls in malicious code. Package registries have improved their detection, but thousands of typosquat packages are still discovered every year. Socket (now acquired by Snyk) built its detection model around identifying this behavior.
Compromised maintainer accounts
When an attacker gains access to a legitimate maintainer’s account on npm, PyPI, or RubyGems, they can publish a new version of a trusted package with malicious code injected. The event-stream incident on npm in 2018 followed this pattern. The original maintainer handed off the project to a new contributor who added a targeted cryptocurrency theft payload. Two-factor authentication on package registries is now common but not universal.
Build system attacks
SolarWinds (2020) demonstrated the most sophisticated variant. Attackers compromised the build infrastructure itself, injecting malicious code during compilation so that the source code on disk looked clean but the distributed binary contained a backdoor. This attack class is harder to detect because code review and source-level scanning both miss it.
XZ Utils: the long game
The XZ Utils backdoor (CVE-2024-3094), discovered in March 2024, showed a new attack pattern. A contributor spent over two years building trust in the project before inserting a backdoor into the build process. The backdoor targeted SSH authentication on specific Linux distributions. It was caught by accident when a Microsoft engineer noticed unusual CPU usage. The incident highlighted that social engineering of maintainers is a viable attack vector for patient adversaries.
Regulations and mandates
Governments have responded to the wave of supply chain incidents with concrete requirements. If you sell software to regulated industries or government agencies, compliance is no longer optional.
U.S. Executive Order 14028 (May 2021) requires software vendors selling to federal agencies to provide SBOMs and attest to secure development practices. NIST published supporting guidance (SSDF, SP 800-218) defining minimum security requirements for the software supply chain.
EU Cyber Resilience Act (CRA) mandates that digital products sold in the EU include machine-readable SBOMs, conduct risk assessments, and report actively exploited vulnerabilities within 24 hours. Full compliance is required by December 2027. This affects any software or connected device sold in the EU market.
FDA guidance requires SBOM submission as part of premarket cybersecurity documentation for medical devices. Manufacturers must identify and monitor all software components in their devices.
NIS2 Directive requires organizations in critical sectors (healthcare, energy, transport, digital infrastructure) to implement supply chain security measures, including assessing the security practices of their suppliers.
PCI DSS 4.0 requires organizations handling payment card data to maintain an inventory of all software components (custom and third-party) and a process for identifying vulnerabilities.
The common thread: regulators want to see that you know what is in your software and have a process for identifying and remediating vulnerabilities. SCA tools and SBOMs provide the foundation for meeting these requirements.
Building a supply chain security program
A supply chain security program does not require buying an enterprise platform on day one. Start with visibility, then add automation, then mature into continuous monitoring.
Step 1: Build your inventory
You cannot secure what you cannot see. Run an SCA scan across every application and service your organization ships. Trivy and Grype are both free and can scan repositories, container images, and file systems. The goal is a complete list of every third-party component, its version, and which applications use it.
Generate SBOMs for each application using Syft or your SCA tool’s SBOM export. Store them in a central location. This is your baseline.
Step 2: Scan for known vulnerabilities
Configure your SCA tool to flag components with known CVEs. Prioritize by severity (CVSS score), exploitability (is there a known exploit in the wild?), and reachability (does your code actually call the vulnerable function?). Not every CVE is an emergency. Focus on critical and high severity vulnerabilities in components your code actively uses.
Step 3: Automate in CI/CD
Add SCA scanning to your CI pipeline so every pull request is checked. Most SCA tools (Snyk, Trivy, Grype, OWASP Dependency-Check) have CI integrations for GitHub Actions, GitLab CI, Jenkins, and other platforms. Set policies: block merges for critical vulnerabilities, warn on high severity, and log the rest.
Set up automated dependency update tools. Dependabot and Renovate monitor your dependencies and open pull requests when new versions are available. This keeps you current and reduces the window between vulnerability disclosure and patch deployment.
Step 4: Monitor continuously
Vulnerabilities are discovered after deployment, not just before. A dependency that was clean last week might have a new CVE today. Configure your SCA tool to monitor deployed applications and alert when new vulnerabilities affect components you are running.
Subscribe to security advisories for your critical dependencies. GitHub Security Advisories, the OSV database, and vendor-specific feeds provide early warning. Some SCA tools aggregate these automatically.
Step 5: Respond and remediate
Define a response process before you need it. When a new supply chain vulnerability drops (and it will), you need to know: which applications are affected, what version are they running, is the vulnerability reachable, what is the upgrade path, and who owns the remediation.
SBOMs make the first two questions trivial. Reachability analysis answers the third. A documented response runbook covers the rest. Teams that have this in place before the next Log4Shell spend hours responding instead of weeks.
Where to go from here
Supply chain security connects directly to other AppSec practices. SAST vs SCA explains how to combine first-party code scanning with dependency scanning. The Secure SDLC guide maps where SCA and SBOM generation fit in your development pipeline. And the SCA tools category provides detailed reviews of every scanner we have evaluated.
Browse Tools by Category
This hub covers 1 application security categories with 22 tools total. Dive into any category to compare tools, read reviews, and find the best fit for your stack.
Detect risks in open-source dependencies
Learning Resources
Deepen your understanding with these in-depth guides covering key concepts, tool comparisons, and implementation strategies.
Frequently Asked Questions
What is software supply chain security?
What is the difference between SCA and SBOM?
Why are supply chain attacks increasing?
Do regulations require SCA or SBOM?
What are the best SCA tools in 2026?
How do I handle transitive dependency vulnerabilities?

Suphi Cankurt is an application security enthusiast based in Helsinki, Finland. He reviews and compares 129 AppSec tools across 10 categories on AppSec Santa. Learn more.
Comments
Powered by Giscus — comments are stored in GitHub Discussions.