CVE-2018-16874
Vulnerability Summary
Timeline
Description
In Go before 1.10.6 and 1.11.x before 1.11.3, the "go get" command is vulnerable to directory traversal when executed with the import path of a malicious Go package which contains curly braces (both '{' and '}' characters). 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). The attacker can cause an arbitrary filesystem write, which can lead to code execution.
CVSS Metrics
- v3.1•HIGH•Score: 8.1CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
- v3.0•MEDIUM•Score: 6.8CVSS:3.0/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N
- v2.0•MEDIUM•Score: 6.8AV:N/AC:M/Au:N/C:P/I:P/A:P
EPSS Trends
Current EPSS score: 5.74%• Percentile: 91%
Techniques & Countermeasures
- CWE-22•Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
- CWE-20•Improper Input Validation
The product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly.
Affected Systems
- debian•debian_linux
9.0
- golang•go
< 1.10.6 | ≥ 1.11.0, < 1.11.3
- Go•toolchain
≥ 1.11.0-0, < 1.11.3
- opensuse•backports_sle
15.0
- opensuse•leap
15.0 | 15.1 | 42.3
- suse•linux_enterprise_server
12
- [unknown]•golang
1.10.6 | 1.11.3
References (16)
- https://security.gentoo.org/glsa/201812-09
- https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-16874
- http://www.securityfocus.com/bid/106228
- https://groups.google.com/forum/?pli=1#%21topic/golang-announce/Kw31K8G7Fi0
- http://lists.opensuse.org/opensuse-security-announce/2019-03/msg00044.html
- http://lists.opensuse.org/opensuse-security-announce/2019-05/msg00060.html
- http://lists.opensuse.org/opensuse-security-announce/2019-06/msg00011.html
- http://lists.opensuse.org/opensuse-security-announce/2019-06/msg00015.html
- http://lists.opensuse.org/opensuse-security-announce/2019-07/msg00010.html
- http://lists.opensuse.org/opensuse-security-announce/2020-04/msg00041.html
- https://lists.debian.org/debian-lts-announce/2021/03/msg00014.html
- https://lists.debian.org/debian-lts-announce/2021/03/msg00015.html
- https://go.dev/cl/154101
- https://go.googlesource.com/go/+/bc82d7c7db83487e05d7a88e06549d4ae2a688c3
- https://go.dev/issue/29230
- https://groups.google.com/g/golang-announce/c/Kw31K8G7Fi0