AZL-113447: CVE-2026-97037 affecting package golang 1.26.11-1
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".
Affected Software
Event History
Frequently Asked Questions
What conditions are required for exploitation?
A user must build a malicious package that uses cgo. Exploitation occurs during linking when attacker-controlled #cgo LDFLAGS cause the host linker to process a linker script as an input.
Which linker configurations are specifically implicated?
The issue includes split -Wl, options whose following argument was accepted without a -Wl, prefix, including -Wl,-rpath, -Wl,--just-symbols, and -Wl,-undefined. GNU ld.bfd has additional exposure because several options can interpret a regular file argument as a linker script.
What changes mitigate the issue in the updated Go command?
The Go command requires the second token of split -Wl, flags to have a -Wl, prefix, except for -Wl,-R. It also checks that relevant flags do not reference linker-script files and rejects bare -Wl,--warn-backrefs-exclude.