Join our Newsletter — 33% off our NHI Course

How does Syft work?

Syft generates a software bill of materials by identifying packages, libraries and other components in container images, filesystems and archives. Security teams use it to establish what is actually present before scanning for vulnerabilities. Accuracy depends on what Syft can observe, so results should be checked against build inputs and runtime artefacts.

What Syft is doing when it builds an SBOM

Syft scans the contents of a target and recognises components by looking at package metadata, manifests, filesystem artefacts and archive contents. The practical output is an inventory of what is present, not a guess about what developers intended to ship. That distinction matters because SBOM usefulness comes from observability, not from a dependency declaration alone.

In practice, Syft is strongest where the target exposes stable package evidence, such as package databases, lockfiles, image layers or build artefacts. It is less certain where components are stripped, renamed, bundled or embedded without clear metadata. That is why the result should be treated as a discovery output that can be validated against build inputs and any runtime evidence you have available.

Where Syft fits in a vulnerability workflow

Syft is usually the discovery step before vulnerability analysis, policy checks or supply-chain attestation. By establishing the software components first, it gives downstream tools a cleaner basis for mapping packages to known advisories and for distinguishing true exposure from irrelevant findings. For readers who want the broader SBOM picture, NHIMG’s SBOM Guide covers SPDX, CycloneDX, SBOM quality and how SBOMs are used in vulnerability management.

The output also helps teams compare what was built, what was scanned and what is actually running. That is useful when image contents, filesystem state and deployment artefacts diverge, because the security question is often not “can a scanner find a package?” but “do we have an accurate component inventory for this exact artefact?” Syft is designed to answer that inventory question first.

Why Syft results need human validation

Syft is deterministic about what it can see, but it cannot recover what has been removed from the artefact or infer intent from missing evidence. If a component is statically linked, renamed, vendored, packed or otherwise obscured, the resulting SBOM may be incomplete or ambiguous. That is not a failure of the tool so much as a reminder that SBOM generation is evidence-based inspection, not omniscient reconstruction.

For that reason, teams should expect some false negatives and occasional attribution ambiguity, especially in minimal containers and heavily optimised build outputs. The useful discipline is to cross-check Syft output against the build system, package manifests, lockfiles and any known runtime artefacts before treating the SBOM as authoritative for risk decisions.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

CIS Controls v8, SLSA and OWASP ASVS set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
CIS Controls v8 CIS-16 — Application Software Security SBOM generation supports asset and software inventory for vulnerable components.
Recommendation — Use software inventories to identify and prioritise exposed components.
SLSA Supply-chain provenance Syft contributes to software artefact inventory needed for supply-chain integrity checks.
Recommendation — Track artefact contents and provenance before trusting downstream security decisions.
OWASP ASVS V15 — Secure Coding and Architecture Component discovery informs application dependency review and build integrity validation.
Recommendation — Verify dependencies and build outputs against the intended software architecture.

Practitioner Guidance

What to verify: Check whether the SBOM covers the exact artefact you care about, not only a nearby build stage or base image. If the component list changes materially between build inputs and the generated output, treat that as a signal to investigate what was omitted, bundled or transformed.

What good looks like: A good Syft run produces a repeatable component inventory that aligns with source-of-truth build materials, with any gaps explained by packaging or compilation behaviour rather than by tool uncertainty.

Practitioner takeaway: Use Syft to establish component presence, then validate the result against the build and runtime evidence before you rely on it for vulnerability prioritisation or compliance reporting.