You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
See [docs/threat-model.md](docs/threat-model.md) for threat classes, residual risks, and security invariants. See [docs/security-status.md](docs/security-status.md) for implementation status of all 46 milestones.
159
+
See [docs/threat-model.md](docs/threat-model.md) for threat classes, residual risks, and security invariants. See [docs/security-status.md](docs/security-status.md) for implementation status of all 47 milestones.
160
160
161
161
### Verify Image Signatures
162
162
@@ -219,11 +219,11 @@ All CI jobs are defined in [`.github/workflows/ci.yml`](.github/workflows/ci.yml
219
219
| Job | Workflow Link | What It Proves |
220
220
|-----|--------------|---------------|
221
221
|`go-build-and-test`|[View job](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/ci.yml)| 399 Go tests across 9 services with `-race` (build, test, vet) |
|`supply-chain-verify`|[View job](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/ci.yml)| SBOM generation via Syft, cosign availability, provenance keywords in release/build workflows |
225
225
|`test-count-check`|[View job](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/ci.yml)| Prevents documented test counts from drifting below actual (source of truth: [test-counts.json](docs/test-counts.json)) |
|`dependency-audit`|[View job](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/ci.yml)|Enforced Go vulnerability scanning (govulncheck) + Python dependency audit (pip-audit) with [waiver mechanism](.github/vuln-waivers.json)|
227
227
|`shellcheck`|[View job](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/ci.yml)| Static analysis of all shell scripts (first-boot, build, verify-release, etc.) |
228
228
|`policy-validate`|[View job](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/ci.yml)| YAML schema validation for all policy and recipe files |
229
229
|`check-pins`|[View job](https://github.com/SecAI-Hub/SecAI_OS/actions/workflows/ci.yml)| Verifies all GitHub Actions are pinned to specific commit SHAs (not tags) |
@@ -239,7 +239,7 @@ All CI jobs are defined in [`.github/workflows/ci.yml`](.github/workflows/ci.yml
@@ -425,6 +425,7 @@ See [docs/test-matrix.md](docs/test-matrix.md) for full breakdown.
425
425
-[x]**Milestone 44** -- Auditability and documentation hardening: test-count drift CI check, CI evidence links and badges, M4/M5 terminology disambiguation, audit quick-path doc, recovery runbook, verify-release script, security/product roadmap split
426
426
-[x]**Milestone 45** -- Production readiness hardening: incident persistence (file-backed), graceful shutdown for all Go services, HTTP timeouts, systemd production hardening, first-boot validation, audit log rotation, CI vulnerability scanning, production operations guide
427
427
-[x]**Milestone 46** -- Operational maturity: bootstrap trust gap fix (cosign verify before rebase), CI runs on all changes (removed paths-ignore for .md), Python quality gates (ruff + bandit + split test suites), docs-validation CI job, production-readiness checklist, SLOs, release channel policy, support lifecycle, sample verification output
428
+
-[x]**Milestone 47** -- CI enforcement hardening: enforced vulnerability scanning (govulncheck + pip-audit + bandit fail on HIGH/HIGH) with waiver mechanism, mypy type checking for security-sensitive services, pinned reproducible Python CI dependencies, Go 1.23→1.25 (12 stdlib CVE fixes), verification-first bootstrap docs
-**Cadence:** As needed (security patches within 72 hours, features monthly)
32
-
-**Quality gate:** Full [production-readiness checklist](production-readiness-checklist.md) must pass
32
+
-**Quality gate:** Full [production-readiness checklist](production-readiness-checklist.md) must pass; all CI jobs green including enforced vulnerability scanning and mypy type checks
| Go standard library | With Go version updates (semi-annual) | Major version only | govulncheck fails CI on unwaived vulns |
165
+
| Go third-party | Monthly or on CVE | Patch/minor: auto; major: manual review | govulncheck fails CI on unwaived vulns |
166
+
| Python packages | Monthly or on CVE | Pinned in `requirements-ci.txt`| pip-audit fails CI on unwaived vulns |
167
+
| System packages (rpm-ostree) | With Fedora rebases | Follow Fedora release cycle | -- |
168
+
| GitHub Actions | Via Dependabot (auto-PR) | Review + CI must pass | check-pins verifies SHA pinning |
169
+
| Container base image | With Fedora Atomic updates | Follow uBlue release cycle | cosign signature verification |
170
+
171
+
Vulnerability waivers for reviewed/accepted findings are tracked in [`.github/vuln-waivers.json`](../.github/vuln-waivers.json) with mandatory expiry dates. Expired waivers automatically re-fail CI.
Copy file name to clipboardExpand all lines: docs/security-status.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Security Implementation Status
2
2
3
-
This document is split into two sections. The first section covers **Security Assurance Controls** -- all implemented milestones (M0 through M46) that satisfy the M5 security assurance acceptance criteria. Every control listed there is complete and tested. The second section is the **Product Feature Roadmap**, which tracks planned product capabilities (Agent Mode Phases 2 and 3). These are product enhancements, not security assurance requirements; the M5 security posture is fully met without them.
3
+
This document is split into two sections. The first section covers **Security Assurance Controls** -- all implemented milestones (M0 through M47) that satisfy the M5 security assurance acceptance criteria. Every control listed there is complete and tested. The second section is the **Product Feature Roadmap**, which tracks planned product capabilities (Agent Mode Phases 2 and 3). These are product enhancements, not security assurance requirements; the M5 security posture is fully met without them.
4
4
5
5
Last updated: 2026-03-14
6
6
@@ -59,6 +59,7 @@ All M5 security assurance criteria are met. The controls below have been impleme
59
59
| Auditability and documentation hardening | Implemented | M44 | Test-count drift CI check with single source of truth (docs/test-counts.json), CI evidence links and GitHub Actions badges in README, M4/M5 terminology disambiguation (project milestones vs M5 security assurance level), operator verification column in M5 control matrix, external audit quick-path doc, recovery runbook with concrete curl commands, verify-release.sh auditor script, sample release bundle doc, security-status split into assurance controls vs product roadmap |
60
60
| Production readiness hardening | Implemented | M45 | Incident recorder file-backed persistence (survives restarts), graceful shutdown (SIGTERM/SIGINT with connection draining) for all 9 Go services, HTTP server timeouts for mcp-firewall and gpu-integrity-watch, systemd production hardening (TimeoutStartSec, TimeoutStopSec, StartLimitInterval, StartLimitBurst) for all 12 daemon units, first-boot health validation script, audit log rotation via logrotate, CI dependency vulnerability scanning (govulncheck + pip-audit), production operations guide (upgrade, key rotation, capacity limits, monitoring) |
61
61
| Operational maturity | Implemented | M46 | Bootstrap trust gap fix (cosign verify before unverified rebase, documented trust gap rationale), CI runs on all changes (removed blanket paths-ignore for .md files), Python quality gates (ruff lint + bandit security scan + split test suites into unit/integration and adversarial/acceptance), docs-validation CI job (broken link detection, required docs check, test-counts.json validation), production-readiness checklist (formal release gate), SLOs (availability/latency/correctness targets + alerting thresholds), release channel policy (stable/candidate/dev + versioning + upgrade paths + security patch SLA), support lifecycle (hardware matrix, driver versions, support windows, deprecation policy, scope boundaries), CI evidence table with all 10 job descriptions and workflow links, sample verification output for verify-release.sh |
62
+
| CI enforcement hardening | Implemented | M47 | Enforced vulnerability scanning: bandit fails CI on HIGH-severity/HIGH-confidence findings, govulncheck fails on unwaived Go vulns, pip-audit fails on unwaived Python vulns. Waiver mechanism (`.github/vuln-waivers.json`) with mandatory expiry dates for reviewed/accepted findings. mypy type checking gate for security-sensitive services (common, agent, quarantine, ui). Pinned reproducible Python CI dependencies (`requirements-ci.txt`). Go 1.23→1.25 upgrade fixing 12 stdlib CVEs (crypto/tls, crypto/x509, encoding/asn1, net/url, os). Flask 3.1.1→3.1.3 (GHSA-68rp-wp8r-4726). Verification-first bootstrap documentation (signed rebase as default quickstart, unverified bootstrap moved to labeled recovery section). |
0 commit comments