AZL-113672: CVE-2026-97042 affecting package tensorflow 2.16.1-11
Building a malicious package that uses "//go:cgoimportdynamic" 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:cgoimportdynamic" 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:cgoimportdynamic" 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 Software
Event History
Frequently Asked Questions
What must an attacker supply to exploit this issue?
An attacker must cause a Windows build to process a malicious package using a //go:cgo_import_dynamic directive with unsafe library arguments, or a crafted PE object containing a malicious imported DLL name. The crafted name can use path traversal or special characters to make the external linker reference arbitrary files on disk.
Which build environments are exposed?
The described PE-object DLL-name issue applies on Windows, where cmd/cgo and cmd/link emit library flags for an external linker. The directive-validation issue involves compiler handling of //go:cgo_import_dynamic, including cgo-generated files on Windows.