Supply-Chain Security
Software Composition Analysis (SCA) Services
We analyse the open-source and third-party dependencies in your applications for known vulnerabilities, license risk and supply-chain integrity, and generate an SBOM you can trust. Then we help you fix what matters and keep it fixed in CI.
Overview
The components you depend on carry their own bugs, their own licenses and their own supply chains. When one of them is compromised or a new CVE lands, your application inherits the problem. Software Composition Analysis makes that surface visible. We build a complete dependency inventory including transitive packages, generate a standards-based SBOM, and map every component to known vulnerabilities in CVE, NVD and OSV. We then triage by reachability so you fix what is genuinely exposed first, review licenses against your policy, and wire continuous checks into your pipeline so the picture stays current.
Methodology
How the Engagement Runs
Every phase has a named output, so you always know what is being worked on and what lands on your side of the table.
6 Phases, 6 Named Handovers
Flow
Flow chart of the Software Composition Analysis (SCA) engagement, 6 phases in order, each one selectable. Phase 1, Dependency Inventory and SBOM. We enumerate every direct and transitive dependency across your projects and generate a standards-based SBOM in CycloneDX or SPDX format. Activities: Enumerate direct and transitive dependencies per repository; Generate an SBOM in CycloneDX format; Record component versions, origins and build tooling; Reconcile the inventory with what you actually ship. Hands over CycloneDX SBOM. Phase 2, Vulnerability Mapping. We match each component and version against CVE, NVD and OSV data to surface known vulnerabilities, with severity and affected version ranges. Activities: Match dependencies against CVE and OSV data; Confirm affected version ranges against your pinned versions; Flag abandoned and unmaintained components; Record severity and available fix versions. Hands over Mapped Vulnerability Inventory. Phase 3, Reachability and Exploitability Triage. We assess whether vulnerable code is actually called and reachable in your application, so you prioritise real exposure over theoretical alerts. Activities: Check whether vulnerable code is actually reachable; Trace call paths from your code into the affected function; Separate runtime dependencies from build and test only; Rank exposure by reachability, severity and fix effort. Hands over Reachability-Ranked Exposure List. Phase 4, License and Policy Review. We check every dependency license against your policy and flag copyleft, incompatible or unknown licenses before they become a legal problem. Activities: Resolve the licence of every component including transitives; Flag licence conflicts against your policy; Highlight copyleft obligations in distributed code; List components with missing or ambiguous licences. Hands over Licence Risk Register. Phase 5, Remediation and Pinning. We recommend safe upgrade paths, pin versions, and guide replacements for abandoned or high-risk components so fixes do not break your build. Activities: Plan upgrade paths that avoid breaking changes; Pin versions and add a lockfile discipline; Recommend replacements for abandoned packages; Group fixes into batches your team can ship. Hands over Prioritised Remediation Plan. Phase 6, Continuous Monitoring in CI. We wire SCA checks into your pipeline so new vulnerabilities and license changes are caught on every build, not months later. Activities: Wire the scan into the CI pipeline; Set the policy for what blocks a build and what warns; Automate SBOM generation on every release; Route new alerts to the team that owns the service. Hands over CI Policy Gate. Each phase begins from the artefact the phase before it produced.
Phase 01 Dependency Inventory and SBOM
We enumerate every direct and transitive dependency across your projects and generate a standards-based SBOM in CycloneDX or SPDX format.
What Happens In This Phase
- Enumerate direct and transitive dependencies per repository
- Generate an SBOM in CycloneDX format
- Record component versions, origins and build tooling
- Reconcile the inventory with what you actually ship
The Handover
CycloneDX SBOM
The next phase starts from this.
Phase 01 Dependency Inventory and SBOM
We enumerate every direct and transitive dependency across your projects and generate a standards-based SBOM in CycloneDX or SPDX format.
What Happens In This Phase
- Enumerate direct and transitive dependencies per repository
- Generate an SBOM in CycloneDX format
- Record component versions, origins and build tooling
- Reconcile the inventory with what you actually ship
The Handover
CycloneDX SBOM
The next phase starts from this.
- 01
Dependency Inventory and SBOM
We enumerate every direct and transitive dependency across your projects and generate a standards-based SBOM in CycloneDX or SPDX format.
OutputCycloneDX SBOMActivities
- Enumerate direct and transitive dependencies per repository
- Generate an SBOM in CycloneDX format
- Record component versions, origins and build tooling
- Reconcile the inventory with what you actually ship
- 02
Vulnerability Mapping
We match each component and version against CVE, NVD and OSV data to surface known vulnerabilities, with severity and affected version ranges.
OutputMapped Vulnerability InventoryActivities
- Match dependencies against CVE and OSV data
- Confirm affected version ranges against your pinned versions
- Flag abandoned and unmaintained components
- Record severity and available fix versions
- 03
Reachability and Exploitability Triage
We assess whether vulnerable code is actually called and reachable in your application, so you prioritise real exposure over theoretical alerts.
OutputReachability-Ranked Exposure ListActivities
- Check whether vulnerable code is actually reachable
- Trace call paths from your code into the affected function
- Separate runtime dependencies from build and test only
- Rank exposure by reachability, severity and fix effort
- 04
License and Policy Review
We check every dependency license against your policy and flag copyleft, incompatible or unknown licenses before they become a legal problem.
OutputLicence Risk RegisterActivities
- Resolve the licence of every component including transitives
- Flag licence conflicts against your policy
- Highlight copyleft obligations in distributed code
- List components with missing or ambiguous licences
- 05
Remediation and Pinning
We recommend safe upgrade paths, pin versions, and guide replacements for abandoned or high-risk components so fixes do not break your build.
OutputPrioritised Remediation PlanActivities
- Plan upgrade paths that avoid breaking changes
- Pin versions and add a lockfile discipline
- Recommend replacements for abandoned packages
- Group fixes into batches your team can ship
- 06
Continuous Monitoring in CI
We wire SCA checks into your pipeline so new vulnerabilities and license changes are caught on every build, not months later.
OutputCI Policy GateActivities
- Wire the scan into the CI pipeline
- Set the policy for what blocks a build and what warns
- Automate SBOM generation on every release
- Route new alerts to the team that owns the service
Specification
What We Run, and What We Measure You Against
The tooling our engineers use on this work, and the published standards the findings and evidence are mapped to.
What Is Examined, and What it Is Measured Against
Map
Map of the Software Composition Analysis (SCA) scope, running left to right in three stages. Stage one, what we run, 9 tools and techniques: Snyk, OWASP Dependency-Check, Trivy, Grype, Syft, Dependabot, Renovate, OSV-Scanner, Black Duck. Stage two, findings from all of it are proven by hand and written up once. Stage three, measured against 8 published standards: OWASP Dependency-Check standards, CycloneDX, SPDX, NIST SSDF (SP 800-218), SLSA, CISA SBOM guidance, CVE/NVD, OSV.
What We Run
9 tools
- Snyk
- OWASP Dependency-Check
- Trivy
- Grype
- Syft
- Dependabot
- Renovate
- OSV-Scanner
- Black Duck
Converges On
One Set of Proven Findings
Every issue is reproduced by hand before it is written down, and it is written down once.
Measured Against
8 standards
- OWASPDependency-Check
- OWASPCycloneDX
- SPDXLinux Foundation
- NIST SSDF (SP 800-218)
- SLSAOpenSSF
- CISASBOM Guidance
- CVE/NVDMITRE, NIST
- OSVOpenSSF
Deliverables
What You Receive
- Standards-based SBOM in CycloneDX or SPDX format
- Ranked vulnerability report mapped to CVE, NVD and OSV with reachability context
- License and policy risk summary with flagged components
- Remediation and pinning plan with safe upgrade paths
- CI integration guidance for continuous monitoring
Scope This Engagement
Tell us about your environment, your timelines and any audit dates you are working to. We come back with scope, effort and a start date.
How is Software Composition Analysis different from a penetration test, and do we need both?
A penetration test attacks the code you wrote; Software Composition Analysis examines the code you inherited. The distinction matters because the two surface different problems. Our VAPT work is manual and exploit-driven: an engineer probes your logic, authentication and data handling, and proves each finding with a working proof of concept. That engineer will not read the changelog of every transitive package sitting four levels below your lockfile, and a vulnerable library is frequently invisible from the outside until somebody publishes a route into it. SCA works the other way round, from the inventory inwards. We enumerate direct and transitive dependencies, map each version against CVE, NVD and OSV data, and then triage by reachability so the list reflects your exposure rather than your package count. Teams shipping modern applications generally want both, because they answer different questions when a customer or an auditor asks. Our VAPT practice page sets out how the testing side runs.
Most of our alerts come from packages we never installed directly, so how do you decide which ones are real?
Those are transitive dependencies: packages pulled in by the packages you chose, often several levels deep, and in most codebases they outnumber the direct ones heavily. They are still yours to answer for, because your build ships them. What changes is how we treat them. Phase three of the engagement is reachability and exploitability triage, where we trace call paths from your own code into the affected function and ask whether the vulnerable routine is ever actually invoked. A high-severity advisory in a parser you never call, or in a package present only in your test and build tooling, is not the same risk as one sitting on a live request path, which is why we separate runtime dependencies from build-and-test-only ones. The named handover is a reachability-ranked exposure list, so your engineers receive an ordered queue to work through rather than a dashboard count to argue with.
Why does the engagement cover licences as well as vulnerabilities, and what does that review actually produce?
Because a licence obligation can hold up a release as firmly as a vulnerability can, and it usually surfaces later and more expensively. Phase four resolves the licence of every component in the inventory, transitives included, which is where the surprises tend to live: a permissively licensed package you chose can pull in a copyleft one you did not. We check what we find against your policy, highlight copyleft obligations that bite when software is distributed rather than hosted, flag conflicts, and list components whose licence metadata is missing or ambiguous so that somebody can make a decision about them. The output is a licence risk register you can hand to whoever owns legal review. Be clear on the boundary: we are security engineers, not your counsel, so we identify and explain each obligation and its context, while the decision to accept, replace or comply stays with you.
A customer's security questionnaire asks us for an SBOM, so what will you hand over and is that enough on its own?
You receive a standards-based SBOM in CycloneDX or SPDX format, generated in phase one and reconciled against what you actually ship rather than what your manifest claims. Those two formats are what procurement teams, auditors and platform partners tend to ask for, so the file drops into their tooling without translation. Be clear about what an SBOM is and is not. It is an inventory, not an assurance: it records which components are present, not whether they are safe or reachable, which is why the mapped vulnerability inventory and the reachability-ranked exposure list travel alongside it. Reviewers commonly ask for that second layer once they have the first. We also automate SBOM generation on every release as part of the pipeline work, so the copy you send a customer next quarter describes the build you shipped rather than one from the month we finished.
How often should we re-run this, and what keeps the picture current between engagements?
New advisories land against code you have not touched, so a point-in-time scan begins ageing the day it is delivered. That is why the engagement ends in continuous monitoring rather than in a report. Phase six wires the scan into your pipeline, sets the policy for what blocks a build and what merely warns, automates SBOM generation on every release, and routes new alerts to the team that owns the service, so ordinary drift is caught on the build instead of months later. A fuller human pass earns its place when the dependency graph changes materially, such as a major framework upgrade, a new service or an acquired codebase, or ahead of an audit or customer review. Be clear on the limit of the pipeline gate: it re-checks an inventory it already knows, so a fresh reachability triage and licence review is scoped as its own piece of work.
Elsewhere
Other Practice Areas
- ComplianceCertifications and Privacy Programmes Across 13 Frameworks
- VAPTManual, Exploit-Driven Penetration Testing Across 7 Surfaces
- Secure Code Review (SCR)Manual, line-by-line review of your most sensitive code paths, backed by SAST triage.
- Hardening and Configuration ReviewBenchmark-Based Configuration Hardening Across Cloud, OS, Network and Data Tiers
- Managed ServicesOngoing Offensive, Defensive and Advisory Security Run by Our Team