ALPINE-CVE-2026-97033: Alpine/go vulnerability
Building a malicious package that uses cgo could cause arbitrary code execution at build time through several compiler and linker flags permitted in "#cgo" directives. Specifically, "--sysroot" in GCC and Clang relocates compiler subprograms, spec files, and CRT startup objects to an attacker-controlled directory; "-target" in Clang falls back to executing target helper tools from the current working directory when not found in PATH; "-isysroot" and "-Wl,-syslibroot" can pass a regular file on disk to GNU ld.bfd, which interprets it as a positional linker script; and "-x" permitted specifying arbitrary compiler input languages beyond those supported by cgo. "--sysroot" and "-target" are now disallowed in "#cgo" flags, "-isysroot" and "-Wl,-syslibroot" are verified not to point to regular files, and "-x" is restricted to the C, C++, Objective-C, and assembler languages supported by cgo.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
alpine/goto a version that resolves this vulnerability.Fixed in 1.26.11-r0
Event History
Frequently Asked Questions
Who is exposed to this issue?
Build environments that compile untrusted or malicious Go packages using cgo are exposed. The issue is triggered during package build time, so systems that only run already-built binaries are not described as affected by this data.
What does an attacker need to exploit it?
An attacker needs to cause a build of a malicious package containing #cgo directives. Those directives could supply compiler or linker flags that execute attacker-controlled tools or cause attacker-controlled files to be interpreted during compilation or linking.
Are the dangerous flags still accepted in #cgo directives?
No. --sysroot and -target are disallowed, while -isysroot and -Wl,-syslibroot are checked to ensure they do not reference regular files. The -x option is limited to C, C++, Objective-C, and assembler languages supported by cgo.