Repository navigation
Scan published native images and refresh the runtime base (#802) - #1158
Merged
Merged
Conversation
The native release recorded provenance but never inventoried vulnerabilities in the published image. Add a repository-owned scan: scripts/ci/native-image-scan.sh runs the pinned Trivy 0.76.1 index on one platform digest from the registry, and native_scan_receipt.py keeps a compact metadata receipt (digest, scanner and database identity, every HIGH/CRITICAL row with fix status and class, fingerprint). native-release.yml scans both published children after publish. A HIGH or CRITICAL row with a fixed version fails the job; alias evidence now requires both scan jobs, so it holds promotion. Unfixed rows stay inventory. native-image-rescan.yml rescans latest weekly. Scanning published 3.5.0 found CVE-2026-109518 (apt, libapt-pkg6.0 2.6.1, fixed in 2.6.2) in the runtime base, so the base moves to the current Debian 12 bookworm-slim index, which scans clean of fixable rows on both architectures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
Security review: PASS (head
Disposition of the unfixed rows (#802): accepted residual risk, not a release hold.
Recommended hardening, not blocking: consider a distroless or |
rmcdaniel
enabled auto-merge
November 12, 2026 01:49
- The scan container is named from RESOURCE_SCOPE (run, attempt, job), and each scan job removes it in an if: always() step, as the Docker isolation policy requires. - The isolation checker's pinned hash of native_alias_evidence.py moves to the reviewed version that requires the scan jobs. - The weekly rescan resolves latest through the registry API instead of a docker command. - native_scan_receipt.py reads the report on stdin and the version JSON as a value, so no path comes from arguments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rmcdaniel
disabled auto-merge
November 12, 2026 02:04
Member
Author
|
Security countercheck of delta
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rmcdaniel
enabled auto-merge
November 12, 2026 02:05
Member
Author
|
Took the optional no-redirect opener: the resolver now refuses any redirect rather than following it off ghcr.io (commit on this branch). Auto-merge re-enabled after Security's delta PASS. |
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Part of #802. Native releases recorded provenance but never inventoried vulnerabilities in the published image.
Finding: scanning published native 3.5.0 (linux/amd64
sha256:0f394e96…) with the pinned Trivy found CVE-2026-109518 (HIGH) inaptandlibapt-pkg6.02.6.1, fixed in 2.6.2. The package comes from the runtime base and the server never invokes it. The other rows are unfixed Debian inventory: 1 critical (CVE-2023-45853 zlib,will_not_fix) and 34 high (affected/fix_deferred). Disposition is for Security.Change
scripts/ci/native-image-scan.sh IMAGE@sha256:… PLATFORM OUTreads one platform digest from the registry with Trivy 0.76.1, pinned by its indexsha256:790fd66d…. Its linux/amd64 child is thesha256:2e6c00d7…Security used on Scan published Server images for actionable vulnerabilities #802. Nothing runs the image.scripts/ci/native_scan_receipt.pykeeps a compact receipt (about 8 KB): digest, OS, scanner and DB identity and times, every HIGH/CRITICAL row (id, package, installed, fixed, status,os-pkgs/lang-pkgsclass), counts and a row fingerprint. The full report is discarded. It exits 1 only for a row with a fixed version, per Scan published Server images for actionable vulnerabilities #802's policy. Unfixed rows are inventory.native-release.ymlgainsscan-amd64andscan-arm64after publish, keepingnative-scan-*receipts for 90 days.native_alias_evidence.RELEASE_JOBSnow requires both scan jobs, so a fixable finding holds alias promotion. The tag contract check expects the two jobs.native-image-rescan.ymlrescanslatestweekly (Monday 06:17 UTC) and on dispatch.Dockerfile.nativeruntime base moves to the current Debian 12 bookworm-slim indexsha256:734a72b3…(12.15, apt 2.6.2). Scanned with the same Trivy, it has zero fixable HIGH/CRITICAL rows on amd64 and arm64. The unfixed inventory is unchanged. Without this, 3.6.0 would fail its own scan.docs/native-release-promotion.mddocuments the scan and the hold.Tests
tests/Unit/Support/native_scan_receipt_test.py(4 tests) covers unfixed inventory not holding, a fixed row holding with its class, a fingerprint that is stable across scan time but follows row changes, and refusal of an unpinned or mismatched image. It is wired into the native promotion contracts workflow.check-native-release-tags.shpass.Not in this PR: Security's reachability disposition of the unfixed rows, and the formal SBOM (#1012).
🤖 Generated with Claude Code