containerd/script/setup/prepare_env_windows.ps1
Sebastiaan van Stijn 13e6b2b686
update to go1.21.9, go1.22.2
go1.21.9 (released 2024-04-03) includes a security fix to the net/http
package, as well as bug fixes to the linker, and the go/types and
net/http packages. See the Go 1.21.9 milestone for more details;
https://github.com/golang/go/issues?q=milestone%3AGo1.21.9+label%3ACherryPickApproved

These minor releases include 1 security fixes following the security policy:

- http2: close connections when receiving too many headers

Maintaining HPACK state requires that we parse and process all HEADERS
and CONTINUATION frames on a connection. When a request's headers exceed
MaxHeaderBytes, we don't allocate memory to store the excess headers but
we do parse them. This permits an attacker to cause an HTTP/2 endpoint
to read arbitrary amounts of header data, all associated with a request
which is going to be rejected. These headers can include Huffman-encoded
data which is significantly more expensive for the receiver to decode
than for an attacker to send.

Set a limit on the amount of excess header frames we will process before
closing a connection.

Thanks to Bartek Nowotarski (https://nowotarski.info/) for reporting this issue.

This is CVE-2023-45288 and Go issue https://go.dev/issue/65051.

View the release notes for more information:
https://go.dev/doc/devel/release#go1.22.2

- https://github.com/golang/go/issues?q=milestone%3AGo1.21.9+label%3ACherryPickApproved
- full diff: https://github.com/golang/go/compare/go1.21.8...go1.21.9

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-04-22 19:43:32 +02:00

56 lines
1.8 KiB
PowerShell

# Prepare windows environment for building and running containerd tests
# Disable Windows Defender real time monitoring. Real time monitoring consumes a lot of
# CPU and slows down tests as images are unarchived, and is not really needed in a short
# lived test environment.
Set-MpPreference -DisableRealtimeMonitoring:$true
$PACKAGES= @{ mingw = "10.2.0"; git = ""; golang = "1.21.9"; make = ""; nssm = "" }
Write-Host "Downloading chocolatey package"
curl.exe -L "https://packages.chocolatey.org/chocolatey.0.10.15.nupkg" -o 'c:\choco.zip'
Expand-Archive "c:\choco.zip" -DestinationPath "c:\choco"
Write-Host "Installing choco"
& "c:\choco\tools\chocolateyInstall.ps1"
Write-Host "Set choco.exe path."
$env:PATH+=";C:\ProgramData\chocolatey\bin"
Write-Host "Install necessary packages"
foreach ($package in $PACKAGES.Keys) {
$command = "choco.exe install $package --yes"
$version = $PACKAGES[$package]
if (-Not [string]::IsNullOrEmpty($version)) {
$command += " --version $version"
}
Invoke-Expression $command
}
Write-Host "Set up environment."
$userGoBin = "${env:HOME}\go\bin"
$path = ";c:\Program Files\Git\bin;c:\Program Files\Go\bin;${userGoBin};c:\containerd\bin"
$env:PATH+=$path
Write-Host $env:PATH
[Environment]::SetEnvironmentVariable("PATH", $env:PATH, 'User')
# Prepare Log dir
mkdir c:\Logs
# Log go env for future reference:
go env > c:\Logs\go-env.txt
cat c:\Logs\go-env.txt
# Pull junit conversion tool
go install github.com/jstemmer/go-junit-report@v0.9.1
# Get critctl tool. Used for cri-integration tests
$CRICTL_DOWNLOAD_URL="https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.26.0/crictl-v1.26.0-windows-amd64.tar.gz"
curl.exe -L $CRICTL_DOWNLOAD_URL -o c:\crictl.tar.gz
tar -xvf c:\crictl.tar.gz
mv crictl.exe "${userGoBin}\crictl.exe" # Move crictl somewhere in path