Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
2 changes: 1 addition & 1 deletion .github/workflows/assign-ids.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
# Falls back to GITHUB_TOKEN when the App is not configured, so the job
# degrades to the old behaviour rather than failing outright. Set the
# ASSIGN_IDS_APP_ID variable and ASSIGN_IDS_APP_PRIVATE_KEY secret to
# activate it; see .github/README.md.
# activate it; see .github/CI_NOTES.md.
#
# Both halves have to be present or create-github-app-token hard-fails,
# which would defeat that fallback. Secrets are not readable in `if:`, so
Expand Down
24 changes: 24 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ jobs:
permissions:
contents: write
pull-requests: write
# For build-provenance attestation of release artifacts
id-token: write
attestations: write

steps:
- name: Checkout
Expand Down Expand Up @@ -87,6 +90,26 @@ jobs:
artifact-name: catalog-sbom.spdx.json
output-file: dist/catalog-sbom.spdx.json

# Sigstore build provenance for the release artifacts (SLSA). The
# bundle is also attached to the release as catalog.intoto.jsonl so
# consumers (and OpenSSF Scorecard) can verify it offline. Best-effort:
# a bookkeeping step must never be able to break a release.
- name: Attest build provenance
if: steps.changesets.outputs['has-changesets'] == 'false'
id: attest
continue-on-error: true
uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4
with:
subject-path: |
dist/catalog.sqlite
dist/catalog-index.json

- name: Stage provenance bundle for release
if: steps.changesets.outputs['has-changesets'] == 'false' && steps.attest.outcome == 'success'
env:
BUNDLE_PATH: ${{ steps.attest.outputs.bundle-path }}
run: cp "$BUNDLE_PATH" dist/catalog.intoto.jsonl

- name: Get package version
if: steps.changesets.outputs['has-changesets'] == 'false'
id: pkg
Expand All @@ -113,6 +136,7 @@ jobs:
dist/catalog.sqlite
dist/catalog.sqlite.sha256
dist/catalog.sqlite.minisig
dist/catalog.intoto.jsonl
dist/catalog-sbom.spdx.json
dist/catalog-index.json
dist/catalog-index.json.sha256
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,9 @@ curl -LO https://github.com/existential-engineering/catalog/releases/latest/down
sha256sum -c catalog.sqlite.sha256
```

Each release also includes a `catalog.sqlite.minisig` signature and a
`catalog-sbom.spdx.json` SBOM.
Each release also includes a `catalog.sqlite.minisig` signature, a
`catalog-sbom.spdx.json` SBOM, and a `catalog.intoto.jsonl` build-provenance
attestation.

### Query it

Expand Down
19 changes: 16 additions & 3 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
# Security Policy

## Reporting Issues
## Reporting a Vulnerability

If you discover a security issue, please report it by emailing the maintainers directly rather than opening a public issue.
Please report security issues privately rather than opening a public issue:

- **Preferred:** use GitHub's private vulnerability reporting via
[Report a vulnerability](https://github.com/existential-engineering/catalog/security/advisories/new)
- **Email:** [jeff@aureo.audio](mailto:jeff@aureo.audio)

## Scope

Expand All @@ -14,4 +18,13 @@ This repository primarily contains data files (YAML) and build scripts. Security

## Response

We will acknowledge receipt within 48 hours and provide a detailed response within 7 days.
We will acknowledge receipt within 48 hours and provide a detailed response
within 7 days. Please allow us a reasonable disclosure window to investigate
and ship a fix before any public disclosure.

## Release Integrity

Every release of `catalog.sqlite` ships with a SHA-256 checksum, a
[minisign](https://jedisct1.github.io/minisign/) signature
(`catalog.sqlite.minisig`), and an SPDX SBOM. Verify downloads against these
before use.