Skip to content

Lesson 9 of 10 · 3 min read

Software Composition Analysis and Reachability Evidence

Free lessonReviewed By the AISecurityInterviews editorial team
Reading position
In this lesson

TL;DR: Software composition analysis identifies dependencies and advisory matches. Prioritize a match with deployment context and reachability evidence, while keeping unknown coverage and untrusted package behavior visible.

Before you read

Pick an answer before you read further. The lesson below explains it, and guessing first, right or wrong, helps the explanation stay with you.

  1. 1A dependency has no published CVE. Does that establish that it is safe to install?

Inventory before advisory matching

Software composition analysis (SCA) starts with component identity and version. A manifest declares intended dependencies; a lockfile resolves a dependency graph; an artifact inventory describes what actually shipped. These can disagree because of optional dependencies, platform-specific packages, vendored code or build-time downloads. Keep the source of each inventory claim.

An advisory match requires more than a package name. Ecosystem, version range, distribution patches and build configuration can change applicability. The result should preserve the advisory identifier, affected component, dependency path, detection method and assessment time. A familiar package name in a different ecosystem is not the same component.

Presence, reachability and exploitability

Presence means the affected code is included. Static reachability estimates whether application code can call it under the analyzer's model. Runtime observations show what executed during the observed workload and time window. Exploitability additionally depends on prerequisites such as attacker-controlled input, configuration and privileges. Each step adds evidence without making the next step automatic.

A plugin loaded only during monthly imports may never appear in a short runtime sample. Reflection and dynamically chosen modules can defeat static call-graph analysis. Treat uncertain reachability as unknown, with an owner and a review date. A suppression is defensible when its assumptions are stated and a code or configuration change invalidates it.

Diagram
Three inventories can disagree
  1. 1

    1 · Declared dependencies

    • Manifests and lockfiles describe intended inputs.
  2. 2

    2 · Built components

    • The image or package shows what was included.
  3. 3

    3 · Observed execution

    • Runtime samples show use within a measured window.
1/3

Declared dependencies

Manifests and lockfiles describe intended inputs.

An unobserved function may still be reachable outside the sampled workload.

Fix the dependency path, then prove rollout

In a fictional retrieval service, a vulnerable library arrives through a document-conversion package. Updating a direct dependency does not help if the transitive version remains pinned. Inspect the resolved graph, choose a compatible fixed version and run functionality and boundary tests. Then build a new artifact and verify the deployed inventory. A merged pull request does not patch a running container.

Record which products remain on the old image and why. If no safe update exists, restrict the vulnerable feature or input path where practical, document the residual risk and set a review trigger. A firewall rule that reduces internet access does not necessarily protect a parser that consumes attacker-supplied files through an allowed workflow.

Product and standards context, checked November 2026

Snyk's documentation on data handling describes manifest and lockfile processing for dependency discovery. Its separate product assessments should not be treated as interchangeable evidence. An integration must report unsupported package managers and failed collection.

An SBOM helps transport inventory. Provenance records origin and build claims. Neither artifact guarantees that its components are free from vulnerabilities or malicious behavior. License review also answers a separate question; a permissive license does not establish trustworthy code.

The review record

For a high-priority finding, keep the affected deployment, dependency path, advisory evidence, reachable input, mitigation, owner and target date. Record a fresh assessment after rollout. Reopen the issue if the old digest returns through rollback or a second pipeline.

The useful metric is time exposed on affected services, not the number of dependency alerts dismissed. Explain that distinction in the vulnerability prioritization interview.

Check yourself

Say or write your answer first, then reveal. Explaining it from memory, in your own words, is the skill an interviewer is checking.

  1. 1Why compare an SBOM with the running artifact?

  2. 2When does a reachability suppression expire?

Practise it as an interviewer asks it

Course lessons that teach this

Related lessons