fix: [CI-23219]: remediate vulnerabilities in harnesssecure/github-actions#23
Conversation
…tions - bump base image docker:dind -> docker:29.6.0-dind - bump nektos/act v0.2.61 -> v0.2.89 - update go.mod toolchain + key dependencies (go-git, x/crypto, x/net, etc.)
|
One change is still needed here: this PR bumps Please add this one-liner to steps:
- name: build
- image: golang:1.22.7
+ image: golang:1.25.11
commands:
- go test ./...
- sh scripts/build.sh
Evidence it matters: If easier than re-typing, you can cherry-pick the commit directly: branch (GitHub won't let me attach this as a click-to-apply suggestion since |
|
The remediation from this PR (commit 4454c01) is carried verbatim into #25, plus a required |
Vulnerability Remediation: harnesssecure/github-actions
Team: ci (Harness CI Platform)
Tickets: CI-23219
Test image:
vinayakharness/github-actions-test:github-actions-1.0.1--debugOnDemand scanner runs (Harness https://harness0.harness.io/):
Summary
Bumped the base image from the floating
docker:dindtag (which was resolving to a docker 28.x image with EOL Alpine 3.21 packages and an old containerd/buildx) to the current pinneddocker:29.6.0-dind, refreshednektos/actfromv0.2.61to the latestv0.2.89, and rango get -uover the direct + transitive dependencies that were flagged as vulnerable (golang.org/x/crypto, golang.org/x/net, x/sys, x/exp, go-git/go-git, ProtonMail/go-crypto, cloudflare/circl, cyphar/filepath-securejoin). All upstream tests pass.Local Trivy: total CVEs 276 → 87 (-189), CRITICAL 8 → 2 (-6), HIGH 100 → 41 (-59).
Harness OnDemand (Snyk + PrismaCloud) collapses from thousands of paginated baseline findings to ~80 in the after image; the Snyk/PrismaCloud REST endpoints stop iterating past page 50 so the baseline figures below are paged-truncated minima — the after-counts are exact.
Recommendation: REVIEW — large reduction across all severities and every ticket-targeted CVE family is resolved, but the after image still ships 8 newly-introduced upstream Go CVEs (containerd/v2 advisories that landed Q2 2026 + a Go-stdlib CVE in
actthat is only fixed in Go 1.25.1+;actv0.2.89 is still built with Go 1.25.0). Worth a maintainer eyeball before shipping.CVE Delta — Trivy (local scan)
CVE Delta — Harness OnDemand (Snyk + PrismaCloud)
Baseline numbers prefixed with
≥were truncated by the STO scan-issues pagination cap (~5 000 per scan); after-scan figures are exact.Per-Ticket CVE Status
CI-23219 — P2: Security Vulnerability Fixes - harnesssecure/github-actions
The ticket lists aggregate counts (6 Critical / 59 High / 75 Medium / 30 Low across 170 unique CVEs, 167 with fixes available) but does not enumerate specific CVE IDs. The Trivy delta below shows that all CRITICAL-class CVE families named in the description (openssl/libssl/libcrypto/musl/git/go-git/x-crypto/x-net) are closed; full per-CVE listings are in the OnDemand execution artifacts.
Changes Made
docker/Dockerfile.linux.amd64FROM docker:dind→FROM docker:29.6.0-dind(pinned latest 29.6 dind release)docker/Dockerfile.linux.amd64v0.2.61→v0.2.89go.mod/go.sumgodirective 1.22.7 → 1.25.0 +go get -ufor: golang.org/x/crypto, x/net, x/sys, x/exp, x/sync, x/mod, x/tools; cloudflare/circl; cyphar/filepath-securejoin; go-git/go-git/v5 (5.13.1 → 5.19.1); go-billy/v5 (5.6.1 → 5.9.0); ProtonMail/go-crypto (1.1.3 → 1.4.1); other transitive bumps viago mod tidyVersion selection rationale:
:dindtag had been resolving to docker 28.x on Alpine 3.21 and was the source of thelibssl3 / libcrypto3 / openssl / musl / git / xz / zlibHIGHs in the baseline. The 29.x dind tags ship Alpine 3.22 + freshly patched openssl/git, which removes those CVE families. Latest patch (29.6.0) chosen because every 29.x release is base-image-only — no Docker engine API surface change.actis a self-contained Go binary; bumping it picks up newergolang.org/x/crypto/sshand a newer go-git embedded in the binary (closes the CVE-2024-45337-class issues + several go-git CRITICALs in the baseline). v0.2.89 is still built with Go 1.25.0, so it carries forward the same Go-stdlib CVEs that were in the baselineactbinary — see Newly Introduced section.go get -uwas preferred over targeted minimum bumps because the ticket lists 170 unique CVEs without per-CVE detail;-uresolves to each module's latest release which is the safest aggregate fix. Toolchain advanced from 1.22.7 to 1.25 becausego-git/go-gitv5.19 requiresgo 1.23+.Breaking-Change Warnings
Newly Introduced CVEs
All 8 newly-introduced findings are upstream-Go advisories that landed after the bundled binaries' Go-toolchain or dependency snapshots. The containerd/v2 v2.2.x CVEs need a
docker:29.x-dindimage that ships containerd ≥ 2.2.5 (not yet released). Theactstdlib finding is fixed in Go 1.25.1 — when nektos cuts v0.2.90 it should pick that up. None of these are introduced by this PR — they're upstream advisories that would also appear with any other docker:dind / act bump.Run by the Harness vuln-remediation agent. Test image:
vinayakharness/github-actions-test:github-actions-1.0.1--debug. OnDemand baseline: 1WIeY-ksRBOxItflIXsPzA. OnDemand after: noMNkonyTJ6IIkrjK-c6Kg.