diff --git a/workplans/USER-WP-0038-runtime-image-os-package-hardening.md b/workplans/USER-WP-0038-runtime-image-os-package-hardening.md new file mode 100644 index 0000000..e8485ff --- /dev/null +++ b/workplans/USER-WP-0038-runtime-image-os-package-hardening.md @@ -0,0 +1,54 @@ +--- +id: USER-WP-0038 +type: workplan +title: "Runtime image OS-package hardening for RISK-F-0016" +domain: communication +repo: user-engine +status: ready +owner: codex +topic_slug: communication +created: "2026-10-14" +updated: "2026-10-14" +related: + - RISK-F-0016 + - RAPP-USER-ENGINE-WP-0004 + - USER-WP-ADHOC-2026-10-11 +--- + +# Runtime image OS-package hardening + +Durable owner record for the permanent fix of RiskNexus finding RISK-F-0016 +(`~/risk-nexus/findings/RISK-F-0016-user-engine-os-runtime-findings.md`). +RAPP-USER-ENGINE-WP-0004 tracked the runtime-package rollout only and is +closing; image content is user-engine source work and is owned here. + +Baseline: live image +`forgejo.coulomb.social/coulomb/user-engine@sha256:f239bbf332b8eb87320c86390fddca1dcb4f7c628a7af75e79dee8058d446a7b` +on Python 3.12 slim-trixie base `a6e34c59` +(`docs/evidence/2026-10-11-runtime-base-refresh.md`). Fresh scan 2026-10-14 +(rapp-user-engine 7567e7e, `docs/evidence/2026-10-14-risk-review/`): 0 CRITICAL, +44 HIGH across 8 CVEs, none with a fixed version. + +## Remove or replace unfixed-HIGH OS packages in the runtime image + +```task +id: USER-WP-0038-T01 +status: todo +priority: high +``` + +Target the 2026-10-14 HIGH set: util-linux family (bsdutils, mount, libblkid, +libmount, libuuid, related) CVE-2026-76642/78408/78409/78410 (36 occurrences); +ncurses CVE-2025-69720 (4); libsystemd0 CVE-2026-16742 (2); libacl1 +CVE-2026-54369; perl-base CVE-2026-9538 (fix_deferred). Either prune packages +the runtime does not need from the final stage, or move to a supported smaller +Python 3.12 base (distroless/chainguard-style), preserving exact application +bytes and resolved dependency versions. No scanner suppression, ignore-unfixed +or allowlist may be used to reach acceptance. + +Acceptance: clean owner CI publication of a new digest from a committed source +revision with provenance; unsuppressed fresh scan shows zero CRITICAL and every +remaining HIGH either resolved or individually dispositioned with reason; full +source and image test suites pass. Live rollout is out of scope: hand the digest +to rapp-user-engine as a separate, scoped approval. Then update RISK-F-0016 +fix_tracking to this task.