CVE-2026-94447 in cmdinfo

Summary

by MITRE • 10/09/2026

Previously, a user operating inside of a malicious Go project that defines a bogus golang.org/toolchain go.sum entry and operates a malicious GOMODPROXY the user chooses to use can bypass the intended checksum. We now ensure that golang.org/toolchain always goes to the network for the canonical checksum.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Analysis

by VulDB Data Team • 10/09/2026

The vulnerability described involves a sophisticated attack vector targeting Go module integrity verification mechanisms, specifically exploiting how developers configure their development environments and proxy settings. In the Go ecosystem, modules are typically fetched from public proxies or directly from source control repositories, with cryptographic checksums stored in go.sum files to ensure that downloaded code has not been tampered with. The flaw arises when a developer works within a malicious project structure where the go.mod file explicitly references golang.org/toolchain but pairs it with an incorrect or bogus entry in the corresponding go.sum file. This discrepancy creates a window of opportunity for attackers who control both the local development environment and the module proxy service that the Go tooling is configured to use via the GOMODPROXY environment variable.

By manipulating these two elements, an attacker can effectively bypass the intended checksum verification process. When the Go command attempts to resolve dependencies, it consults the go.sum file for expected hashes. If a malicious actor has pre-populated this file with a hash that matches their own tampered version of the toolchain package rather than the canonical one hosted by Google or its official mirrors, and if the GOMODPROXY is directed toward a server controlled by the attacker, the Go tooling may accept the mismatched content as valid. This occurs because the local checksum file takes precedence in certain resolution paths, allowing the malicious proxy to serve compromised binaries that pass the flawed verification check established locally.

The operational impact of this vulnerability is severe, particularly for developers who rely on automated builds or continuous integration pipelines where environment configurations might be inherited from shared or unverified sources. If an attacker successfully injects a malicious version of golang.org/toolchain through this method, they could execute arbitrary code during the build process with the privileges of the user running the Go command. This compromises not only the immediate project but potentially any downstream artifacts generated by that build, leading to supply chain contamination where compromised tools propagate into production environments. The trust model of Go modules relies heavily on the assumption that checksums are immutable and correctly aligned with official sources; this flaw undermines that foundational security guarantee when local configuration is manipulated in conjunction with a rogue proxy.

To mitigate this risk, it is critical to ensure that all module resolution operations strictly validate against canonical checksums provided by trusted authorities rather than relying solely on locally stored sums which can be altered. The fix implemented addresses this by forcing golang.org/toolchain requests to always query the network for the authoritative checksum, thereby ignoring any potentially spoofed entries in local go.sum files for this specific critical package. Developers should audit their GOMODPROXY settings to ensure they point only to reputable and verified proxies such as proxy.golang.org or other officially endorsed mirrors. Additionally, enabling strict module verification practices and regularly updating Go tooling helps maintain the integrity of the development environment against such supply chain attacks.

Responsible

Go

Reservation

09/21/2026

Disclosure

10/09/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!