{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-97042","assignerOrgId":"1bb62c36-49e3-4200-9d77-64a1400537cc","state":"PUBLISHED","assignerShortName":"Go","dateReserved":"2026-09-23T23:05:04.987Z","datePublished":"2026-11-11T03:13:15.060Z","dateUpdated":"2026-11-11T03:13:15.060Z"},"containers":{"cna":{"providerMetadata":{"orgId":"1bb62c36-49e3-4200-9d77-64a1400537cc","shortName":"Go","dateUpdated":"2026-11-11T03:13:15.060Z"},"title":"Linker flag injection via cgo_import_dynamic and PE DLL names in cmd/cgo, cmd/compile, and cmd/link","descriptions":[{"lang":"en","value":"Building a malicious package that uses \"//go:cgo_import_dynamic\" or links against a crafted PE object on Windows could pass unsafe library arguments to the external linker. The compiler only checked the first character of the library name in \"//go:cgo_import_dynamic\" directives and skipped validation in cgo-generated files. In addition, on Windows, \"cmd/cgo\" and \"cmd/link\" did not validate imported DLL names extracted from PE object files before emitting \"-l<name>\" flags for the external linker, allowing a crafted DLL name containing \"..\" path traversal or special characters to reference arbitrary files on disk. The compiler now validates every character of the library name in \"//go:cgo_import_dynamic\" directives (including in cgo-generated files on Windows) and rejects \"..\" path traversal, and \"cmd/cgo\" and \"cmd/link\" reject PE imported DLL names containing path separators, \"..\", \":\", or leading \"-\" or \"@\"."}],"affected":[{"vendor":"Go toolchain","product":"cmd/cgo","collectionURL":"https://pkg.go.dev","packageName":"cmd/cgo","versions":[{"version":"0","lessThan":"1.26.11","status":"affected","versionType":"semver"},{"version":"1.27.0-0","lessThan":"1.27.4","status":"affected","versionType":"semver"}],"defaultStatus":"unaffected"},{"vendor":"Go toolchain","product":"cmd/compile","collectionURL":"https://pkg.go.dev","packageName":"cmd/compile","versions":[{"version":"0","lessThan":"1.26.11","status":"affected","versionType":"semver"},{"version":"1.27.0-0","lessThan":"1.27.4","status":"affected","versionType":"semver"}],"defaultStatus":"unaffected"},{"vendor":"Go toolchain","product":"cmd/link","collectionURL":"https://pkg.go.dev","packageName":"cmd/link","versions":[{"version":"0","lessThan":"1.26.11","status":"affected","versionType":"semver"},{"version":"1.27.0-0","lessThan":"1.27.4","status":"affected","versionType":"semver"}],"defaultStatus":"unaffected"}],"problemTypes":[{"descriptions":[{"lang":"en","description":"CWE-88: Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')"}]}],"references":[{"url":"https://go.dev/cl/862155"},{"url":"https://go.dev/issue/82568"},{"url":"https://groups.google.com/g/golang-announce/c/iY8TY0wWgbM"},{"url":"https://pkg.go.dev/vuln/GO-2026-6849"}]}}}