Syft
CLI tool for generating a Software Bill of Materials (SBOM) from container images and filesystems. Exceptional for vulnerability detection when used with a scanner like Grype.
Description
Syft is a CLI tool and Go library that generates SBOMs from container images, filesystems, archives, and more to discover packages and libraries. It supports OCI, Docker, and Singularity image formats, performs Linux distribution identification, and works seamlessly with Grype, a fast vulnerability scanner. Additionally, it can create signed SBOM attestations using the in-toto specification and convert between SBOM formats such as CycloneDX, SPDX, and its own format.
Use cases include scanning container images for package inventories to identify potential vulnerabilities, analyzing filesystems for software composition, and generating formatted SBOMs for compliance or security auditing. It pulls images from registries or uses local archives without requiring a container runtime in some modes.
Syft's integration with tools like Grype enables comprehensive vulnerability management workflows, making it valuable for DevSecOps pipelines and container security.
How It Works
Syft scans specified sources such as container images (OCI, Docker, Singularity), filesystems, archives, or directories to catalog packages and libraries, producing a package-based SBOM. It supports schemes like docker:, podman:, registry:, docker-archive:, oci-archive:, oci-dir:, and singularity: for source specification. Outputs are generated in formats including cyclonedx-json, spdx-json, syft-json, and others, with options for enrichment from local/online sources and path exclusions. It identifies Linux distributions and can produce attestations per in-toto specs.
Installation
sudo apt install syftFlags
Examples
syft scan alpine:latestsyft scan alpine:latest -o jsonsyft scan alpine:latest -o cyclonedxsyft scan alpine:latest -o cyclonedx-jsonsyft scan alpine:latest -o spdxsyft scan alpine:latest -o spdx-jsonsyft scan docker:yourrepo/yourimage:tagsyft scan registry:yourrepo/yourimage:tag