This repository contains the documentation and tools for the SBOM and dependency management process.
During the release phase of a version, when a repository is tagged with a stable version (see conventional commit), it is necessary to:
- generate an SBOM (Software Bill of Materials)
- publish the SBOM in as an attachment to the release
Chosen tool: Trivy
The SBOM must be generated in three formats:
- Standard CVE SARIF: Integrated into GitHub code scanning.
- GitHub Dependency Graph format: Serves as a snapshot under Insights, does not maintain a history.
- CycloneDX: Must be included in the release with a name ending in
.cdx.json
-
A GitHub Action has been implemented for NS8 to generate and upload the SBOM. Engine: Trivy. The action uploads the SBOM:
- As an attachment in CyCloneDX and SARIF format in the repository release.
- To the repository dependency graph.
-
A scraper has been implemented as a GitHub Action to read EOL information from an SBOM.
For each EOL distribution, a new security advisory is created in this repository.
Use Renovate for dependency management, while Dependabot only for alerts (without automatic pull requests). To do:
- Configure Dependabot for all repositories
- Create a configuration file for Renovate that can be inherited by all NS8 repositories
Default behavior:
- if there are no tests, automatically merge patch versions, no automatic merge for minor and major versions
- if there are tests, automatically merge all versions (to be implemented as an override on individual projects)
- Create a common configuration file for Renovate for all non-NS8 projects, such as UIs
To be done by: May 2025
Define internal governance for EOL and dependencies, balancing political and technical aspects. The governance must be able to:
- Coordinate work, allocating time for managing vulnerabilities and EOL
- Provide guidelines on choices to be made in case of EOL or vulnerabilities
- Decide on timing and methods of communication about vulnerabilities and updates
- Define guidelines for choosing distributions when creating a container
Dependency Track will be the tool for managing SBOMs and vulnerabilities.
Install a Dependency Track server and configure it to:
- automatically import SBOMs from GitHub releases (see sbom-uploader)
- give access to the Nethesis team for consulting SBOMs and vulnerabilities
See sbom-repositories.json for the list of repositories that are part of the SBOM process.
The following projectes does not have a valid SBOM because no go.mod file is present: