]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.18] syscall, os/exec: reject environment variables containing...
authorDamien Neil <dneil@google.com>
Tue, 18 Oct 2022 00:38:29 +0000 (17:38 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Tue, 1 Nov 2022 16:15:42 +0000 (16:15 +0000)
commitaba57b07721cac39b4b7cf70f8dfbf9e2e299187
tree70da2586e9bdf8d81d706343194747d4f661ad7c
parent2c2952aea8fb041a78689c4c5f917fd166f8310b
[release-branch.go1.18] syscall, os/exec: reject environment variables containing NULs

Check for and reject environment variables containing NULs.

The conventions for passing environment variables to subprocesses
cause most or all systems to interpret a NUL as a separator. The
syscall package rejects environment variables containing a NUL
on most systems, but erroneously did not do so on Windows. This
causes an environment variable such as "FOO=a\x00BAR=b" to be
interpreted as "FOO=a", "BAR=b".

Check for and reject NULs in environment variables passed to
syscall.StartProcess on Windows.

Add a redundant check to os/exec as extra insurance.

Updates #56284
Fixes #56327
Fixes CVE-2022-41716

Change-Id: I2950e2b0cb14ebd26e5629be1521858f66a7d4ae
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1609434
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Tatiana Bradley <tatianabradley@google.com>
Reviewed-by: Roland Shoemaker <bracewell@google.com>
TryBot-Result: Security TryBots <security-trybots@go-security-trybots.iam.gserviceaccount.com>
(cherry picked from commit 845accdebb2772c5344ed0c96df9910f3b02d741)
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1617552
Run-TryBot: Tatiana Bradley <tatianabradley@google.com>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/446915
Reviewed-by: Heschi Kreinick <heschi@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Tatiana Bradley <tatiana@golang.org>
src/os/exec/env_test.go
src/os/exec/exec.go
src/os/exec/exec_test.go
src/syscall/exec_windows.go