pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/lang
Module Name: pkgsrc
Committed By: bsiegert
Date: Tue Nov 10 18:36:58 UTC 2026
Modified Files:
pkgsrc/lang/go: version.mk
pkgsrc/lang/go126: PLIST distinfo
pkgsrc/lang/go127: PLIST distinfo
Log Message:
go: update to 1.27.4 and 1.26.11 (security)
These releases include 12 security fixes following the security policy <https://go.dev/doc/security/policy>:
- net/http: HTTP/1 server crash due to MaxBytesReader header race
For HTTP/1 servers, when MaxBytesReader's limit is exceeded,
"Connection: close" header is automatically set without synchronization,
which might race with another header being set explicitly in the server
handler. As a result, an HTTP/1 server that utilizes MaxBytesReader or
MaxBytesHandler can crash due to runtime panic if its handler reads the
request body concurrently with writing the response header.
Thanks to Jakub Ciolek (https://ciolek.dev) for reporting this issue.
This is CVE-2026-97054 and Go issue https://go.dev/issue/82563.
- cmd/go: unexpected code execution via --sysroot, -target, -isysroot,
-Wl,-syslibroot, and -x cgo flags
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.
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97033 and Go issue https://go.dev/issue/82577.
- cmd/go: arbitrary command execution via GCC spec files in cgo linker
search directories
When using GCC, building a malicious package that uses cgo could cause
arbitrary command execution at link time via untrusted GCC spec files
("specs" or "*.spec").
When linking with "-fopenmp", "-fopenacc", or "-fsanitize=" in "#cgo
LDFLAGS", GCC's built-in link spec evaluates "%:include(libgomp.spec)"
or "%:include(libsanitizer.spec)" and searches for spec files in "-L"
and sysroot directories (including subdirectories and multilib sibling
directories such as "../lib64"), as well as the working directory when
"-fopenmp" or "-fopenacc" is used or when "-fsanitize=" is combined
with "-static" or "-static-lib*".
The go command now rejects "-L", "-isysroot", and "-Wl,-syslibroot"
directories (and the working and package directories when applicable)
that contain GCC spec files, and disallows "@" and "-" prefixes in
"-fsanitize=" compiler flag values.
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97034 and Go issue https://go.dev/issue/82576.
- cmd/go: unexpected code execution and arbitrary file write via Clang
-gen-* and GCC -gnat* flags in cgo
When using Clang or GCC, building a malicious package that uses cgo
could cause unexpected code execution at build time or write files to
arbitrary directories via "-gen-" or "-gnat" flags in "#cgo"
directives.
The "-g*" wildcard in the compiler and linker flag allowlists
previously matched Clang's two-argument "-gen-cdb-fragment-path " flag
and GCC's two-argument "-gnatO " flag, permitting compilation database
fragments and sidecar output files to be written to arbitrary
directories and desynchronizing flag argument parsing between the go
command and the compiler driver so that subsequent arguments could be
passed as unvalidated positional inputs to the linker.
"-gen-" and "-gnat" flags are now disallowed in "#cgo" compiler and
linker flags.
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97035 and Go issue https://go.dev/issue/82575.
- cmd/go: arbitrary code execution during build on darwin via "-l
to_library" in cgo
On Darwin, building a malicious package that uses cgo could cause
arbitrary code execution when using the Apple linker due to passing
"-l to_library " in a "#cgo LDFLAGS" directive.
The Apple linker recombines the separated arguments "-l" and
"to_library" into "-lto_library", which loads an arbitrary LTO plugin
dynamic library at link time.
The go command now disallows "-l" followed by "to_library" in "#cgo
LDFLAGS", rejects "-lazy_library", "-lazy_framework", "-load_hidden",
"-library", and "-library-path", and checks recombined "-l" arguments
against disallowed linker flags and patterns.
Thanks to Ali Sherif for reporting this issue.
This is CVE-2026-97036 and Go issue https://go.dev/issue/82574.
- cmd/go: linker script injection via split -Wl, flags and Darwin or
symbol linker flags in cgo
Building a malicious package that uses cgo could cause arbitrary code
execution at link time by passing linker script files to the host
linker via "#cgo LDFLAGS".
Split "-Wl," flags that consume a following argument (such as
"-Wl,-rpath", "-Wl,--just-symbols", and "-Wl,-undefined") previously
accepted a bare second argument without a "-Wl," prefix, which the
compiler driver passes directly to the linker as a positional input
file. Additionally, when using GNU ld.bfd, flags such as "-framework",
"-Wl,-framework", "-Wl,-undefined", "-Wl,--just-symbols", "-Wl,-R",
"-Wl,-subsystem", and (on non-Darwin platforms) "-Wl,-sectcreate"
could cause ld.bfd to interpret their arguments as linker scripts if
they named a regular file on disk.
The go command now requires a "-Wl," prefix on the second token of
split "-Wl," flags (except "-Wl,-R"), verifies that these flags do not
reference linker script files, and disallows bare
"-Wl,--warn-backrefs-exclude".
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97037 and Go issue https://go.dev/issue/82573.
- cmd/go: arbitrary code execution via crafted .syso files and cgo
linker input files
Building a malicious package containing ".syso" files or cgo linker
inputs could inject arbitrary linker flags or execute arbitrary code
at link time.
Linker input files—including ".syso" files, direct object or library
inputs in "#cgo LDFLAGS", and libraries in "-L" directories—were
passed to the external linker without validating their format or
checking for embedded linker options. Across platforms, this allowed
executing GNU ld implicit linker scripts disguised as libraries or
".syso" files (or loaded via "-l:" or "-l" containing path
separators), injecting unallowlisted linker flags via PE/COFF
".drectve" sections on Windows or Mach-O "LC_LINKER_OPTION" load
commands on Darwin, or invoking LTO plugins via GCC or LLVM LTO
intermediate representation sections in ELF, PE/COFF, or Mach-O
objects.
The go command now verifies that ".syso" files, direct linker inputs,
and libraries in "-L" directories are valid binary objects or archives
that do not contain unallowlisted ".drectve" directives,
"LC_LINKER_OPTION" load commands, or LTO IR sections, and disallows
"-l:" and ":", "=", or path separators in "-l" flags.
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97038 and Go issue https://go.dev/issue/82572.
- cmd/go: flag sanitization bypass via "#cgo pkg-config:" directives
Building a malicious package that uses "#cgo pkg-config:" directives
could load untrusted pkg-config ".pc" files or inject unvalidated
compiler and linker flags.
The pkg-config flag allowlist previously permitted "--with-path=" and
"--personality=", allowed "--define-variable=" values beginning with
"=" or "$" (which can rewrite paths in system ".pc" files into
sysroot-prefixed "-L=" or "-L$SYSROOT" linker search paths), and
allowed package arguments ending in ".pc" or containing path
separators or "..", which caused pkg-config to load local ".pc" files
directly from the package directory. In addition, flags returned by
"pkg-config --cflags" in cgoCPPFLAGS were not checked when determining
whether internal linking is safe.
The go command now disallows "--with-path=", "--personality=", leading
"=" or "$" characters in "--define-variable=" values, and local ".pc"
paths in "#cgo pkg-config:" directives, and inspects cgoCPPFLAGS when
checking internal linking compatibility.
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97039 and Go issue https://go.dev/issue/82571.
- cmd/go, cmd/link: cgo directive injection via .syso files disguised as
Go object files
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.
Thanks to RyotaK (https://ryotak.net) of GMO Flatt Security Inc. for
reporting this issue.
This is CVE-2026-97040 and Go issue https://go.dev/issue/82570.
- cmd/compile, cmd/link: host linker flag injection via //go:cgo_*
directives
Building a malicious package containing "//go:cgo_*" compiler
directives could inject arbitrary flags into the external linker
invocation on ELF platforms.
The compiler and linker did not reject commas in
"//go:cgo_import_dynamic", "//go:cgo_export_dynamic",
"//go:cgo_export_static", "//go:cgo_import_static", and
"//go:cgo_dynamic_linker" directives, and the linker passed the
dynamic linker path using "-Wl,--dynamic-linker,". Furthermore, the
two-argument form of "//go:cgo_import_dynamic" (which is permitted in
non-cgo Go source files) could overwrite the external symbol name of a
symbol already marked for cgo export. A symbol name or dynamic linker
path containing a comma or leading "@" could split
"-Wl,--export-dynamic-symbol=" or "-Wl,--dynamic-linker," into
arbitrary host linker flags or response file arguments.
The compiler and linker now reject commas in "//go:cgo_*" symbol and
dynamic linker directives, the linker passes "-Wl,--dynamic-linker=",
and "cgo_import_dynamic" no longer overwrites symbols exported via
"cgo_export_dynamic" or "cgo_export_static".
Thanks to RyotaK (https://ryotak.net) of GMO Flatt Security Inc. for
reporting this issue.
This is CVE-2026-97041 and Go issue https://go.dev/issue/82569.
- cmd/cgo, cmd/compile, cmd/link: linker flag injection via
cgo_import_dynamic and PE DLL names
Building a malicious package that uses "//go:cgo_import_dynamic" or
links against a crafted PE object on Windows could pass unsafe library
arguments to the external linker.
The compiler only checked the first character of the library name in
"//go:cgo_import_dynamic" directives and skipped validation in
cgo-generated files. In addition, on Windows, "cmd/cgo" and "cmd/link"
did not validate imported DLL names extracted from PE object files
before emitting "-l" flags for the external linker, allowing a crafted
DLL name containing ".." path traversal or special characters to
reference arbitrary files on disk.
The compiler now validates every character of the library name in
"//go:cgo_import_dynamic" directives (including in cgo-generated files
on Windows) and rejects ".." path traversal, and "cmd/cgo" and
"cmd/link" reject PE imported DLL names containing path separators,
"..", ":", or leading "-" or "@".
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97042 and Go issue https://go.dev/issue/82568.
- cmd/go, cmd/compile: unexpected code execution via escaped quotes in
//go:cgo_ldflag
Building a malicious package that uses cgo could bypass "#cgo LDFLAGS"
validation and cause unexpected code execution at build time, or cause
the go command to panic, via crafted quoting in "//go:cgo_ldflag"
directives.
When "cmd/cgo" generates "_cgo_gotypes.go", it quotes each "#cgo
LDFLAGS" argument with strconv.Quote in a "//go:cgo_ldflag" directive,
but "cmd/compile" and "cmd/go" parsed those directives by splitting on
raw quote characters without handling backslash escapes or unquoting
the string. This mismatch allowed disallowed linker flags or
unvalidated linker search paths to be smuggled past the go command's
flag checks and passed to the external linker. In addition,
deduplicating LDFLAGS in the go command could panic with an
out-of-bounds slice index when a prefix of the flag list matched near
the end of the slice.
"cmd/compile" and "cmd/go" now properly handle backslash-escaped
quotes and unquote "//go:cgo_*" pragma strings with strconv.Unquote,
and the slice bounds check in processCgoOutputs has been fixed.
This issue was found by the Go Security Team during an internal audit.
This is CVE-2026-97043 and Go issue https://go.dev/issue/82567.
View the release notes for more information:
https://go.dev/doc/devel/release#go1.27.4
To generate a diff of this commit:
cvs rdiff -u -r1.258 -r1.259 pkgsrc/lang/go/version.mk
cvs rdiff -u -r1.9 -r1.10 pkgsrc/lang/go126/PLIST
cvs rdiff -u -r1.11 -r1.12 pkgsrc/lang/go126/distinfo
cvs rdiff -u -r1.3 -r1.4 pkgsrc/lang/go127/PLIST
cvs rdiff -u -r1.4 -r1.5 pkgsrc/lang/go127/distinfo
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/lang/go/version.mk
diff -u pkgsrc/lang/go/version.mk:1.258 pkgsrc/lang/go/version.mk:1.259
--- pkgsrc/lang/go/version.mk:1.258 Tue Oct 20 20:26:44 2026
+++ pkgsrc/lang/go/version.mk Tue Nov 10 18:36:58 2026
@@ -1,4 +1,4 @@
-# $NetBSD: version.mk,v 1.258 2026/10/20 20:26:44 bsiegert Exp $
+# $NetBSD: version.mk,v 1.259 2026/11/10 18:36:58 bsiegert Exp $
#
# If bsd.prefs.mk is included before go-package.mk in a package, then this
@@ -6,8 +6,8 @@
#
.include "go-vars.mk"
-GO127_VERSION= 1.27.3
-GO126_VERSION= 1.26.10
+GO127_VERSION= 1.27.4
+GO126_VERSION= 1.26.11
GO125_VERSION= 1.25.14
GO124_VERSION= 1.24.13
GO123_VERSION= 1.23.12
Index: pkgsrc/lang/go126/PLIST
diff -u pkgsrc/lang/go126/PLIST:1.9 pkgsrc/lang/go126/PLIST:1.10
--- pkgsrc/lang/go126/PLIST:1.9 Tue Oct 13 18:36:05 2026
+++ pkgsrc/lang/go126/PLIST Tue Nov 10 18:36:58 2026
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.9 2026/10/13 18:36:05 bsiegert Exp $
+@comment $NetBSD: PLIST,v 1.10 2026/11/10 18:36:58 bsiegert Exp $
bin/go${GOVERSSUFFIX}
bin/gofmt${GOVERSSUFFIX}
go126/CONTRIBUTING.md
@@ -8882,6 +8882,7 @@ go126/src/net/http/h2_error_test.go
go126/src/net/http/header.go
go126/src/net/http/header_test.go
go126/src/net/http/http.go
+go126/src/net/http/http1_server_test.go
go126/src/net/http/http_test.go
go126/src/net/http/httptest/example_test.go
go126/src/net/http/httptest/httptest.go
@@ -14168,7 +14169,9 @@ go126/test/fixedbugs/issue8154.go
go126/test/fixedbugs/issue8155.go
go126/test/fixedbugs/issue8158.go
go126/test/fixedbugs/issue81612.go
+go126/test/fixedbugs/issue81687.go
go126/test/fixedbugs/issue8183.go
+go126/test/fixedbugs/issue81863.go
go126/test/fixedbugs/issue8280.dir/a.go
go126/test/fixedbugs/issue8280.dir/b.go
go126/test/fixedbugs/issue8280.go
Index: pkgsrc/lang/go126/distinfo
diff -u pkgsrc/lang/go126/distinfo:1.11 pkgsrc/lang/go126/distinfo:1.12
--- pkgsrc/lang/go126/distinfo:1.11 Tue Oct 20 20:26:44 2026
+++ pkgsrc/lang/go126/distinfo Tue Nov 10 18:36:58 2026
@@ -1,8 +1,8 @@
-$NetBSD: distinfo,v 1.11 2026/10/20 20:26:44 bsiegert Exp $
+$NetBSD: distinfo,v 1.12 2026/11/10 18:36:58 bsiegert Exp $
-BLAKE2s (go1.26.10.src.tar.gz) = 3e01a840b0738fe754af414be33edf79e134e29edda5000b05bcded599a2c04b
-SHA512 (go1.26.10.src.tar.gz) = 0de2cc2c331ea0ca4b3bb41b33d6bad3131c8063cd5ae7ddd1ea9ab974fa9a472cb504a88b68cb32b609dca4157c61b1b30d3029186c7bc00559a75cc254ec86
-Size (go1.26.10.src.tar.gz) = 34164741 bytes
+BLAKE2s (go1.26.11.src.tar.gz) = 5c8016d75ee1460a19928a0cbc79bb7a266cafff8f8335bf2c5fb1b80f7156d9
+SHA512 (go1.26.11.src.tar.gz) = e263b02a1b9af37dcbb9b26bc0d5f8ef6abc1d4eac319b32946c66a6fc77ee7e81d88e67a946eb92103e056e19c95186d77ebaea59d9ebbe7940e6da750db475
+Size (go1.26.11.src.tar.gz) = 34192889 bytes
SHA1 (patch-misc_ios_clangwrap.sh) = 28ea4426336155d6720f7e16b43f0207b47a6dd8
SHA1 (patch-src_cmd_dist_build.go) = cbb9576f832806b0cbef121ea38ba6a54db95bc3
SHA1 (patch-src_crypto_x509_root__bsd.go) = 0b5dead901450967109303f873a2696c65ccac35
Index: pkgsrc/lang/go127/PLIST
diff -u pkgsrc/lang/go127/PLIST:1.3 pkgsrc/lang/go127/PLIST:1.4
--- pkgsrc/lang/go127/PLIST:1.3 Tue Oct 13 18:36:05 2026
+++ pkgsrc/lang/go127/PLIST Tue Nov 10 18:36:58 2026
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.3 2026/10/13 18:36:05 bsiegert Exp $
+@comment $NetBSD: PLIST,v 1.4 2026/11/10 18:36:58 bsiegert Exp $
bin/go${GOVERSSUFFIX}
bin/gofmt${GOVERSSUFFIX}
go127/CONTRIBUTING.md
@@ -1520,6 +1520,7 @@ go127/src/cmd/compile/internal/types2/lo
go127/src/cmd/compile/internal/types2/lookup_test.go
go127/src/cmd/compile/internal/types2/main_test.go
go127/src/cmd/compile/internal/types2/map.go
+go127/src/cmd/compile/internal/types2/methodorder_test.go
go127/src/cmd/compile/internal/types2/mono.go
go127/src/cmd/compile/internal/types2/mono_test.go
go127/src/cmd/compile/internal/types2/named.go
@@ -14772,6 +14773,7 @@ go127/test/fixedbugs/issue8158.go
go127/test/fixedbugs/issue81612.go
go127/test/fixedbugs/issue81687.go
go127/test/fixedbugs/issue8183.go
+go127/test/fixedbugs/issue81863.go
go127/test/fixedbugs/issue8280.dir/a.go
go127/test/fixedbugs/issue8280.dir/b.go
go127/test/fixedbugs/issue8280.go
Index: pkgsrc/lang/go127/distinfo
diff -u pkgsrc/lang/go127/distinfo:1.4 pkgsrc/lang/go127/distinfo:1.5
--- pkgsrc/lang/go127/distinfo:1.4 Tue Oct 20 20:26:44 2026
+++ pkgsrc/lang/go127/distinfo Tue Nov 10 18:36:58 2026
@@ -1,8 +1,8 @@
-$NetBSD: distinfo,v 1.4 2026/10/20 20:26:44 bsiegert Exp $
+$NetBSD: distinfo,v 1.5 2026/11/10 18:36:58 bsiegert Exp $
-BLAKE2s (go1.27.3.src.tar.gz) = 5da0317fa49d619e5f7cc9f10815c9b426cf614821393a075829d63af04f7b68
-SHA512 (go1.27.3.src.tar.gz) = dc84444e0e5e5d4f7bc00f4323ac88c2efa0ce2af4a6e3b3e60325a694389c7ec85ff3aaa9d80df9ff07a2c32620ba57b0c787475f44d80c57c0d22b5c63844c
-Size (go1.27.3.src.tar.gz) = 35134035 bytes
+BLAKE2s (go1.27.4.src.tar.gz) = a60de5ea3acff1d4609857193e0a93d7856de9fbe8d23a2388fbe6ad6b1c8ebd
+SHA512 (go1.27.4.src.tar.gz) = bc5cb8bd8a92293afbb0ea2d949453fede75706ee94147dd163b336913acb4b5cf3c41c861d7f0c1a4a6373856720eb44032bf5916054f0d8fb926657fb5b754
+Size (go1.27.4.src.tar.gz) = 35153471 bytes
SHA1 (patch-misc_ios_clangwrap.sh) = 28ea4426336155d6720f7e16b43f0207b47a6dd8
SHA1 (patch-src_cmd_dist_build.go) = cbb9576f832806b0cbef121ea38ba6a54db95bc3
SHA1 (patch-src_crypto_x509_root__bsd.go) = 0b5dead901450967109303f873a2696c65ccac35
Home |
Main Index |
Thread Index |
Old Index