Protect.Computer
NEWS

Go Emergency Update Blocks Eight eMudhra CA Keys

· 2 min read · Network safety
Go Emergency Update Blocks Eight eMudhra CA Keys

The Go team released Go 1.27.3 and Go 1.26.10 on October 20 with an urgent change: Go’s certificate verifier now rejects any certificate chain that passes through one of eight intermediate certificate authority keys. The team says the keys belong to one certificate authority it has not named, and that it is blocking them because of “specific security concerns around their operation.” It shipped the fix on its URGENT track, which is reserved for its most serious issues, and recommends upgrading immediately.

The Hacker News reports that a commenter on the Go issue matched all eight key hashes to intermediates issued by eMudhra: six TLS intermediates under the emSign Root TLS CA - G3 and two code-signing intermediates under emSign Root CS CA - G3. The Hacker News did not independently verify those hashes. Two days earlier, on October 17, Mozilla added six eMudhra emSign intermediates to OneCRL, the list Firefox uses to block certificates, but the Mozilla bug behind that is closed to the public. Another commenter on the Go issue pointed to CCADB entries marked as CA compromise on October 18 and 19. Nobody has publicly explained what happened at the certificate authority, and whether Chrome, Apple or Microsoft have taken similar action is not established.

The filter hashes each certificate’s public key, so a cross-signed copy of one of the eight keys is caught too. Per The Hacker News, it applies in Go’s own verifier and in the macOS and Windows paths that hand verification to the operating system, and a blocked chain fails with x509: no valid chains built. The change has no setting to switch it off, and given the structure of the code it appears to apply even when a program supplies its own trusted roots, so a private deployment that intentionally trusts one of the eight keys would also fail. The Go team has not said whether that is intended. Because Go does no revocation checking and does not read browser block lists, programs keep the old behavior until they are rebuilt on the new release.

How to check if you’re affected

Affected products are Go programs that verify TLS or code-signing certificates and were built with a Go version older than 1.27.3 (or 1.26.10 on the 1.26 line). Those binaries still trust the eight keys; programs rebuilt on the new releases will refuse chains through them.

  • Check the toolchain version used to build your services with go version and, for a compiled binary, go version -m <binary>.
  • After rebuilding on Go 1.27.3 or 1.26.10, watch for new x509: no valid chains built errors against services whose certificates were issued by eMudhra (emSign). That would be the filter working as designed, so check which CA issued the certificate before assuming a bug.
  • If you rely on an internal or private deployment that trusts one of these keys, test the rebuilt binary before rolling it out.

Sources

Related reading