{"api_version":"1","generated_at":"2026-11-12T07:08:13+00:00","cve":"CVE-2026-97037","urls":{"html":"https://cve.report/CVE-2026-97037","api":"https://cve.report/api/cve/CVE-2026-97037.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-97037","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-97037"},"summary":{"title":"Linker script injection via split -Wl, flags and Darwin or symbol linker flags in cgo in cmd/go","description":"Building a malicious package that uses cgo could cause arbitrary code execution at link time by passing linker script files to the host linker via \"#cgo LDFLAGS\". Split \"-Wl,\" flags that consume a following argument (such as \"-Wl,-rpath\", \"-Wl,--just-symbols\", and \"-Wl,-undefined\") previously accepted a bare second argument without a \"-Wl,\" prefix, which the compiler driver passes directly to the linker as a positional input file. Additionally, when using GNU ld.bfd, flags such as \"-framework\", \"-Wl,-framework\", \"-Wl,-undefined\", \"-Wl,--just-symbols\", \"-Wl,-R\", \"-Wl,-subsystem\", and (on non-Darwin platforms) \"-Wl,-sectcreate\" could cause ld.bfd to interpret their arguments as linker scripts if they named a regular file on disk. The go command now requires a \"-Wl,\" prefix on the second token of split \"-Wl,\" flags (except \"-Wl,-R\"), verifies that these flags do not reference linker script files, and disallows bare \"-Wl,--warn-backrefs-exclude\".","state":"PUBLISHED","assigner":"Go","published_at":"2026-11-11 05:19:57","updated_at":"2026-11-11 05:19:57"},"problem_types":["CWE-94: Improper Control of Generation of Code ('Code Injection')"],"metrics":[],"references":[{"url":"https://groups.google.com/g/golang-announce/c/iY8TY0wWgbM","name":"https://groups.google.com/g/golang-announce/c/iY8TY0wWgbM","refsource":"security@golang.org","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://go.dev/issue/82573","name":"https://go.dev/issue/82573","refsource":"security@golang.org","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://pkg.go.dev/vuln/GO-2026-6854","name":"https://pkg.go.dev/vuln/GO-2026-6854","refsource":"security@golang.org","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://go.dev/cl/862150","name":"https://go.dev/cl/862150","refsource":"security@golang.org","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-97037","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-97037","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Go toolchain","product":"cmd/go","version":"affected 1.26.11 semver","platforms":[]},{"source":"CNA","vendor":"Go toolchain","product":"cmd/go","version":"affected 1.27.0-0 1.27.4 semver","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"collectionURL":"https://pkg.go.dev","defaultStatus":"unaffected","packageName":"cmd/go","product":"cmd/go","vendor":"Go toolchain","versions":[{"lessThan":"1.26.11","status":"affected","version":"0","versionType":"semver"},{"lessThan":"1.27.4","status":"affected","version":"1.27.0-0","versionType":"semver"}]}],"descriptions":[{"lang":"en","value":"Building a malicious package that uses cgo could cause arbitrary code execution at link time by passing linker script files to the host linker via \"#cgo LDFLAGS\". Split \"-Wl,\" flags that consume a following argument (such as \"-Wl,-rpath\", \"-Wl,--just-symbols\", and \"-Wl,-undefined\") previously accepted a bare second argument without a \"-Wl,\" prefix, which the compiler driver passes directly to the linker as a positional input file. Additionally, when using GNU ld.bfd, flags such as \"-framework\", \"-Wl,-framework\", \"-Wl,-undefined\", \"-Wl,--just-symbols\", \"-Wl,-R\", \"-Wl,-subsystem\", and (on non-Darwin platforms) \"-Wl,-sectcreate\" could cause ld.bfd to interpret their arguments as linker scripts if they named a regular file on disk. The go command now requires a \"-Wl,\" prefix on the second token of split \"-Wl,\" flags (except \"-Wl,-R\"), verifies that these flags do not reference linker script files, and disallows bare \"-Wl,--warn-backrefs-exclude\"."}],"problemTypes":[{"descriptions":[{"description":"CWE-94: Improper Control of Generation of Code ('Code Injection')","lang":"en"}]}],"providerMetadata":{"dateUpdated":"2026-11-11T03:13:16.142Z","orgId":"1bb62c36-49e3-4200-9d77-64a1400537cc","shortName":"Go"},"references":[{"url":"https://go.dev/cl/862150"},{"url":"https://go.dev/issue/82573"},{"url":"https://groups.google.com/g/golang-announce/c/iY8TY0wWgbM"},{"url":"https://pkg.go.dev/vuln/GO-2026-6854"}],"title":"Linker script injection via split -Wl, flags and Darwin or symbol linker flags in cgo in cmd/go"}},"cveMetadata":{"assignerOrgId":"1bb62c36-49e3-4200-9d77-64a1400537cc","assignerShortName":"Go","cveId":"CVE-2026-97037","datePublished":"2026-11-11T03:13:16.142Z","dateReserved":"2026-09-23T23:05:04.987Z","dateUpdated":"2026-11-11T03:13:16.142Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-11-11 05:19:57","lastModifiedDate":"2026-11-11 05:19:57","problem_types":["CWE-94: Improper Control of Generation of Code ('Code Injection')"],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"97037","Ordinal":"1","Title":"Linker script injection via split -Wl, flags and Darwin or symbo","CVE":"CVE-2026-97037","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"97037","Ordinal":"1","NoteData":"Building a malicious package that uses cgo could cause arbitrary code execution at link time by passing linker script files to the host linker via \"#cgo LDFLAGS\". Split \"-Wl,\" flags that consume a following argument (such as \"-Wl,-rpath\", \"-Wl,--just-symbols\", and \"-Wl,-undefined\") previously accepted a bare second argument without a \"-Wl,\" prefix, which the compiler driver passes directly to the linker as a positional input file. Additionally, when using GNU ld.bfd, flags such as \"-framework\", \"-Wl,-framework\", \"-Wl,-undefined\", \"-Wl,--just-symbols\", \"-Wl,-R\", \"-Wl,-subsystem\", and (on non-Darwin platforms) \"-Wl,-sectcreate\" could cause ld.bfd to interpret their arguments as linker scripts if they named a regular file on disk. The go command now requires a \"-Wl,\" prefix on the second token of split \"-Wl,\" flags (except \"-Wl,-R\"), verifies that these flags do not reference linker script files, and disallows bare \"-Wl,--warn-backrefs-exclude\".","Type":"Description","Title":"Linker script injection via split -Wl, flags and Darwin or symbo"}]}}}