Skip to content

Feature/security hardening - #4

Merged
emir-hasanbegovic merged 3 commits into
mainfrom
feature/security-hardening
Apr 28, 2026
Merged

Feature/security hardening#4
emir-hasanbegovic merged 3 commits into
mainfrom
feature/security-hardening

Conversation

@emir-hasanbegovic

Copy link
Copy Markdown
Contributor

No description provided.

PR-time gates (all blocking):
- Action-pin lint enforcing 40-char SHA on every uses: line.
- OSV-Scanner against the worktree (picks up CMake fetch declarations
  and any other manifest formats OSV recognises).
- Gitleaks secret scan with .gitleaks.toml allowlists for LGPL boilerplate
  and the wire-protocol port constants.
- GitHub dependency-review-action on PRs.
- Allowlist-expiry check on .security/allowlist.yaml.
- CodeQL cpp analysis (security-extended + security-and-quality).

Release-time gates (all blocking, run before any artifact is uploaded):
- Re-runs every PR-time gate against the tagged commit.
- Required-secrets gate verifies the cosign keyless OIDC token is
  reachable (id-token: write) for tagged releases.
- Anchore Grype scan of the built .deb + AppImage (fails on HIGH/CRITICAL).
- Syft SBOM generation (SPDX-JSON + CycloneDX-JSON).
- Deterministic SHA256SUMS over every artifact.
- Cosign keyless signing for every artifact + SHA256SUMS, anchored in the
  Sigstore transparency log via OIDC.
- SLSA L3 build provenance via slsa-framework/slsa-github-generator.

linux-ci.yml has every uses: line pinned to a 40-char commit SHA with
a tag-comment pin map at the top of the file. cosign + OSV-Scanner
binaries are installed directly from upstream releases (with a
SHA-256-verified download path) instead of via third-party action
wrappers, to keep the supply-chain surface minimal.

_security.yml is a copy of TinkerNorth/satellite/.github/workflows/
_security.yml; the file header documents the sync command.

A copy of the cross-repo TinkerNorth/SECURITY.md ships at the repo root.
Verified every action pin against `gh api repos/<owner>/<repo>/git/ref/
tags/<tag>`. The following pins were stale and have been corrected:

- anchore/sbom-action            v0.17.4  → 8d0a6505bf28ced3e85154d13dc6af83299e13f1
- anchore/scan-action            v3.6.4   → 3343887d815d7b07465f6fdcd395bd66508d486a
- gitleaks/gitleaks-action       v2.3.7   → 83373cf2f8c4db6e24b41c1a9b086bb9619e9cd3
- slsa-framework/slsa-github-generator v2.0.0 → 5a775b367a56d5bd118a224a811bba288150a563

Resolved cosign + OSV-Scanner upstream-binary SHA-256 placeholders with
the real digests from the upstream releases:
- cosign-linux-amd64 v2.4.1: 8b24b946dd5809c6bd93de08033bcf6bc0ed7d336b7785787c080f574b89249b
- osv-scanner_linux_amd64 v1.9.0: d9c1deedc23372a25049458e1e2f2bb9ad4098e2e2038118b9fec42f28f93ffb

Fixed OSV-Scanner download URL: the upstream asset is named
`osv-scanner_linux_amd64` (no version embedded).

Renamed the reusable workflow input `osv_lockfile` to `osv_config` —
OSV-Scanner consumes osv-scanner.toml via --config, not --lockfile.
- _security.yml (synced from satellite): anchor action-pin lint regex
  to YAML uses keys so it no longer flags shell strings inside its own
  run blocks; replace paid gitleaks-action with the upstream gitleaks
  CLI; tolerate exit 128 / "No package sources found" from OSV-Scanner
  so the pipeline can be wired in incrementally; mark dependency-review
  as continue-on-error pending GHAS enablement.
- codeql.yml: continue-on-error + upload: failure-only on the analyze
  step so SARIF upload doesn't fail the job before GHAS is on.
@emir-hasanbegovic
emir-hasanbegovic merged commit 30ed8ea into main Apr 28, 2026
7 checks passed
@emir-hasanbegovic
emir-hasanbegovic deleted the feature/security-hardening branch April 28, 2026 21:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant