104% more reported CVEs per day in 2026 than last year.

Comparison

Software composition analysis (SCA) tools compared

Software composition analysis (SCA) tools find the open-source components in your code and flag known vulnerabilities and license risks. Here are nine commercial SCA tools and four free ones, how they differ, and where CRACI, which records the build instead of scanning it, fits next to them.

Updated

Declared dependencies or fetched dependencies An SCA scanner reads the manifest and lockfile and lists the dependencies the project declares. CRACI records what the build job actually fetched, which can also include a tool installed by a CI step or a file downloaded by a script. Both lists are matched against the same vulnerability advisories to produce findings. SCA scanner Reads what the project declares package-lock.json Declared dependencies express 4.19.2 lodash 4.17.21 and the rest of the lockfile CRACI Records what the build fetched build job Fetched dependencies express 4.19.2 lodash 4.17.21 tool from a CI step script download Same vulnerability advisories Findings are only as complete as the list going in

Who this is for

This page is for teams choosing an SCA tool, or checking whether the one they have still fits. We build CRACI, so weigh that in. Every claim about another product comes from that vendor's own documentation, and most products have a longer CRACI vs X page.

One thing up front: CRACI is not an SCA scanner in the classic sense. It is a recorder. It runs your GitHub Actions jobs and records what they fetched. It is meant to sit next to an SCA tool, not to replace one.

What SCA tools do

Almost every SCA tool follows the same steps. Where they differ is how well they do each one.

  1. Identify components. Read manifests and lockfiles, analyze source code, or fingerprint binaries to list direct and transitive dependencies.
  2. Match vulnerabilities. Check each component and version against databases such as the NVD, the GitHub Advisory Database and OSV.
  3. Check licenses against your policy.
  4. Prioritize. Rank findings by severity, exploit data such as EPSS, and in many tools reachability.
  5. Fix. Suggest upgrades or open pull requests.
  6. Monitor and report. Alert on new vulnerabilities and export an SBOM.

Step one decides everything after it. A component the tool never identified cannot be matched, prioritized or listed in the SBOM, which is why the first row of the tables below asks where each tool's component list comes from. For the basics, see what software composition analysis is and how it differs from SAST.

How to choose

A few questions separate these tools faster than feature lists do:

  • Before merge or after release? SCA tools shine on pull requests and in the IDE. If your hard question is what went into a shipped release, you need a record of the build.
  • Dependencies only, or your own code too? Most of these products now bundle SAST. Some add secrets, IaC, containers or cloud.
  • How much alert noise can you absorb? Reachability analysis, which checks whether your code can call the vulnerable function, is where several vendors compete.
  • Do you need to stop bad packages at the door? Repository firewalls and package proxies block them before download. Scanners only report them afterward.
  • Which CI do you run? Most of the SCA tools here fit many CI systems. CRACI supports GitHub Actions only today, with GitLab CI and Jenkins on the roadmap.
  • Does it cover your languages and build systems? Check every ecosystem you ship, including monorepos and the parts of your build that no lockfile describes.
  • What do you have to hand over? If customers or the EU Cyber Resilience Act ask for an SBOM per release, check the formats, which plan includes export, and whether the tool tells you when the list is incomplete.
  • How do you want to pay? Per developer, per committer, per contributor, per plan or by quote.

At a glance

Ten columns do not fit one table, so the products are split in two. Both tables use the same rows. "Not stated" means the vendor pages we cite do not say either way. Pricing is as of September 2026.

Enterprise SCA and AppSec suites

Capability CRACI Sonatype Black Duck Mend.io Checkmarx One
Records dependencies as the build runs Package-aware proxy on the runner Scans build output Scans code and binaries Scans after the build Uploaded source archive
Build network egress policy Fails closed
Signed artifact provenance No signed provenance Not stated Not stated Not stated Not stated
SBOM export Completeness stated
Continuous monitoring SBOM Manager Not stated
Reachability prioritization
SAST for your own code Not stated Coverity Mend SAST
License scanning or policy License policy can block a build
Malicious package blocking Package blocklists Repository Firewall Flags them Detects them Can block builds
CI beyond GitHub Actions GitLab CI and Jenkins
Pricing $0.002 per vCPU-minute ($0.004 for 2 vCPU), metered per second; no monthly fee Quote; Firewall Pro from $4,800 per year Quote Up to $1,000 per developer per year Quote
  • Included
  • Partly
  • Not included
  • On the roadmap

Developer-first and platform tools

Capability CRACI Snyk Endor Labs Semgrep GitHub (GHAS) Aikido
Records dependencies as the build runs Package-aware proxy on the runner Manifests and lockfiles Analyzes source code Reads dependencies from code Manifests plus submitted data Manifests and lockfiles
Build network egress policy Fails closed
Signed artifact provenance No signed provenance Not stated endorctl Not stated Artifact attestations Not stated
SBOM export Completeness stated Enterprise plans only CycloneDX SPDX
Continuous monitoring Not stated Dependabot alerts Not stated
Reachability prioritization Function level Not stated
SAST for your own code Snyk Code AI SAST Semgrep Code CodeQL
License scanning or policy License policy can block a build Not stated Not stated
Malicious package blocking Package blocklists Not stated Package Firewall Detects them Not stated Safe Chain
CI beyond GitHub Actions GitLab CI and Jenkins Not stated
Pricing $0.002 per vCPU-minute ($0.004 for 2 vCPU), metered per second; no monthly fee Free tier; Team from $25 per month Free Developer tier; paid tiers via sales Free up to 10 contributors; Teams from $30 per contributor per month $19 and $30 per committer per month Free plan; paid from $350 per month
  • Included
  • Partly
  • Not included
  • On the roadmap

The tools, one by one

CRACI

The CRACI homepage
craci.com

CRACI is a recorder, not a scanner. Your GitHub Actions jobs run on CRACI runners, and a package-aware proxy records what each job fetches, with dependency evidence carried through CI caches. From that record it produces a CycloneDX or SPDX SBOM that states its own completeness, keeps re-evaluating monitored SBOMs, routes each finding to the team that owns the fix, and can block a build on a license. Best for teams that must prove what went into each release. Watch out: no SAST, secrets, IaC scanning or reachability, and Linux jobs on GitHub Actions only today (other CI systems, Windows and macOS are on the roadmap). Build-time SBOM generation

Snyk

The Snyk homepage
snyk.io

Snyk is a developer-first platform: SCA plus Snyk Code (SAST), Snyk Container and Snyk IaC, running in the IDE, the CLI, SCM integrations and CI. It prioritizes dependency findings with reachability, exploit maturity, EPSS and CVSS, and opens upgrade pull requests. Best for teams that want developers fixing issues from the editor onward. Watch out: its dependency tree comes from manifests and lockfiles, and the snyk sbom command is available only on Enterprise plans. CRACI vs Snyk

Sonatype

The Sonatype homepage
sonatype.com

Sonatype is built around open-source governance. Lifecycle applies security and license policies (its license policies span more than 2,000 licenses), uses Advanced Binary Fingerprinting on what the build produced, and opens Golden Pull Requests. Repository Firewall quarantines components before they enter your repositories, and SBOM Manager monitors imported SBOMs. Best for large organizations that want a gate at the repository. Watch out: packaging is changing, and new customers now buy Sonatype Guide. CRACI vs Sonatype

Black Duck

The Black Duck homepage
blackduck.com

Black Duck finds open source wherever it hides: package manager scans, signature and snippet scanning, and binary analysis of executables and firmware without source code. Its KnowledgeBase tracks more than 2,750 licenses, and Coverity adds SAST across 22 languages. Best for code with a long history of copied or vendored open source, and for checking third-party binaries. Watch out: pricing is quote-based, and its Fix PRs cover direct dependencies. CRACI vs Black Duck

Mend.io

The Mend.io homepage
mend.io

Mend AppSec pairs Mend SCA, which traces the call graph through transitive dependencies, with Mend SAST for more than 30 languages. Mend Renovate keeps dependencies current across 90 or more package managers, and the Renovate CLI is free. Best for teams with a large backlog who want prioritization and automated updates together. Watch out: Mend's own docs recommend scanning after the build step, so accuracy depends on where in the pipeline you run it. CRACI vs Mend.io

Checkmarx One

The Checkmarx homepage
checkmarx.com

Checkmarx One is a broad AppSec platform: SAST, SCA, secrets, IaC, API security, DAST, containers and malicious package protection, with an ASPM layer on top. Its SCA uses exploitable path analysis, and policies can break builds. Best for organizations that want one vendor for application security testing. Watch out: the GitHub Action uploads a zip archive of your source for scanning (SCA Resolver can analyze on premises instead), and pricing is by quote. CRACI vs Checkmarx One and Checkmarx alternatives

Endor Labs

The Endor Labs homepage
endorlabs.com

Endor Labs is built around function-level reachability, tracing code paths from your source to the vulnerable function in direct and transitive dependencies. It adds upgrade impact analysis, Endor Patches that backport fixes, AI SAST, secrets and container scanning, a Package Firewall and artifact signing. Best for teams drowning in dependency alerts. Watch out: where a full build is not possible, it falls back to coarser dependency-level reachability. CRACI vs Endor Labs

Semgrep Supply Chain

The Semgrep homepage
semgrep.dev

Semgrep Supply Chain is the SCA product in Semgrep's AppSec platform, next to Semgrep Code (SAST) and Semgrep Secrets. It classifies findings as reachable, conditionally reachable or unreachable, and Semgrep says this reduces false positives by up to 98%. Where lockfiles are incomplete, Dynamic Dependency Resolution combines manifest parsing with the package manager to fill in the list. It also checks licenses against your policy, detects malicious dependencies, opens upgrade pull requests and exports CycloneDX SBOMs. Best for teams that already write Semgrep rules, or small teams: the free plan covers up to 10 contributors. Watch out: paid products are priced separately, from $30 per contributor per month for Supply Chain on the Teams plan.

GitHub Advanced Security

The GitHub Advanced Security homepage
github.com

GitHub now sells Secret Protection and Code Security (CodeQL, Copilot Autofix, dependency review) on top of the dependency graph and Dependabot, which every GitHub plan includes. Artifact attestations add signed provenance at SLSA v1.0 Build Level 2. Best for teams already on GitHub who want security inside pull requests. Watch out: the dependency graph describes the repository's manifests and lock files, and private repositories need a Team or Enterprise plan for the paid products. CRACI vs GitHub Advanced Security

Aikido

The Aikido homepage
aikido.dev

Aikido puts SCA, SAST, secrets, IaC, cloud posture, containers, DAST and license scanning behind one dashboard. Its SCA uses function-level reachability, AutoFix opens pull requests, and the free Safe Chain tool blocks known malware in npm and PyPI installs. Best for smaller teams that want broad coverage quickly, or SOC 2 and ISO 27001 reports from AppSec findings. Watch out: those compliance reports start on the Advanced plan, and dependencies come from manifests and lockfiles. CRACI vs Aikido

Free and open-source SCA tools

If budget is the constraint, four open-source tools cover the core of SCA. All are free under Apache-2.0. You run them yourself, so monitoring, triage and reporting are yours to build.

Capability What it scans Vulnerability data Good to know
Trivy Images, filesystems, repositories, VM images, Kubernetes Vendor advisories, GitHub Advisory Database, NVD Also finds IaC misconfigurations, secrets and licenses
Grype Images, filesystems and SBOMs Its own database, downloaded locally EPSS, KEV and risk scoring; OpenVEX filtering; fails builds with --fail-on
OSV-Scanner Lockfiles, container images, SBOMs, vendored C and C++ code OSV.dev Optional call analysis; guided remediation for npm and Maven
OWASP Dependency-Check Project dependencies, fully supported for Java and .NET NVD, matched by CPE CLI, Maven, Gradle and Ant plugins, and CI integrations

Trivy, from Aqua Security, reads lock files in a repository and installed package metadata in an image, and writes CycloneDX or SPDX SBOMs. CRACI vs Trivy. Grype, from Anchore, scans what its companion Syft lists and runs entirely locally apart from downloading its database. CRACI vs Syft and Grype. OSV-Scanner, from Google, is the official client for the OSV.dev database and supports 19 or more lockfile types. OWASP Dependency-Check identifies components by CPE and matches them against the NVD, which suits Java and .NET projects best. For how the free SBOM generators behind these scanners read a repository, and why they disagree, see what open source SBOM generators miss.

How CRACI fits

Every other tool above is a scanner. It reads a manifest, a lockfile, a source archive or a binary and works out what is inside. CRACI is a recorder. Your GitHub Actions jobs run on CRACI runners (change runs-on to craci), and a package-aware proxy records what each job fetches from npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk and Git sources, plus download presets. Dependency evidence travels with CI caches. CRACI's inventory view shows exactly which software versions are deployed to which products, globally.

From that record CRACI produces a CycloneDX or SPDX SBOM that states its own completeness per job and per cache. It enforces an egress policy that fails closed, returns SBOMs, network traces and provenance through its API, keeps re-evaluating monitored SBOMs, and lets security teams triage findings and route each one to the team that owns the fix. Every component carries its declared license, so copyleft and other restrictive licenses show up before you ship, and license policy can block a build on a license. It automates a significant part of the software supply chain visibility and evidence that companies need for their wider CRA compliance process.

CRACI is not the right choice when:

  • you need SAST, secrets or IaC scanning (it does none of them),
  • reachability is your priority (CRACI does not offer it), or you need package blocklists today (on the roadmap),
  • your pipelines run on GitLab, Jenkins or CircleCI, or need Windows or macOS runners (CRACI runs Linux jobs on GitHub Actions today; other CI systems, Windows and macOS are on the roadmap).

In those cases pick from the tools above. If you also need to prove what went into each release, run CRACI as the runner and keep your SCA on pull requests. For the scanner versus recorder argument in more depth, see CRACI vs SCA and SBOM tools and SBOM tools compared, read about build-time SBOM generation and pricing, or book a demo to see the record of a GitHub Actions build.

CRACI compared with each tool

Side by side

Several tools on one page, for when you are choosing a category, not one product.

SCA tools FAQ

Short answers to common questions about software composition analysis

What is an SCA tool?

A software composition analysis (SCA) tool finds the open-source and third-party components in your software, checks them against vulnerability databases such as the NVD, the GitHub Advisory Database or OSV, and flags known vulnerabilities and license risks. Most SCA tools also prioritize findings, suggest or open upgrade pull requests, export an SBOM and keep monitoring for new vulnerabilities.

What is SCA scanning?

An SCA scan reads a project's manifests, lockfiles, installed packages or a container image, works out which components are in it, and matches them against vulnerability and license data. Most tools run it on every pull request and on a schedule, so new advisories for versions you already use are caught too.

What is the difference between SCA and SAST?

SAST analyzes the code your team writes for flaws such as injection bugs. SCA analyzes the components you depend on for known vulnerabilities and license issues. Most of the commercial tools on this page now sell both, but they answer different questions.

What is the difference between SCA and an SBOM?

SCA is the process of finding and assessing components. An SBOM is a machine-readable list of those components, usually in CycloneDX or SPDX format. Most SCA tools can export one, and the SBOM is only as complete as the method that produced it: a manifest scan, a binary scan or a record of the build.

What are the best free SCA tools?

Trivy, Grype, OSV-Scanner and OWASP Dependency-Check are free and open source. Among commercial tools, Semgrep has a free plan for up to 10 contributors, Snyk, Endor Labs and Aikido have free tiers, and Dependabot alerts come with every GitHub plan. Free tools usually leave monitoring, triage and reporting to you.

What is reachability analysis in SCA?

Reachability analysis checks whether your code can actually call the vulnerable function in a dependency, so findings that cannot be reached drop down the list. Snyk, Endor Labs, Mend, Checkmarx, Semgrep, Aikido, Sonatype and Black Duck all offer a form of it. CRACI does not.

Is CRACI an SCA tool?

Not in the classic sense. SCA tools scan files to work out what is inside. CRACI is a recorder: it runs your GitHub Actions jobs and records the packages each job actually fetched, produces a CycloneDX or SPDX SBOM that states its own completeness, and keeps monitoring it for new vulnerabilities. Teams run it next to an SCA tool that covers pull requests and SAST.

See what your builds actually fetched

Book a demo to compare the SBOM CRACI records during a GitHub Actions build with the one your SCA tool produces.

Book a demo