Arbitrary command execution via GCC spec files in cgo linker search directories in cmd/go
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Go toolchain | cmd/go | unaffected |
|
No data.
No data.
No data available yet.
No CVSS v4.0
No CVSS v3.1
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.280% probability within 30 days)
Key SSVC decision points have not yet been added.
| Type | Values Removed | Values Added |
|---|---|---|
| Weaknesses | CWE-94 |
| Type | Values Removed | Values Added |
|---|---|---|
| Weaknesses | CWE-78 |
| Type | Values Removed | Values Added |
|---|---|---|
| Weaknesses | CWE-78 |
| Type | Values Removed | Values Added |
|---|---|---|
| Description | When using GCC, building a malicious package that uses cgo could cause arbitrary command execution at link time via untrusted GCC spec files ("specs" or "*.spec"). When linking with "-fopenmp", "-fopenacc", or "-fsanitize=" in "#cgo LDFLAGS", GCC's built-in link spec evaluates "%:include(libgomp.spec)" or "%:include(libsanitizer.spec)" and searches for spec files in "-L" and sysroot directories (including subdirectories and multilib sibling directories such as "../lib64"), as well as the working directory when "-fopenmp" or "-fopenacc" is used or when "-fsanitize=" is combined with "-static" or "-static-lib*". The go command now rejects "-L", "-isysroot", and "-Wl,-syslibroot" directories (and the working and package directories when applicable) that contain GCC spec files, and disallows "@" and "-" prefixes in "-fsanitize=" compiler flag values. | |
| Title | Arbitrary command execution via GCC spec files in cgo linker search directories in cmd/go | |
| References |
|
No data.