[security] Go 1.13.2 and Go 1.12.11 are released

812 views
Skip to first unread message

Katie Hockman

unread,
Oct 17, 2019, 2:49:35 PM10/17/19
to golang-nuts
Hi gophers,

We have just released Go 1.13.2 and Go 1.12.11 to address a recently reported security issue. We recommend that all affected users update to one of these releases (if you’re not sure which, choose Go 1.13.2).

Invalid DSA public keys can cause a panic in dsa.Verify. In particular, using crypto/x509.Verify on a crafted X.509 certificate chain can lead to a panic, even if the certificates don’t chain to a trusted root. The chain can be delivered via a crypto/tls connection to a client, or to a server that accepts and verifies client certificates. net/http clients can be made to crash by an HTTPS server, while net/http servers that accept client certificates will recover the panic and are unaffected.

Moreover, an application might crash invoking crypto/x509.(*CertificateRequest) CheckSignature on an X.509 certificate request, parsing a golang.org/x/crypto/openpgp Entity, or during a golang.org/x/crypto/otr conversation. Finally, a golang.org/x/crypto/ssh client can panic due to a malformed host key, while a server could panic if either PublicKeyCallback accepts a malformed public key, or if IsUserAuthority accepts a certificate  with a malformed public key.

The issue is CVE-2019-17596 and Go issue golang.org/issue/34960.

Thanks to Daniel Mandragona for discovering and reporting this issue. We’d also like to thank regilero for a previous disclosure of CVE-2019-16276.

The Go 1.13.2 release also includes a fix to the compiler that prevents improper access to negative slice indexes in rare cases. Affected code, in which the compiler can prove that the index is zero or negative, would have resulted in a panic in Go 1.12.11, but could have led to arbitrary memory read and writes in Go 1.13 and Go 1.13.1. This is Go issue golang.org/issue/34802.

Downloads are available at https://golang.org/dl for all supported platforms.

Cheers,
🐕 Katie on behalf of the Go team

Peter Kleiweg

unread,
Oct 17, 2019, 3:10:01 PM10/17/19
to golang-nuts
I did a git pull. There is a tag go1.13.1, but no tag go1.13.2. Also, no tag go1.12.11.

Anthony Martin

unread,
Oct 18, 2019, 7:59:16 PM10/18/19
to Katie Hockman, golang-nuts
Katie Hockman <ka...@golang.org> once said:
> The Go 1.13.2 release also includes a fix to the compiler that prevents
> improper access to negative slice indexes in rare cases. Affected code, in
> which the compiler can prove that the index is zero or negative, would have
> resulted in a panic in Go 1.12.11, but could have led to arbitrary memory
> read and writes in Go 1.13 and Go 1.13.1. This is Go issue
> golang.org/issue/34802.

Well that's not good. Maybe next time you should lead with the arbitrary
memory r/w instead of the comparatively minor nil-deref panic. I almost
missed it while skimming the end.

Cheers,
Anthony

Ian Lance Taylor

unread,
Oct 19, 2019, 5:33:29 PM10/19/19
to Anthony Martin, Katie Hockman, golang-nuts
It's actually not clear whether that (relatively) arbitrary memory
read can ever occur based on user data. You can write a program to
cause it, but it can only happen if the compiler can (incorrectly)
prove certain conditions, and that generally can't happen based on
data that is not known at compile time. But we weren't completely
sure, so we decided to incorporate the fix into the security release.

Given that, I think the announcement had the correct priority order
for security problems.

Ian
Reply all
Reply to author
Forward
0 new messages