Skip to content
QuenchWorks

go

Runtime · Language runtime · standard · v1.26.5

D 88nonrootcosign signedSPDX SBOMSLSA provenanceamd64 · arm64

Hardened Go toolchain for compiling binaries in a build stage; pair the output with the static base for the runtime. Latest 3 stable lines (1.24/1.25/1.26).

Signed
cosign keyless
SBOM
SPDX, on digest
Provenance
SLSA build
Architectures
amd64, arm64
Runs as
nonroot (uid 1001)
Image size
59.1 MB
Last rebuilt
2026-07-08

Security report (Trivy)

D· 0/10088 fixable · rebuild clears them

Vulnerability detail

go 1.26.5 · 16 CVE
CVESeverityPackageInstalledFixed inTitle
CVE-2026-39821HIGHstdlibv1.26.51.25.13, 1.26.6, 1.27.0-rc.3golang.org/x/net/idna: golang: net/http: golang.org/x/net/idna: Privilege escalation via incorrect Punycode label processing
CVE-2026-39821HIGHstdlib1.26.51.25.13, 1.26.6, 1.27.0-rc.3golang.org/x/net/idna: golang: net/http: golang.org/x/net/idna: Privilege escalation via incorrect Punycode label processing
CVE-2026-46600HIGHstdlibv1.26.51.26.6, 1.27.0-rc.3golang.org/x/net/dns/dnsmessage: golang.org/x/net/dns/dnsmessage: Denial of Service via invalid DNS record parsing
CVE-2026-46600HIGHstdlib1.26.51.26.6, 1.27.0-rc.3golang.org/x/net/dns/dnsmessage: golang.org/x/net/dns/dnsmessage: Denial of Service via invalid DNS record parsing
CVE-2026-33818UNKNOWNstdlibv1.26.51.25.13, 1.26.6, 1.27.0-rc.3Enforce a recursion limit in Unmarshal to prevent stack exhaustion whe ...
CVE-2026-33818UNKNOWNstdlib1.26.51.25.13, 1.26.6, 1.27.0-rc.3Enforce a recursion limit in Unmarshal to prevent stack exhaustion whe ...
CVE-2026-56853UNKNOWNstdlibv1.26.51.25.13, 1.26.6, 1.27.0-rc.3When a server is configured to support unencrypted HTTP/2, it reads a ...
CVE-2026-56853UNKNOWNstdlib1.26.51.25.13, 1.26.6, 1.27.0-rc.3When a server is configured to support unencrypted HTTP/2, it reads a ...
CVE-2026-56858UNKNOWNstdlibv1.26.51.25.13, 1.26.6, 1.27.0-rc.3Previously, pathological inputs could close an unescaped '/' early, al ...
CVE-2026-56858UNKNOWNstdlib1.26.51.25.13, 1.26.6, 1.27.0-rc.3Previously, pathological inputs could close an unescaped '/' early, al ...
CVE-2026-56859UNKNOWNstdlibv1.26.51.25.13, 1.26.6, 1.27.0-rc.3Previously, DecodeElement would reset the depth counter causing it to ...
CVE-2026-56859UNKNOWNstdlib1.26.51.25.13, 1.26.6, 1.27.0-rc.3Previously, DecodeElement would reset the depth counter causing it to ...
CVE-2026-56860UNKNOWNstdlibv1.26.51.25.13, 1.26.6, 1.27.0-rc.3Previously, resolving relative paths containing parent directory ('..' ...
CVE-2026-56860UNKNOWNstdlib1.26.51.25.13, 1.26.6, 1.27.0-rc.3Previously, resolving relative paths containing parent directory ('..' ...
CVE-2026-56862UNKNOWNstdlibv1.26.51.25.13, 1.26.6, 1.27.0-rc.3Handshake messages, such as KeyUpdate, are always considered as state- ...
CVE-2026-56862UNKNOWNstdlib1.26.51.25.13, 1.26.6, 1.27.0-rc.3Handshake messages, such as KeyUpdate, are always considered as state- ...
0
Critical
22
High
0
Medium
0
Low
66
Unknown

Security report (Trivy) · go 1.26.5

Published versions

1 tag

Each tag is a multi-arch index (amd64 + arm64) pinned by digest. Tagged by version, never :latest.

VersionSizePublishedDigest
1.26.5latest59.1 MB2026-07-08sha256:d79e890ef340…

Use it as a base image

Reference it in the FROM line of your Dockerfile. Nonroot, read-only root filesystem, built for amd64 and arm64.

FROM ghcr.io/quenchworks/images/go:1.26.5

Or pull it directly

docker pull ghcr.io/quenchworks/images/go:1.26.5
Version line
1.26.5
Latest line
1.26.5
Architectures
amd64, arm64
Runs as
nonroot (uid 1001)
Root filesystem
read-only
License
BSD-3-Clause

Verify the supply chain

This image is cosign-signed and carries an SPDX SBOM and a SLSA build-provenance attestation on the same digest. Check all three before you build on it:

# 1. signature — built and signed by QuenchWorks CI
cosign verify ghcr.io/quenchworks/images/go:1.26.5 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

# 2. SLSA build provenance — which workflow built it, from what
cosign verify-attestation --type https://slsa.dev/provenance/v1 ghcr.io/quenchworks/images/go:1.26.5 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

# 3. SPDX SBOM — the package inventory
cosign verify-attestation --type https://spdx.dev/Document/v2.3 ghcr.io/quenchworks/images/go:1.26.5 \
  --certificate-identity-regexp 'https://github.com/quenchworks/.+' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

See the SBOM & provenance guide for reading the SBOM and using these checks in CI.

Best-practice Dockerfile for 1.26.5

The classic two-stage Go build: compile a fully static binary with CGO disabled on the go image, then copy that one file onto the tiny static base. No toolchain, no shell, no package manager in the final image.

ghcr.io/quenchworks/images/go:1.26.559.1 MBrebuilt 37 days ago
# Build stage: compile a fully static binary.
FROM ghcr.io/quenchworks/images/go:1.26.5 AS build
USER root
WORKDIR /src
# CGO off makes the binary static; caches go to /tmp for the read-only rootfs.
ENV CGO_ENABLED=0 \
GOOS=linux \
GOCACHE=/tmp/gocache \
GOMODCACHE=/tmp/gomodcache
COPY go.mod go.sum ./
RUN ["go", "mod", "download"]
COPY . .
RUN ["go", "build", "-trimpath", "-ldflags=-s -w", "-o", "/out/app", "./cmd/app"]
# Runtime stage: just the binary on the tiny static base, nonroot.
FROM ghcr.io/quenchworks/images/static
COPY --from=build /out/app /app
USER 1001
EXPOSE 8080
ENTRYPOINT ["/app"]

This Dockerfile is pinned to the 1.26.5 line. For the line-by-line walkthrough and ecosystem variants (npm/Yarn, pip/uv/Poetry, Maven/Gradle), see the Build a Go or Rust binaryguide.

Upstream project: https://github.com/golang/go