mrkeyoor.com_
Tue 20 Oct 08:32 UTC
Tech3 min read

Go Security Update Blocks Chains With Distrusted Certificate Keys

Go 1.27.3 and 1.26.10 filter distrusted certificate keys during verification. Operators can inspect deployed binaries to find which toolchain built them.

Go released versions 1.27.3 and 1.26.10 on October 19, 2026, with a security change that rejects certificate chains containing specified distrusted keys. The official release history lists both as fixes to crypto/x509, the standard library package that verifies certificates. Applications using an affected chain can lose a previously accepted connection after an upgrade.

The Go team recommends upgrading immediately in issue 82345, tracked as CVE-2026-111943. It cites security concerns involving a set of intermediate certificates, which link a site's certificate to a trusted authority. The announcement doesn't explain the underlying incident or establish whether anyone exploited it.

The filter follows the public key

The Go 1.27 branch patch contains eight SHA-256 hashes of Subject Public Key Info, or SPKI. That certificate field identifies a public key and its algorithm. During verification, Go hashes that field for certificates in a chain and checks it against the list.

A match removes the chain from the results returned by Verify. Because the check uses SPKI, changing a certificate's serial number or validity dates while keeping the same public-key information won't evade it. That's a consequence of the hash comparison in the patch, rather than a claim about an attack observed in the wild.

The same diff also changes the macOS and Windows verification paths. On Windows, it filters returned chains and reports an error if none remain. On macOS, a matching chain triggers a certificate-invalid error. This is source inspection; we haven't run a certificate-verification reproduction on those platforms.

Check the deployed binary's build version

For operators, the distinction is between the toolchain installed on a machine and the one used to build an application. The Go command documentation says a filename argument makes go version report that binary's build version. Without a filename, it reports its own version.

Replace the path below with your application's executable:

go version /path/to/your-service

Use that inventory to identify binaries that need a rebuild with a fixed toolchain, or an updated build from their supplier. The release history identifies 1.27.3 and 1.26.10 as the patched releases for the two supported branches.

Watch Go's issue for a fuller incident explanation. Its current statement supports an urgent upgrade, but leaves the cause and extent of the certificate-authority problem unresolved. In the meantime, operators whose connections fail after rebuilding have a specific check to make: whether the rejected chain contains one of the keys listed in the patch.

We reviewed this

  1. go — our honest review

Sources

  1. Go release history: Go 1.27.3 and Go 1.26.10
  2. Go issue 82345: certificate-authority security mitigation
  3. Go 1.27 branch patch: distrust a handful of intermediates
  4. Go command documentation: print Go version