mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2026-10-27 16:02:05 +00:00
3.6 KiB
3.6 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 - Maintainer verification runbook:
docs/release_verification_runbook.md - Release protection policy:
docs/release_protection_policy.md
Temporary Vulnerability Exception Register
| Advisory | Scope | Owner | Added | Expiration | Status | Compensating Controls |
|---|---|---|---|---|---|---|
GHSA-wj6h-64fc-37mp / CVE-2025-62727 |
pip-audit ignore in CI/release workflows |
Maintainers (DevOps) | 2026-02-25 | 2026-04-15 | Temporary | locked dependencies, weekly dependency-audit workflow, release-integrity verification/signing |
Exception policy:
- Exception must have owner + expiration date.
- Exception must be removed or renewed with explicit risk review before expiration.
- Any renewal must be documented in this table and
docs/security_readiness_checklist.md.
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) before expiration (2026-04-15) or renew with explicit risk review. - Enforce branch/release protection so publishable tags require successful
Release IntegrityandDependency Auditchecks before release publication. - Execute and record at least one maintainer-side verification using
docs/release_verification_runbook.md.