mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-27 07:52:03 +00:00
3.0 KiB
3.0 KiB
Supply Chain and Release Integrity
This document defines the release trust chain for SeedPass and provides the evidence expected by checklist item #8 in docs/security_readiness_checklist.md.
Scope
- Dependency lock and hash integrity (
requirements.lock). - Vulnerability review process for runtime dependencies.
- Release artifact checksums and signing.
Controls
-
Locked dependencies:
- Dependencies are pinned and hash-locked in
requirements.lock. - CI and release automation regenerate the lock file from
src/requirements.txtand fail on drift. scripts/release_integrity.py check-lockfileenforces that pinned entries and SHA-256 hashes are present.
- Dependencies are pinned and hash-locked in
-
CVE review:
pip-auditruns in CI (.github/workflows/dependency-audit.yml) and at release time (.github/workflows/release-integrity.yml).- Vulnerabilities must be remediated before release unless a temporary exception is documented with a tracked advisory ID and owner.
- Current temporary exception:
GHSA-wj6h-64fc-37mp.
-
Artifact integrity:
- Release artifacts are built with
python -m build. scripts/release_integrity.py generatecreates a deterministicSHA256SUMSmanifest.scripts/release_integrity.py verifyre-checks artifacts againstSHA256SUMS.SHA256SUMSis signed in GitHub Actions using keylesscosign, producing:SHA256SUMS.sigSHA256SUMS.pem
- Release artifacts are built with
Release Workflow
Workflow: .github/workflows/release-integrity.yml
On every published GitHub release, the workflow:
- Verifies lockfile integrity and lock drift.
- Runs CVE audit on pinned dependencies.
- Builds source/wheel artifacts.
- Generates and verifies
SHA256SUMS. - Signs
SHA256SUMSwith keylesscosign. - Uploads artifacts and integrity files to the GitHub release.
Manual Verification
From a checkout that includes release assets:
python scripts/release_integrity.py verify --checksum-file SHA256SUMS --base-dir .
cosign verify-blob \
--certificate SHA256SUMS.pem \
--signature SHA256SUMS.sig \
SHA256SUMS
Evidence
- Workflow:
.github/workflows/release-integrity.yml - Tooling:
scripts/release_integrity.py,src/seedpass/release_integrity.py - Tests:
src/tests/test_release_integrity_utils.py
Remaining Work To Mark Checklist Item #8 Done
- Execute at least one tagged production release through
.github/workflows/release-integrity.ymland record the run URL/artifact links indocs/security_readiness_checklist.md. - Eliminate the temporary audit exception (
GHSA-wj6h-64fc-37mp) or document formal risk acceptance with expiration date and owner. - Add branch/release protection so publishable tags require successful
Release IntegrityandDependency Auditchecks before release publication. - Add maintainer verification runbook for release consumers that includes:
python scripts/release_integrity.py verify --checksum-file SHA256SUMS --base-dir .cosign verify-blob --certificate SHA256SUMS.pem --signature SHA256SUMS.sig SHA256SUMS- expected identity/issuer constraints for keyless signing.