| doc-type | issue | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| issue-type | task | ||||||||||||||
| status | done | ||||||||||||||
| priority | p3 | ||||||||||||||
| github-issue | 1898 | ||||||||||||||
| spec-path | docs/issues/closed/1898-document-security-analysis-process.md | ||||||||||||||
| branch | 1898-document-security-analysis-process | ||||||||||||||
| related-pr | 1899 | ||||||||||||||
| last-updated-utc | 2026-06-10 00:00 | ||||||||||||||
| semantic-links |
|
Establish a structured process for evaluating security warnings and create the initial catalog entry documenting why the trixie-based Containerfile image CVEs do not affect us.
The VS Code Docker DX extension flags vulnerabilities in the Containerfile's three
trixie-based FROM images (rust:trixie, rust:slim-trixie, gcc:trixie). These are
upstream CVEs in Docker Official Images. Before this issue, there was no documented process
or central catalog to record such analyses, meaning every contributor seeing these warnings
would need to re-do the same investigation.
This issue builds on the Docker Security Overhaul EPIC
(#1457), which established
a security baseline for the Containerfile and container workflows. Previous sub-issues
include adding hadolint linting to CI
(#1460) and evaluating the
rust:slim-trixie vs rust:trixie trade-off
(#1463). Issue #1463 already
includes a Trivy scan of both the trixie build images and the distroless runtime,
confirming the runtime has 0 critical/high CVEs.
The current VS Code Docker DX warnings are a new signal that needs to be systematically analyzed and cataloged, which this issue addresses by creating a permanent analysis process and catalog.
We need:
- A
docs/security/analysis/folder structure with a process document. - The initial analysis cataloging these CVEs as non-affecting, with rationale.
- A subfolder for non-affecting vulnerabilities so they can be looked up quickly.
- A
.github/skills/dev/maintenance/catalog-security-vulnerabilities/skill so AI agents auto-discover this process.
- Create
docs/security/analysis/README.md— index and process description. - Create
docs/security/analysis/non-affecting/— subfolder for non-affecting vulnerabilities. - Create
docs/security/analysis/non-affecting/2026-06-10_containerfile-trixie-cves.md— actual analysis. - Create
.github/skills/dev/maintenance/catalog-security-vulnerabilities/SKILL.md— AI agent skill. - Update
docs/adrs/20260603000000_keep_unit_tests_inside_container_build.md— add Security Rationale section. - Add semantic links between ADR, security analysis, and skill convention.
- List notable CVEs, explain why non-affecting, define review cadence.
- Changing the Containerfile base images (separate concern if needed).
- Fixing the upstream CVEs (they are in Docker Official Images, not our code).
- Creating automation for vulnerability scanning (future enhancement).
- Documenting affecting vulnerabilities (none found yet).
Status values: TODO, IN_PROGRESS, BLOCKED, DONE.
| ID | Status | Task | Notes / Expected Output |
|---|---|---|---|
| T1 | DONE | Create docs/security/analysis/ folder structure |
README.md + non-affecting/ subfolder |
| T2 | DONE | Analyze trixie Containerfile CVEs | Document showing why they don't affect us |
| T3 | DONE | Write the non-affecting analysis document | 2026-06-10_containerfile-trixie-cves.md with full rationale |
| T4 | DONE | Update ADR with security rationale | Added Security Rationale section to docs/adrs/20260603000000_keep_unit_tests_inside_container_build.md |
| T5 | DONE | Add semantic links between all related docs | semantic-links updated in ADR, security analysis, and README |
| T6 | DONE | Create security analysis skill | .github/skills/dev/maintenance/catalog-security-vulnerabilities/SKILL.md |
| T7 | DONE | User reviews the draft issue spec | Approval before creating GitHub issue |
| T8 | DONE | Create GitHub issue | Issue #1898 created with task+security labels |
| T9 | DONE | Rename spec from drafts/ to open/ with issue number |
Moved to docs/issues/open/1898-document-security-analysis-process.md |
| T10 | DONE | Commit and push | Commit fdee528f, pushed, PR #1899 opened |
- Spec drafted in
docs/issues/drafts/ - Spec reviewed and approved by user/maintainer
- GitHub issue created and issue number added to this spec
- Implementation completed
- Automatic verification completed (
linter all, relevant tests) - Manual verification scenarios executed and recorded
- Acceptance criteria reviewed after implementation and updated with evidence
- Issue closed and spec moved from
docs/issues/open/todocs/issues/closed/
- 2026-06-10 16:30 UTC - GitHub Copilot - Created security analysis skill in
.github/skills/dev/maintenance/catalog-security-vulnerabilities/ - 2026-06-10 16:00 UTC - GitHub Copilot - Drafted issue spec and created analysis documents in
docs/security/analysis/
- AC1:
docs/security/analysis/README.mdexists with process description and template - AC2:
docs/security/analysis/non-affecting/2026-06-10_containerfile-trixie-cves.mdexists with full analysis - AC3: The analysis document includes: vulnerability summary, rationale for non-affecting status, future actions, and references
- AC4:
docs/adrs/20260603000000_keep_unit_tests_inside_container_build.mdhas a Security Rationale section - AC5: Semantic links are consistent between ADR, security analysis documents, and related artifacts
- AC6:
linter allexits with code0 - AC7: New documents are spell-checked (no false positives)
- AC8: Documentation is updated when behavior/workflow changes
- AC9:
.github/skills/dev/maintenance/catalog-security-vulnerabilities/SKILL.mdexists with process description and semantic-links
linter all- Spell check on new documents
Status values: TODO, IN_PROGRESS, DONE, FAILED, BLOCKED.
| ID | Scenario | Command/Steps | Expected Result | Status | Evidence |
|---|---|---|---|---|---|
| M1 | Verify README renders correctly | Open docs/security/analysis/README.md in VS Code preview |
All sections readable, links work | TODO | |
| M2 | Verify analysis document renders correctly | Open analysis doc in VS Code preview | Tables render, rationale clear | TODO | |
| M3 | Verify no broken internal links | Check all semantic-links and references point to real files |
All refs resolve | TODO | |
| M4 | Run linters | linter all |
Exit code 0 | TODO |