The Go SSH library (golang.org/x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks if ClientConfig.HostKeyCallback is not set. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
References:- https://nvd.nist.gov/vuln/detail/CVE-2017-3204
- https://github.com/golang/go/issues/19767
- https://github.com/golang/crypto/commit/e4e2799dd7aab89f583e1d898300d96367750991
- https://go.dev/cl/340830
- https://go.dev/issue/19767
- https://go.googlesource.com/crypto/+/e4e2799dd7aab89f583e1d898300d96367750991
- https://godoc.org/golang.org/x/crypto/ssh
- https://pkg.go.dev/vuln/GO-2020-0013
- https://web.archive.org/web/20170423080311/https://www.securityfocus.com/bid/97481
- https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-3204
- https://bridge.grumpy-troll.org/2017/04/golang-ssh-security
- https://go.dev/cl/38701
- https://github.com/advisories/GHSA-xhjq-w7xm-p8qj