Skip to content

Security fixes and SBOM

Which versions get fixes

Only the newest release. A security fix is a new release, and older versions are not patched. An instance on :latest, or on a :X or :X.Y tag that follows the newest release, gets the fix with the next pull; see Upgrading.

Reporting a vulnerability

Privately, through Report a vulnerability on GitHub, not as a public issue. The security policy has the details. Fixed vulnerabilities are listed under Security advisories.

What is in a release

Each release has two SBOM files in CycloneDX JSON:

File Lists
notefeed-X.Y.Z-npm.cdx.json the npm packages the server is built from, as package-lock.json resolves them, without the ones only tests and the build use
notefeed-X.Y.Z-image.cdx.json what a scan finds in the linux/amd64 image: the Alpine packages, Node.js and the npm packages that are files in the image

The two overlap, and neither replaces the other: many npm packages are compiled into the server's bundle, where a scan of the image does not see them.

The image carries an SBOM and a build provenance attestation as well:

docker buildx imagetools inspect ghcr.io/notefeed/notefeed:latest --format '{{ json .SBOM }}'
docker buildx imagetools inspect ghcr.io/notefeed/notefeed:latest --format '{{ json .Provenance }}'

Checking an instance yourself

Any scanner that reads CycloneDX takes the files above. To scan the image directly, for example with Grype:

grype ghcr.io/notefeed/notefeed:latest --only-fixed

The project runs the same scan every day, together with a check of the npm and Python dependencies, so a finding with a fix normally leads to a release.