
go1.20.10 (released 2023-10-10) includes a security fix to the net/http package. See the Go 1.20.10 milestone on our issue tracker for details. - https://github.com/golang/go/issues?q=milestone%3AGo1.20.10+label%3ACherryPickApproved - full diff: https://github.com/golang/go/compare/go1.19.12...go1.20.10 From the mailing list announcement: [security] Go 1.21.3 and Go 1.20.10 are released Hello gophers, We have just released Go versions 1.21.3 and 1.20.10, minor point releases. These minor releases include 1 security fixes following the security policy: - net/http: rapid stream resets can cause excessive work A malicious HTTP/2 client which rapidly creates requests and immediately resets them can cause excessive server resource consumption. While the total number of requests is bounded to the http2.Server.MaxConcurrentStreams setting, resetting an in-progress request allows the attacker to create a new request while the existing one is still executing. HTTP/2 servers now bound the number of simultaneously executing handler goroutines to the stream concurrency limit. New requests arriving when at the limit (which can only happen after the client has reset an existing, in-flight request) will be queued until a handler exits. If the request queue grows too large, the server will terminate the connection. This issue is also fixed in golang.org/x/net/http2 v0.17.0, for users manually configuring HTTP/2. The default stream concurrency limit is 250 streams (requests) per HTTP/2 connection. This value may be adjusted using the golang.org/x/net/http2 package; see the Server.MaxConcurrentStreams setting and the ConfigureServer function. This is CVE-2023-39325 and Go issue https://go.dev/issue/63417. This is also tracked by CVE-2023-44487. View the release notes for more information: https://go.dev/doc/devel/release#go1.21.3 Signed-off-by: Cory Snider <csnider@mirantis.com>
84 lines
3.1 KiB
Text
84 lines
3.1 KiB
Text
ARG GO_VERSION=1.20.10
|
|
|
|
FROM golang:${GO_VERSION}-alpine AS base
|
|
ENV GO111MODULE=off
|
|
RUN apk --no-cache add \
|
|
bash \
|
|
btrfs-progs-dev \
|
|
build-base \
|
|
curl \
|
|
lvm2-dev \
|
|
jq
|
|
|
|
RUN mkdir -p /build/
|
|
RUN mkdir -p /go/src/github.com/docker/docker/
|
|
WORKDIR /go/src/github.com/docker/docker/
|
|
|
|
FROM base AS frozen-images
|
|
# Get useful and necessary Hub images so we can "docker load" locally instead of pulling
|
|
COPY contrib/download-frozen-image-v2.sh /
|
|
RUN /download-frozen-image-v2.sh /build \
|
|
busybox:latest@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209 \
|
|
busybox:latest@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209 \
|
|
busybox:glibc@sha256:1f81263701cddf6402afe9f33fca0266d9fff379e59b1748f33d3072da71ee85 \
|
|
debian:bullseye-slim@sha256:dacf278785a4daa9de07596ec739dbc07131e189942772210709c5c0777e8437 \
|
|
hello-world:latest@sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
|
|
# See also frozenImages in "testutil/environment/protect.go" (which needs to be updated when adding images to this list)
|
|
|
|
FROM base AS dockercli
|
|
ENV INSTALL_BINARY_NAME=dockercli
|
|
COPY hack/dockerfile/install/install.sh ./install.sh
|
|
COPY hack/dockerfile/install/$INSTALL_BINARY_NAME.installer ./
|
|
RUN PREFIX=/build ./install.sh $INSTALL_BINARY_NAME
|
|
|
|
# Build DockerSuite.TestBuild* dependency
|
|
FROM base AS contrib
|
|
COPY contrib/syscall-test /build/syscall-test
|
|
COPY contrib/httpserver/Dockerfile /build/httpserver/Dockerfile
|
|
COPY contrib/httpserver contrib/httpserver
|
|
RUN CGO_ENABLED=0 go build -buildmode=pie -o /build/httpserver/httpserver github.com/docker/docker/contrib/httpserver
|
|
|
|
# Build the integration tests and copy the resulting binaries to /build/tests
|
|
FROM base AS builder
|
|
|
|
# Set tag and add sources
|
|
COPY . .
|
|
# Copy test sources tests that use assert can print errors
|
|
RUN mkdir -p /build${PWD} && find integration integration-cli -name \*_test.go -exec cp --parents '{}' /build${PWD} \;
|
|
# Build and install test binaries
|
|
ARG DOCKER_GITCOMMIT=undefined
|
|
RUN hack/make.sh build-integration-test-binary
|
|
RUN mkdir -p /build/tests && find . -name test.main -exec cp --parents '{}' /build/tests \;
|
|
|
|
## Generate testing image
|
|
FROM alpine:3.10 as runner
|
|
|
|
ENV DOCKER_REMOTE_DAEMON=1
|
|
ENV DOCKER_INTEGRATION_DAEMON_DEST=/
|
|
ENTRYPOINT ["/scripts/run.sh"]
|
|
|
|
# Add an unprivileged user to be used for tests which need it
|
|
RUN addgroup docker && adduser -D -G docker unprivilegeduser -s /bin/ash
|
|
|
|
# GNU tar is used for generating the emptyfs image
|
|
RUN apk --no-cache add \
|
|
bash \
|
|
ca-certificates \
|
|
g++ \
|
|
git \
|
|
iptables \
|
|
pigz \
|
|
tar \
|
|
xz
|
|
|
|
COPY hack/test/e2e-run.sh /scripts/run.sh
|
|
COPY hack/make/.ensure-emptyfs /scripts/ensure-emptyfs.sh
|
|
|
|
COPY integration/testdata /tests/integration/testdata
|
|
COPY integration/build/testdata /tests/integration/build/testdata
|
|
COPY integration-cli/fixtures /tests/integration-cli/fixtures
|
|
|
|
COPY --from=frozen-images /build/ /docker-frozen-images
|
|
COPY --from=dockercli /build/ /usr/bin/
|
|
COPY --from=contrib /build/ /tests/contrib/
|
|
COPY --from=builder /build/ /
|