@rolandshoemaker requested issue #74380 to be considered for backport to the next 1.24 minor release.

@gopherbot please open backport issues for this.

Various uses of the Go toolchain in untrusted VCS repositories can result in unexpected code execution. When using the Go toolchain in directories fetched using various VCS tools (such as directly cloning Git or Mercurial repositories) can cause the toolchain to execute unexpected commands, if said directory contains multiple VCS configuration metadata (such as a '.hg' directory in a Git repository). This is due to how the Go toolchain attempts to resolve which VCS is being used in order to embed build information in binaries and determine module versions.

The toolchain will now abort attempting to resolve which VCS is being used if it detects multiple VCS configuration metadata in a module directory or nested VCS configuration metadata (such as a '.git' directoy in a parent directory and a '.hg' directory in a child directory). This will not prevent the toolchain from building modules, but will result in binaries omitting VCS related build information.

If this behavior is expected by the user, the old behavior can be re-enabled by setting GODEBUG=allowmultiplevcs=1. This should only be done in trusted repositories.

Thanks to RyotaK (https://ryotak.net) of GMO Flatt Security Inc for reporting this issue.

This is CVE-2025-4674.

Comment From: gopherbot

Change https://go.dev/cl/686395 mentions this issue: [release-branch.go1.24] cmd/go: disable support for multiple vcs in one module