You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
cmd/go: remote command execution during "go get -u" #29230
go get -u downloads, updates, and builds source code. It is not supposed to execute arbitrary code.
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.
Note that forbidding import paths with a .git element might not be sufficient to mitigate this issue, as on certain systems there can be other aliases for VCS state folders.
Thanks to Etienne Stalmans from the Heroku platform security team for discovering and reporting this issue.
Activity
FiloSottile commentedon Dec 13, 2018
Fixed in Go 1.11.3 by 8954add and 5aedc8a.
Fixed in Go 1.10.6 by 90d609b and 7ef6ee2.
gopherbot commentedon Dec 13, 2018
Change https://golang.org/cl/154101 mentions this issue:
cmd/go: reject 'get' of paths containing leading dots or unsupported charactersgopherbot commentedon Dec 13, 2018
Change https://golang.org/cl/154104 mentions this issue:
cmd/go/internal/get: relax pathOK check to allow any lettergopherbot commentedon Dec 13, 2018
Change https://golang.org/cl/154102 mentions this issue:
cmd/go/internal/get: reject Windows shortnames as path componentsBump Golang 1.11.3 (CVE-2018-16875)
Bump Golang 1.10.6 (CVE-2018-16875)
Bump Golang 1.10.6 (CVE-2018-16875)
Bump Golang 1.10.6 (CVE-2018-16875)
cmd/go/internal/get: reject Windows shortnames as path components
13 remaining items
Bump Golang 1.11.4 (includes fix for CVE-2018-16875)
Bump Golang 1.11.3 (CVE-2018-16875)
Bump Golang 1.11.4 (includes fix for CVE-2018-16875)
Bump Golang 1.11.3 (CVE-2018-16875)
Bump Golang 1.11.4 (includes fix for CVE-2018-16875)
Bump Golang 1.11.3 (CVE-2018-16875)
Bump Golang 1.11.3 (CVE-2018-16875)