Shipward

Docs

Getting started

One settings file, then three commands.

cra.yaml #

Put a cra.yaml in the root of your product’s repository:

product:
  name: Ludo
  licence: LicenseRef-example-proprietary   # SPDX expression you distribute the product under
manufacturer:
  name: "Example Software Ltd"
  url: https://example.com
  email: security@example.com
sbom:
  exclude: ["./tests/**", "./**/bin/**", "./**/obj/**"]   # left out of the scan

Only product.name and manufacturer.name are required. The defaults: the SBOM goes to sbom/sbom.cdx.json, extra components come from components.extra.yaml, confirmed licences from licences.yaml, and decisions from vex.yaml.

The first run #

cra sbom --version 1.4.0      # sbom/sbom.cdx.json
cra check sbom                # which SBOM fields are missing
cra scan                      # known vulnerabilities in your components

Then record a decision for each advisory cra scan shows (Decisions), and add the GitHub Action so this runs on every push.

Scan a clean checkout #

Run cra sbom on a clean checkout of your source, as CI does. Old build output in your working folder can contain packages the product no longer ships, and they would appear in the SBOM.