AZL-113651: CVE-2026-97036 affecting package tensorflow 2.16.1-11
On Darwin, building a malicious package that uses cgo could cause arbitrary code execution when using the Apple linker due to passing "-l tolibrary <path>" in a "#cgo LDFLAGS" directive. The Apple linker recombines the separated arguments "-l" and "tolibrary" into "-ltolibrary", which loads an arbitrary LTO plugin dynamic library at link time. The go command now disallows "-l" followed by "tolibrary" in "#cgo LDFLAGS", rejects "-lazylibrary", "-lazyframework", "-loadhidden", "-library", and "-library-path", and checks recombined "-l" arguments against disallowed linker flags and patterns.
Affected Software
Event History
Frequently Asked Questions
Who is exposed to this issue?
The issue applies on Darwin systems when building a malicious package that uses cgo. It affects build-time use of the Apple linker rather than ordinary runtime use of the package.
What does an attacker need to exploit it?
An attacker needs to cause a target to build a malicious cgo-enabled package containing a crafted #cgo LDFLAGS directive. The directive uses "-l to_library <path>" so that the Apple linker recombines it and loads an attacker-controlled LTO plugin library at link time.
How can this be mitigated if an update cannot be applied immediately?
Do not build untrusted cgo-enabled packages on Darwin, particularly packages that can supply #cgo LDFLAGS. Review build dependencies and reject directives using "-l" followed by "to_library" or linker options such as "-lazy_library", "-lazy_framework", "-load_hidden", "-library", and "-library-path".