No description
Find a file
Alex Goodman 05e8ba948d
Add python wheel egg relationships (#2903)
* add python package relationships

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* nil for empty relationships collections

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* new json schema for optional python requiremenets

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* update format snapshots for python packages

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* decompose python parsers more + add tests around plural fields

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

* update JSON schema with python dep refs

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>

---------

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
2024-05-25 20:11:38 +00:00
.github --- (#2889) 2024-05-23 09:26:12 -04:00
cmd/syft feat: Add Lua cataloger (#2613) 2024-05-24 16:56:34 -04:00
examples docs: add simplest example from regsitry (#2691) 2024-03-06 14:25:37 -05:00
internal Add python wheel egg relationships (#2903) 2024-05-25 20:11:38 +00:00
schema Add python wheel egg relationships (#2903) 2024-05-25 20:11:38 +00:00
syft Add python wheel egg relationships (#2903) 2024-05-25 20:11:38 +00:00
test feat: Add Lua cataloger (#2613) 2024-05-24 16:56:34 -04:00
.binny.yaml chore(deps): update tools to latest versions (#2900) 2024-05-24 09:34:08 -04:00
.bouncer.yaml Update bootstrap tools to latest versions. (#1204) 2022-09-14 15:28:08 -04:00
.chronicle.yaml enforce breaking change bump major version (#2635) 2024-02-28 15:48:20 -05:00
.gitignore Internalize majority of cmd package (#2533) 2024-01-24 13:29:51 -05:00
.golangci.yaml feat: add relationships to ELF package discovery (#2715) 2024-05-09 13:53:59 -04:00
.goreleaser.yaml re-add cosign signing checksums file (#2572) 2024-01-31 13:19:41 -05:00
artifacthub-repo.yml chore: claim artifacthub package ownership from developer-guy (#881) 2023-01-11 15:25:42 -05:00
CONTRIBUTING.md feat: update golang to 1.19 (#1526) 2023-01-31 11:39:57 -05:00
CONTRIBUTORS.md Add cataloger for Swift Package Manager. (#1919) 2023-07-25 14:35:21 -04:00
DEVELOPING.md Internalize majority of cmd package (#2533) 2024-01-24 13:29:51 -05:00
Dockerfile chore: pin and update all workflow dependencies; add permission scopes (#2138) 2023-09-15 14:18:42 -04:00
Dockerfile.debug chore: pin and update all workflow dependencies; add permission scopes (#2138) 2023-09-15 14:18:42 -04:00
go.mod chore(deps): bump github.com/charmbracelet/lipgloss (#2902) 2024-05-25 16:07:25 -04:00
go.sum chore(deps): bump github.com/charmbracelet/lipgloss (#2902) 2024-05-25 16:07:25 -04:00
install.sh fix(install): return appropriate error codes (#2664) 2024-02-22 19:34:51 -05:00
LICENSE add apache v2 license 2020-06-24 14:37:00 -04:00
Makefile Upgrade tool management (#2188) 2023-10-25 09:08:43 -04:00
README.md chore: Reduce length of readme, moving lengthy content to the wiki (#2882) 2024-05-20 13:46:32 -04:00
RELEASE.md switch from trigger-release target to release target (#1560) 2023-02-09 16:35:11 +00:00
SECURITY.md add security policy (#2835) 2024-05-02 14:45:17 +00:00
Taskfile.yaml Restore version file update on release (#2844) 2024-05-06 15:14:43 -04:00

Cute pink owl syft logo

Syft

A CLI tool and Go library for generating a Software Bill of Materials (SBOM) from container images and filesystems. Exceptional for vulnerability detection when used with a scanner like Grype.

 Validations   Go Report Card   GitHub release   GitHub go.mod Go version   License: Apache-2.0   Slack 

syft-demo

Introduction

Syft is a powerful and easy-to-use open-source tool for generating Software Bill of Materials (SBOMs) for container images and filesystems. It provides detailed visibility into the packages and dependencies in your software, helping you manage vulnerabilities, license compliance, and software supply chain security.

Syft development is sponsored by Anchore, and is released under the Apache-2.0 License. For commercial support options with Syft or Grype, please contact Anchore.

Features

  • Generates SBOMs for container images, filesystems, archives, and more to discover packages and libraries
  • Supports OCI, Docker and Singularity image formats
  • Linux distribution identification
  • Works seamlessly with Grype (a fast, modern vulnerability scanner)
  • Able to create signed SBOM attestations using the in-toto specification
  • Convert between SBOM formats, such as CycloneDX, SPDX, and Syft's own format.

Installation

Syft binaries are provided for Linux, macOS and Windows.

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

... or, you can specify a release version and destination directory for the installation:

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b <DESTINATION_DIR> <RELEASE_VERSION>

Homebrew

brew install syft

Scoop

scoop install syft

Chocolatey

The chocolatey distribution of Syft is community-maintained and not distributed by the Anchore team

choco install syft -y

Nix

Note: Nix packaging of Syft is community maintained. Syft is available in the stable channel since NixOS 22.05.

nix-env -i syft

... or, just try it out in an ephemeral nix shell:

nix-shell -p syft

Getting started

SBOM

To generate an SBOM for a container image:

syft <image>

The above output includes only software that is visible in the container (i.e., the squashed representation of the image). To include software from all image layers in the SBOM, regardless of its presence in the final image, provide --scope all-layers:

syft <image> --scope all-layers

Output formats

The output format for Syft is configurable as well using the -o (or --output) option:

syft <image> -o <format>

Where the formats available are:

  • syft-json: Use this to get as much information out of Syft as possible!
  • syft-text: A row-oriented, human-and-machine-friendly output.
  • cyclonedx-xml: A XML report conforming to the CycloneDX 1.4 specification.
  • cyclonedx-json: A JSON report conforming to the CycloneDX 1.4 specification.
  • spdx-tag-value: A tag-value formatted report conforming to the SPDX 2.3 specification.
  • spdx-tag-value@2.2: A tag-value formatted report conforming to the SPDX 2.2 specification.
  • spdx-json: A JSON report conforming to the SPDX 2.3 JSON Schema.
  • spdx-json@2.2: A JSON report conforming to the SPDX 2.2 JSON Schema.
  • github-json: A JSON report conforming to GitHub's dependency snapshot format.
  • syft-table: A columnar summary (default).
  • template: Lets the user specify the output format. See "Using templates" below.

Supported Ecosystems

  • Alpine (apk)
  • C (conan)
  • C++ (conan)
  • Dart (pubs)
  • Debian (dpkg)
  • Dotnet (deps.json)
  • Objective-C (cocoapods)
  • Elixir (mix)
  • Erlang (rebar3)
  • Go (go.mod, Go binaries)
  • Haskell (cabal, stack)
  • Java (jar, ear, war, par, sar, nar, native-image)
  • JavaScript (npm, yarn)
  • Jenkins Plugins (jpi, hpi)
  • Linux kernel archives (vmlinz)
  • Linux kernel modules (ko)
  • Nix (outputs in /nix/store)
  • PHP (composer)
  • Python (wheel, egg, poetry, requirements.txt)
  • Red Hat (rpm)
  • Ruby (gem)
  • Rust (cargo.lock)
  • Swift (cocoapods, swift-package-manager)
  • Wordpress plugins

Documentation

Our wiki contains further details on the following topics:

Syft Team Meetings

The Syft Team hold regular community meetings online. All are welcome to join to bring topics for discussion.