CVE-2017-3204
golang.org/x/crypto/ssh Man-in-the-Middle attack
The Go SSH library (x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
8.1
The Go SSH library (x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
- Record
CVE-2017-3204- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 6.8 Medium
AV:N/AC:M/Au:N/C:P/I:P/A:P - Weakness
- CWE-310
- Updated
- 2026-11-02
CVE List No score
The Go SSH library (x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
- Record
CVE-2017-3204- Weakness
- CWE-310
- Updated
- 2026-11-02
EUVDEUVD-2023-0819 No score
The Go SSH library (x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
- Record
EUVD-2023-0819- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-xhjq-w7xm-p8qj
8.1
golang.org/x/crypto/ssh Man-in-the-Middle attack
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.
- Record
GHSA-xhjq-w7xm-p8qj- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSV
8.1
The Go SSH library (x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
- Record
CVE-2017-3204- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2017-3204
8.1
The Go SSH library (x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
- Record
DEBIAN-CVE-2017-3204- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-xhjq-w7xm-p8qj
8.1
golang.org/x/crypto/ssh Man-in-the-Middle attack
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.
- Record
GHSA-xhjq-w7xm-p8qj- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2017-3204
8.1
The Go SSH library (x/crypto/ssh) by default does not verify host keys, facilitating man-in-the-middle attacks. Default behavior changed in commit e4e2799 to require explicitly registering a hostkey verification mechanism.
- Record
UBUNTU-CVE-2017-3204- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGO-2020-0013 No score
Man-in-the-middle attack in golang.org/x/crypto/ssh
By default host key verification is disabled which allows for man-in-the-middle attacks against SSH clients if ClientConfig.HostKeyCallback is not set.
- Record
GO-2020-0013- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
golang.org/x/cryptoGo |
before 0.0.0-20170330155735-e4e2799dd7aa | 0.0.0-20170330155735-e4e2799dd7aa |
golang-go.cryptoDebian:12 |
before 1:0.0~git20170407.0.55a552f+REALLY.0.0~git20161012.0.5f31782-1 | 1:0.0~git20170407.0.55a552f+REALLY.0.0~git20161012.0.5f31782-1 |
golang-go.cryptoDebian:13 |
before 1:0.0~git20170407.0.55a552f+REALLY.0.0~git20161012.0.5f31782-1 | 1:0.0~git20170407.0.55a552f+REALLY.0.0~git20161012.0.5f31782-1 |
golang-go.cryptoDebian:14 |
before 1:0.0~git20170407.0.55a552f+REALLY.0.0~git20161012.0.5f31782-1 | 1:0.0~git20170407.0.55a552f+REALLY.0.0~git20161012.0.5f31782-1 |
golang-go.cryptoUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1:0.0~git20150608-11:0.0~git20151201.0.7b85b09-21:0.0~git20151201.0.7b85b09-2ubuntu0.1~esm11:0.0~git20151201.0.7b85b09-2ubuntu0.1~esm21:0.0~git20151201.0.7b85b09-2ubuntu0.1~esm3 |
None known |
snapdUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.91.9.1.11.9.22.02.0.1 Show 45 moreShow less2.0.22.0.32.0.52.0.82.0.92.0.102.11+0.16.042.12+0.16.042.132.14.2~16.042.15.2ubuntu12.16ubuntu32.17.1ubuntu12.20.1ubuntu12.212.22.22.22.32.22.62.23.12.24.12.252.26.102.27.52.28.52.29.4.22.32.3.22.32.92.33.1ubuntu22.34.22.34.2ubuntu0.12.37.42.37.4ubuntu0.12.382.39.22.39.2ubuntu0.22.402.42.12.45.12.45.1ubuntu0.22.46.12.47.12.482.48.32.54.3+16.04~esm22.54.3+16.04.0ubuntu0.1~esm3 |
None known |
snapdUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 2.28.5+17.102.29.4.1+18.042.29.4.2+18.042.31.1+18.042.32+18.04~pre5 Show 37 moreShow less2.32+18.04~pre62.32+18.042.32.3.2+18.042.32.5+18.042.32.8+18.042.32.9+18.042.33.1+18.04ubuntu22.34.2+18.042.34.2+18.04.12.37.1+18.042.37.1.1+18.042.37.4+18.042.37.4+18.04.12.38+18.042.39.2+18.042.40+18.042.42.1+18.042.45.1+18.042.45.1+18.04.22.46.1+18.042.47.1+18.042.48+18.042.48.3+18.042.49.2+18.042.51.1+18.042.54.2+18.04ubuntu12.54.3+18.042.54.3+18.04.2ubuntu0.12.54.3+18.04.2ubuntu0.22.55.5+18.042.57.5+18.042.57.5+18.04ubuntu0.12.58+18.042.58+18.04.12.61.4ubuntu0.18.04.1+esm12.61.4ubuntu0.18.04.1+esm22.61.4ubuntu0.18.04.1+esm4 |
None known |
snapdUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 2.41+19.10.12.42.1+20.042.43.3+git1.8109f82.44~pre1+20.042.44+20.04 Show 30 moreShow less2.44.2+20.042.44.3+20.042.45.1+20.042.45.1+20.04.22.46.1+20.042.47.1+20.042.48+20.042.48.3+20.042.49.2+20.042.51.1+20.04ubuntu22.54.2+20.04ubuntu22.54.3+20.042.54.3+20.04.12.54.3+20.04.1ubuntu0.12.54.3+20.04.1ubuntu0.22.54.3+20.04.1ubuntu0.32.55.5+20.042.57.5+20.042.57.5+20.04ubuntu0.12.58+20.042.58+20.04.12.61.3+20.042.62+20.042.63+20.042.63+20.04ubuntu0.12.65.3+20.042.66.1+20.042.67.1+20.042.67.1+20.04ubuntu1~esm12.67.1+20.04ubuntu1~esm3 |
None known |
snapdUbuntu:22.04:LTS |
All versions, plus listed versions 2.53+21.10ubuntu12.54.2+22.04ubuntu12.54.2+22.04ubuntu22.54.2+22.04ubuntu32.54.3+git19.g868fc21+22.04 Show 31 moreShow less2.54.3+git26.g360067e+22.042.55.2+22.042.55.2+22.04.12.55.3+22.042.55.3+22.04ubuntu12.55.5+22.042.56.2+22.04ubuntu12.57.4+22.042.57.5+22.042.57.5+22.04ubuntu0.12.58+22.042.58+22.04.12.61.3+22.042.62+22.042.63+22.042.63+22.04ubuntu0.12.65.3+22.042.66.1+22.042.67.1+22.042.68.5+ubuntu22.04.12.71+ubuntu22.042.72+ubuntu22.042.73+ubuntu22.042.73+ubuntu22.04.12.74.1+ubuntu22.04.42.75.2+ubuntu22.042.76+ubuntu22.042.76+ubuntu22.04.12.76.3+ubuntu22.042.76.3+ubuntu22.04.12.77.1+ubuntu22.04.1 |
None known |
snapdUbuntu:24.04:LTS |
All versions, plus listed versions 2.60.4+23.102.61.3+24.042.62+24.04build12.63+24.042.63+24.04ubuntu0.1 Show 16 moreShow less2.63.1+24.042.65.3+24.042.66.1+24.042.67.1+24.042.68.5+ubuntu24.04.12.71+ubuntu24.042.72+ubuntu24.042.73+ubuntu24.042.73+ubuntu24.04.12.73+ubuntu24.04.22.74.1+ubuntu24.04.42.75.2+ubuntu24.042.76+ubuntu24.042.76+ubuntu24.04.12.76.3+ubuntu24.042.77.1+ubuntu24.04 |
None known |
snapdUbuntu:25.10 |
All versions, plus listed versions 2.67.1+25.042.68.5+ubuntu25.10.22.71+ubuntu25.102.71.1+ubuntu25.10.12.72+ubuntu25.10.2 Show 4 moreShow less2.73+ubuntu25.102.73+ubuntu25.10.12.74.1+ubuntu25.10.42.75.2+ubuntu25.10 |
None known |
snapdUbuntu:26.10 |
All versions, plus listed versions 2.74.1+ubuntu26.04.42.76+ubuntu26.10.12.76+ubuntu26.10.22.76.3+ubuntu26.102.77.1+ubuntu26.10.1 |
None known |
snapdUbuntu:26.04:LTS |
All versions, plus listed versions 2.71.1+ubuntu25.10.12.72+ubuntu26.04.12.73+ubuntu26.04.12.74+ubuntu26.042.74.1+ubuntu26.04 Show 7 moreShow less2.74.1+ubuntu26.04.32.74.1+ubuntu26.04.42.75.2+ubuntu26.04.22.76+ubuntu26.04.22.76+ubuntu26.04.32.76.3+ubuntu26.042.77.1+ubuntu26.04.2 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2017-3204 is a high vulnerability (CVSS 8.1) in Go Ssh Library, published April 4, 2017. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 3.16%, the 88th percentile. Fixed in golang.org/x/crypto 0.0.0-20170330155735-e4e2799dd7aa.
References
godoc.org/golang.org/x/crypto/ssh
github.com/golang/go/issues/19767
bridge.grumpy-troll.org/2017/04/golang-ssh-security
github.com/golang/crypto/commit/e4e2799dd7aab89f583e1d898300d96367750991
securityfocus.com/bid/97481
nvd.nist.gov/vuln/detail/CVE-2017-3204
Show 11 moreShow less
go.dev/cl/340830
go.dev/issue/19767
go.googlesource.com/crypto/+/e4e2799dd7aab89f583e1d898300d96367750991
pkg.go.dev/vuln/GO-2020-0013
web.archive.org/web/20170423080311/https://www.securityfocus.com/bid/97481
web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-3204
go.dev/cl/38701
github.com/advisories/GHSA-xhjq-w7xm-p8qj
security-tracker.debian.org/tracker/CVE-2017-3204
ubuntu.com/security/CVE-2017-3204
cve.org/CVERecord?id=CVE-2017-3204
Left out here: 6 versions. The JSON record has them.