Repository navigation
security: pin Go toolchain to 1.27.3 for GO-2026-6809 (CVE-2026-111943) - #428
Merged
Merged
Conversation
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.
Background
crypto/x509.Certificate.Verifynow distrusts 8 compromised eMudhra/emSign intermediate CA certificates. The fix is a hardcoded SPKI-SHA256 denylist compiled into the stdlib — only binaries built with go1.26.10+ / go1.27.3+ contain the patch. Rebuilding with an old toolchain, updating system CA stores, or bumping dependency versions does NOT fix it.golang:1.23-alpine3.20. The go1.23 line is EOL (last release 1.23.12, no further patches will ever be issued), so a minor-version bump is mandatory — there is no patched 1.23 patch release.beta-hivemindandbeta-hivemindsync(Elastic Beanstalk, P1) runsteemit/hivemind:latestbuilt with go1.23 (unpatched). Note that theserver-*/indexer-*tags pushed on 2026-10-21 (after the 2026-10-19 patch release) are still 1.23 builds — freshly built but still unpatched, because the base image is on an EOL line.api.steemit.com, i.e. they perform certificate-chain verification and are exposed to MITM via certificates issued by the compromised intermediates.Changes (minimal diff)
DockerfileFROM golang:1.23-alpine3.20->FROM golang:1.27.3-alpine(runtime stagealpine:3.20untouched)Dockerfile.serverDockerfile.indexergo.modtoolchain go1.27.3; thego 1.23.0directive is unchanged (no language-level change; nogo mod tidy).github/workflows/check.ymlgo-version-file: go.modentries are backstopped by the newtoolchainline (GOTOOLCHAIN=auto downloads go1.27.3)Verification
Local build with the new
toolchainline (built from this branch):go build ./...also passes with go1.27.3 (1.23 -> 1.27 cross-minor compile check).Post-merge acceptance for the rebuilt images:
(Do not rely on
govulncheckfor acceptance.)Caveats
alpine3.20to whatever default Alpine ships withgolang:1.27.3-alpine; build-stageapkpackages (git,make) are expected to resolve, but this needs confirming on the first rebuild.beta-hivemind/beta-hivemindsyncis a separate, manual ops step (per deployment constraints, production changes are executed by the operator).Note
The working tree had an unrelated local uncommitted change (
docs/api-reference.md); it was protected viagit stashbefore branching and is restored after this PR — it is intentionally not part of this diff.