Skip to content
Sign in
CVE-2026-97040Not scored

CVE-2026-97040: Cgo directive injection via .syso files disguised as Go object files in cmd/go and cmd/link

Go toolchain · cmd/go

Vendor fix available · Affected: Go toolchain cmd/go · Exploitation: not established

ExploitationNot established

Not in CISA KEV as of catalogue 2026.11.10 (10 Nov)

  1. In CISA KEV: not seen
  2. Exploited (reported): not seen
  3. Scanning observed: not seen
  4. Proof of concept public: not seen
  5. Not establishedNothing in the sources we check

No EPSS score yet. The score appears once FIRST publishes it.

Not scored yet. NVD has not published a CVSS score.

DescriptionNVD

Building a package containing a crafted ".syso" file could bypass cgo flag validation and inject arbitrary linker flags when linking. When loading ".syso" entries from a package archive, the linker only checked for recognized host object headers (ELF, Mach-O, PE, and XCOFF) before falling through to Go object parsing. A ".syso" file beginning with a "go object" header was parsed as a Go compiler object, allowing untrusted cgo metadata directives (such as "cgo_ldflag" or "cgo_dynamic_linker") embedded in the ".syso" file to be passed to the external linker without validation. Additionally, ".syso" filenames longer than 16 bytes lost their ".syso" extension when truncated in archive headers, and unrecognized ".syso" formats forced external linking in pure-Go builds. The linker now rejects ".syso" files that are not recognized host object formats, and "cmd/go" and "cmd/pack" preserve the ".syso" suffix when truncating long archive member names.

Coverage1 article · 1 outlet

First in our coverage: SecurityOnline, 12 Nov.

  1. Go releases fix build time code execution and HTTP flaws
    SecurityOnline · first in our coverage · mentions it in passing

New articles also arrive in the RSS feed.

References

Updated AboutDevelopersSign in