Skip to content
OpenAdvisories
Unscored CVE-2026-97033 EUVD-2026-123112GHSA-428h-9j26-5fcfGO-2026-6858

Unexpected code execution via --sysroot, -target, -isysroot, -Wl,-syslibroot, and -x cgo flags in cmd/go

Published Nov 11, 2026 · Assigned by Go

Description

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 products

VendorProductAffectedFixed
Go toolchain cmd/go 1.27.0-0 <1.27.4 —
Go toolchain cmd/go 0 <1.26.11 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 golang-1.26 +1 No fix yet —
Debian 13 golang-1.24 No fix yet —
Debian 12 golang-1.19 No fix yet —
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed go1.26 1.26.11-1.1 openSUSE-SU-2026:12529-1

Affected packages

EcosystemPackageAffectedFixedRecord
Go toolchain < 1.26.11 · >= 1.27.0-0, < 1.27.4 1.26.11, 1.27.4 GO-2026-6858

Advisories 2

References