[安全] Golang 1.13.7 和 1.12.16 版本正式发布

[安全] Golang 1.13.7 和 1.12.16 版本正式发布 大家好,

我们刚刚发布了 Go 1.13.7 和 Go 1.12.16 版本,以解决最近报告的安全问题。我们建议所有用户更新到这些版本之一(如果您不确定选择哪个,请选择 Go 1.13.7)。

  • Windows 10 上的 X.509 证书验证绕过

Windows 的一个漏洞允许攻击者在系统根存储区启用时伪造有效的证书链。这些版本包含了对 Go 应用程序的缓解措施,但强烈建议受影响的用户安装 Windows 安全更新以保护其系统。 此问题是 CVE-2020-0601,Go 问题跟踪链接为 golang.org/issue/36834

在 32 位架构上,对 crypto/x509 或 golang.org/x/crypto/cryptobyte 的 ASN.1 解析函数输入格式错误的数据可能导致 panic。 格式错误的证书可以通过 crypto/tls 连接传递给客户端,或传递给接受客户端证书的服务器。net/http 客户端可能会因 HTTPS 服务器而崩溃,而接受客户端证书的 net/http 服务器将恢复 panic 且不受影响。 感谢 Project Wycheproof 提供了导致发现此问题的测试用例。 此问题是 CVE-2020-7919,Go 问题跟踪链接为 golang.org/issue/36837。 此问题也在 golang.org/x/crypto/cryptobyte 的 v0.0.0-20200124225646-8b5121be2f68 版本中得到修复。

即将发布的 Go 1.14rc1 版本也将包含上述修复。

所有支持平台的下载包可在 https://golang.org/dl 获取。

谢谢,

🐕

代表 Go 团队的 Katie 和 Dmitri


更多关于[安全] Golang 1.13.7 和 1.12.16 版本正式发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于[安全] Golang 1.13.7 和 1.12.16 版本正式发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Go 1.13.7 和 1.12.16 版本修复了两个关键安全问题,建议立即升级。

1. Windows 10 X.509 证书验证绕过 (CVE-2020-0601) Go 在 Windows 系统上增加了对 CVE-2020-0601 的缓解措施。虽然 Go 应用已受保护,但仍需安装 Windows 安全更新。示例代码展示如何验证证书:

package main

import (
    "crypto/tls"
    "net/http"
)

func main() {
    tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: false}, // 必须保持为 false
    }
    client := &http.Client{Transport: tr}
    _, err := client.Get("https://example.com")
    if err != nil {
        // 处理错误
    }
}

2. crypto/x509 解析 panic (CVE-2020-7919) 32位系统上解析恶意ASN.1数据可能导致panic。修复后,解析函数会安全处理异常数据:

package main

import (
    "crypto/x509"
    "encoding/pem"
    "fmt"
)

func parseCertificate(data []byte) {
    block, _ := pem.Decode(data)
    if block == nil {
        return
    }
    cert, err := x509.ParseCertificate(block.Bytes)
    if err != nil {
        fmt.Println("安全解析失败:", err)
        return
    }
    // 使用 cert
}

对于 golang.org/x/crypto/cryptobyte,升级到修复版本:

go get -u golang.org/x/crypto/cryptobyte@v0.0.0-20200124225646-8b5121be2f68

升级命令:

# 升级到 Go 1.13.7
go get golang.org/dl/go1.13.7
go1.13.7 download

# 验证版本
go1.13.7 version

这些修复也包含在 Go 1.14rc1 中。所有用户应立即升级到受保护版本。

回到顶部