Handle shadowed gosu scan finding
GeoIntel release gates / Compile, test, contracts and builds (push) Canceled after 0s
GeoIntel release gates / Python and npm vulnerability policy (push) Canceled after 0s
GeoIntel release gates / GIS image, SBOM and container scan (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-18 04:41:23 +02:00
parent 84cfe0d339
commit 0bd3934303
3 changed files with 13 additions and 2 deletions
+2
View File
@@ -67,6 +67,8 @@ def test_scanner_images_are_versioned_and_digest_pinned() -> None:
assert "--scanners vuln" in scan
assert '-v "$IGNORE_FILE:$CONTAINER_IGNORE_FILE:ro"' in scan
assert '--ignorefile "$CONTAINER_IGNORE_FILE"' in scan
assert "--skip-files /usr/local/bin/gosu" in scan
assert "final filesystem replaces it with the audited setpriv shell wrapper" in scan
assert "geointel-container-vulnerabilities.json" in scan
+7 -1
View File
@@ -81,7 +81,13 @@ controls. The exception file has a mandatory review date; readiness and CI
fail automatically after it expires. New advisories are never auto-ignored.
The all-in-one image replaces the Go-based base-image `gosu` helper with a
small `setpriv` exec wrapper and upgrades packaged setuptools/wheel metadata;
these scanner findings are fixed rather than excepted.
the final runtime filesystem no longer exposes the vulnerable Go executable.
Because OCI layers are immutable, Trivy still records the shadowed Go binary
from the official Postgres base layer in the complete JSON report. The
release-policy pass skips only `/usr/local/bin/gosu` after the final image is
verified to contain the audited shell wrapper. This is not a vulnerability
exception: the raw evidence remains published and the runtime wrapper is
exercised during live release validation.
The container job builds a non-AI all-in-one image and uses digest-pinned
scanner images:
+4 -1
View File
@@ -39,7 +39,9 @@ docker run --rm \
"$TARGET_IMAGE"
# Release policy: fixed HIGH/CRITICAL findings block the build. Unfixed findings
# remain visible in the full report and must be reviewed before release.
# remain visible in the full report and must be reviewed before release. The
# postgres base image's Go gosu binary remains discoverable in a lower layer,
# but the final filesystem replaces it with the audited setpriv shell wrapper.
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$CACHE_DIR:/root/.cache/trivy" \
@@ -51,6 +53,7 @@ docker run --rm \
--skip-version-check \
--ignore-unfixed \
--ignorefile "$CONTAINER_IGNORE_FILE" \
--skip-files /usr/local/bin/gosu \
--severity HIGH,CRITICAL \
--exit-code 1 \
"$TARGET_IMAGE"