CVE-2018-16873
HighRemote command execution via "go get" with "-u" flag in cmd/go
Published Aug 4, 2022 · Updated Jul 8, 2026 · Also known as GO-2022-0189, SUSE-SU-2018:4297-1, SUSE-SU-2019:0048-1, SUSE-SU-2019:0048-2, SUSE-SU-2019:0286-1, SUSE-SU-2019:0495-1, SUSE-SU-2019:1234-1, SUSE-SU-2019:1234-2, SUSE-SU-2019:1264-1, SUSE-SU-2021:1458-1, UBUNTU-CVE-2018-16873
Key Facts
Patch immediately- CVE-2018-16873 is a high-severity vulnerability (CVSS 8.1 v3.1) affecting Go (Golang), Backports Sle (Opensuse), Debian Linux and 22 more products.
- It is not listed in any known-exploited vulnerabilities catalog. No public exploit code is known.
- EPSS estimates a 66% probability of exploitation in the next 30 days.
- Fixed versions are available, including containerd 1.1.2-5.3.4, containerd 1.1.2-5.6.1, containerd 1.1.2-lp150.4.3.1.
- Brandefense priority: patch immediately, because it is very likely to be exploited soon.
CVSS v3.1
8.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
EPSS (30-day exploit likelihood)
66%
Higher than 99.2% of all scored CVEs
Exploited in the wild
No known
Not in a known-exploited catalog
Public exploit code
None known
Get the full CVE-2018-16873 brief as a PDF
Every affected product and fixed release, exploitation status and a first 24 hours response checklist, emailed within minutes.
Description
In Go before 1.10.6 and 1.11.x before 1.11.3, the "go get" command is vulnerable to remote code execution when executed with the -u flag and the import path of a malicious Go package, or a package that imports it directly or indirectly. Specifically, it is only vulnerable in GOPATH mode, but not in module mode (the distinction is documented at https://golang.org/cmd/go/#hdr-Module_aware_go_get). Using custom domains, it's possible to arrange things so that a Git repository is cloned to a folder named ".git" by using a vanity import path that ends with "/.git". If the Git repository root contains a "HEAD" file, a "config" file, an "objects" directory, a "refs" directory, with some work to ensure the proper ordering of operations, "go get -u" can be tricked into considering the parent directory as a repository root, and running Git commands on it. That will use the "config" file in the original Git repository root for its configuration, and if that config file contains malicious commands, they will execute on the system running "go get -u".
Affected Products
259 affected entries in total| Product | Affected versions | Fixed in |
|---|---|---|
| GoGolang | See advisory | 1.10.6 |
| Backports SleOpensuse | 15.0 | n/a |
| Debian LinuxDebian | 9.0 | n/a |
| LeapOpensuse | 15.0, 15.1, 42.3 | n/a |
| Linux Enterprise ServerSuse | 12 | n/a |
Patched Releases
containerd
1.1.2-5.3.4, 1.1.2-5.6.1, 1.1.2-lp150.4.3.1, 1.1.2-lp150.4.6.1, 1.2.2-16.14.2, 1.2.2-22.1, 1.2.2-5.9.1, 1.2.2-lp150.4.10.1, 1.2.5-16.17.2, 1.2.5-5.13.1, 1.2.5-lp150.4.14.3, 1.2.5-lp151.2.3.1, 1.4.4-16.38.1, 1.4.8-2.2
containerd-ctr
1.1.2-lp150.4.3.1, 1.1.2-lp150.4.6.1, 1.2.2-22.1, 1.2.2-lp150.4.10.1, 1.2.5-lp150.4.14.3, 1.2.5-lp151.2.3.1, 1.4.8-2.2
containerd-kubic
1.1.2-lp150.4.3.1, 1.2.2-22.1
containerd-kubic-ctr
1.1.2-lp150.4.3.1, 1.2.2-22.1
containerd-kubic-test
1.1.2-lp150.4.3.1, 1.2.2-22.1
containerd-test
1.1.2-lp150.4.3.1, 1.1.2-lp150.4.6.1, 1.2.2-22.1, 1.2.2-lp150.4.10.1, 1.2.5-lp150.4.14.3, 1.2.5-lp151.2.3.1
cri-o
1.17.1-lp151.2.2, 1.22.0-1.2
cri-o-kubeadm-criconfig
1.17.1-lp151.2.2, 1.22.0-1.2
cri-tools
1.18.0-lp151.2.1
docker
18.06.1_ce-6.8.2, 18.06.1_ce-lp150.5.6.1, 18.09.0_ce-6.11.2, 18.09.0_ce-lp150.5.9.1, 18.09.1_ce-54.1, 18.09.1_ce-6.14.1, 18.09.1_ce-98.34.2, 18.09.1_ce-lp150.5.13.1, 18.09.6_ce-6.17.1, 18.09.6_ce-98.37.1, 18.09.6_ce-lp150.5.17.2, 18.09.6_ce-lp151.2.3.1, 20.10.6_ce-2.1, 20.10.6_ce-98.66.1
docker-bash-completion
18.06.1_ce-6.8.2, 18.06.1_ce-lp150.5.6.1, 18.09.0_ce-6.11.2, 18.09.0_ce-lp150.5.9.1, 18.09.1_ce-54.1, 18.09.1_ce-6.14.1, 18.09.1_ce-lp150.5.13.1, 18.09.6_ce-6.17.1, 18.09.6_ce-lp150.5.17.2, 18.09.6_ce-lp151.2.3.1, 20.10.6_ce-2.1
docker-fish-completion
20.10.6_ce-2.1
docker-kubic
18.06.1_ce-lp150.5.6.1, 18.09.1_ce-54.1
docker-kubic-bash-completion
18.06.1_ce-lp150.5.6.1, 18.09.1_ce-54.1
docker-kubic-kubeadm-criconfig
18.09.1_ce-54.1
docker-kubic-test
18.06.1_ce-lp150.5.6.1, 18.09.1_ce-54.1
docker-kubic-zsh-completion
18.06.1_ce-lp150.5.6.1, 18.09.1_ce-54.1
docker-libnetwork
0.7.0.1+gitr2664_3ac297bc7fd0-4.3.5, 0.7.0.1+gitr2664_3ac297bc7fd0-lp150.3.3.1, 0.7.0.1+gitr2704_6da50d197830-4.6.1, 0.7.0.1+gitr2704_6da50d197830-lp150.3.6.1, 0.7.0.1+gitr2711_2cfbf9b1f981-11.1, 0.7.0.1+gitr2711_2cfbf9b1f981-16.2, 0.7.0.1+gitr2711_2cfbf9b1f981-4.9.1, 0.7.0.1+gitr2711_2cfbf9b1f981-lp150.3.10.1, 0.7.0.1+gitr2726_872f0a83c98a-19.1, 0.7.0.1+gitr2726_872f0a83c98a-4.12.1, 0.7.0.1+gitr2726_872f0a83c98a-lp150.3.14.1, 0.7.0.1+gitr2726_872f0a83c98a-lp151.2.3.1
docker-libnetwork-kubic
0.7.0.1+gitr2664_3ac297bc7fd0-lp150.3.3.1, 0.7.0.1+gitr2711_2cfbf9b1f981-11.1
docker-runc
1.0.0rc5+gitr3562_69663f0bd4b6-6.3.4, 1.0.0rc5+gitr3562_69663f0bd4b6-6.6.1, 1.0.0rc5+gitr3562_69663f0bd4b6-lp150.5.3.1, 1.0.0rc5+gitr3562_69663f0bd4b6-lp150.5.6.1, 1.0.0rc6+gitr3748_96ec2177ae84-1.17.2, 1.0.0rc6+gitr3748_96ec2177ae84-11.1, 1.0.0rc6+gitr3748_96ec2177ae84-6.12.1, 1.0.0rc6+gitr3748_96ec2177ae84-lp150.5.14.1, 1.0.0rc6+gitr3804_2b18fe1d885e-1.23.1, 1.0.0rc6+gitr3804_2b18fe1d885e-6.18.1, 1.0.0rc6+gitr3804_2b18fe1d885e-lp150.5.21.2, 1.0.0rc6+gitr3804_2b18fe1d885e-lp151.3.3.1
docker-runc-kubic
1.0.0rc5+gitr3562_69663f0bd4b6-lp150.5.3.1, 1.0.0rc6+gitr3748_96ec2177ae84-11.1
docker-runc-kubic-test
1.0.0rc5+gitr3562_69663f0bd4b6-lp150.5.3.1, 1.0.0rc6+gitr3748_96ec2177ae84-11.1
docker-runc-test
1.0.0rc5+gitr3562_69663f0bd4b6-lp150.5.3.1, 1.0.0rc5+gitr3562_69663f0bd4b6-lp150.5.6.1, 1.0.0rc6+gitr3748_96ec2177ae84-11.1, 1.0.0rc6+gitr3748_96ec2177ae84-lp150.5.14.1, 1.0.0rc6+gitr3804_2b18fe1d885e-lp150.5.21.2, 1.0.0rc6+gitr3804_2b18fe1d885e-lp151.3.3.1
docker-stable
24.0.9_ce-1.20.1, 24.0.9_ce-15.1, 24.0.9_ce-150000.1.25.1
docker-stable-bash-completion
24.0.9_ce-1.20.1, 24.0.9_ce-15.1, 24.0.9_ce-150000.1.25.1
Timeline
Publicly disclosed
Aug 4, 2022
Last updated
Jul 8, 2026
Weakness Type
- CWE-20 Improper Input Validation
References
- advisoryopenSUSE-SU-2019:1079
- advisoryopenSUSE-SU-2019:1444
- advisoryopenSUSE-SU-2019:1499
- advisoryopenSUSE-SU-2019:1506
- advisoryopenSUSE-SU-2019:1703
FAQ
Common Questions.
In Go before 1.10.6 and 1.11.x before 1.11.3, the "go get" command is vulnerable to remote code execution when executed with the -u flag and the import path of a malicious Go package, or a package that imports it directly or indirectly.
Affected: Go (Golang); Backports Sle (Opensuse) versions 15.0; Debian Linux versions 9.0, among others. The full list is in the CVE brief.
It is not listed in any known-exploited vulnerabilities catalog.
No, it is not currently listed in the CISA Known Exploited Vulnerabilities catalog.
No public exploit code is known.
Fixed versions are available, including containerd 1.1.2-5.3.4, containerd 1.1.2-5.6.1, containerd 1.1.2-lp150.4.3.1.
Brandefense priority: patch immediately, because it is very likely to be exploited soon.
Is CVE-2018-16873 Running On Your Attack Surface?
Brandefense maps vulnerabilities like this one to your internet-facing assets and tells you exactly where to patch.
Request A Demo