mirror of
https://github.com/docker/cli.git
synced 2026-08-28 02:24:15 -05:00
This release include 3 security fixes following the security policy:
- mime: quadratic complexity in WordDecoder.DecodeHeader
Decoding a maliciously-crafted MIME header containing many invalid
encoded-words could consume excessive CPU.
The MIME decoder now better handles this case.
Thanks to p4p3r (https://hackerone.com/p4p3r_hak) for reporting this issue.
This is CVE-2026-42504 and Go issue https://go.dev/issue/79217.
- net/textproto: arbitrary input are included in errors without any escaping
When returning errors, functions in the net/textproto package would
include its input as part of the error, without any escaping. Note that
said input is often controlled by external parties when using this
package naturally. For example, a net/http client uses ReadMIMEHeader
when parsing the headers it receive from a server.
As a result, an attacker could inject arbitrary content into the error.
Practically, this can result in an attacker injecting misleading
content, terminal control bytes, etc. into a victim's output or logs.
This is CVE-2026-42507 and Go issue https://go.dev/issue/79346
- crypto/x509: split candidate hostname only once
(*x509.Certificate).VerifyHostname previously called matchHostnames in a loop
over all DNS Subject Alternative Name (SAN) entries. This caused
strings.Split(host, ".") to execute repeatedly on the same input hostname.
With a large DNS SAN list, verification costs scaled quadratically based on the
number of SAN entries multiplied by the hostname's label count. Because
x509.Verify validates hostnames before building the certificate chain, this
overhead occurred even for untrusted certificates.
Thanks to Jakub Ciolek (https://ciolek.dev) for reporting this issue.
This is CVE-2026-27145 and https://go.dev/issue/79694.
View the release notes for more information:
https://go.dev/doc/devel/release#go1.26.4
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
93 lines
3.0 KiB
Docker
93 lines
3.0 KiB
Docker
# syntax=docker/dockerfile:1
|
|
|
|
ARG GO_VERSION=1.26.4
|
|
|
|
# ALPINE_VERSION sets the version of the alpine base image to use, including for the golang image.
|
|
# It must be a supported tag in the docker.io/library/alpine image repository
|
|
# that's also available as alpine image variant for the Golang version used.
|
|
ARG ALPINE_VERSION=3.23
|
|
|
|
# BUILDX_VERSION sets the version of buildx to install in the dev container.
|
|
# It must be a valid tag in the docker.io/docker/buildx-bin image repository
|
|
# on Docker Hub.
|
|
ARG BUILDX_VERSION=0.34.1
|
|
FROM docker/buildx-bin:${BUILDX_VERSION} AS buildx
|
|
|
|
FROM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS golang
|
|
ENV GOTOOLCHAIN=local
|
|
ENV CGO_ENABLED=0
|
|
|
|
FROM golang AS gofumpt
|
|
ARG GOFUMPT_VERSION=v0.9.2
|
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
|
--mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=tmpfs,target=/go/src/ \
|
|
GO111MODULE=on go install "mvdan.cc/gofumpt@${GOFUMPT_VERSION}" \
|
|
&& gofumpt --version
|
|
|
|
FROM golang AS gotestsum
|
|
# GOTESTSUM_VERSION sets the version of gotestsum to install in the dev container.
|
|
# It must be a valid tag in the https://github.com/gotestyourself/gotestsum repository.
|
|
ARG GOTESTSUM_VERSION=v1.13.0
|
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
|
--mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=tmpfs,target=/go/src/ \
|
|
GO111MODULE=on go install gotest.tools/gotestsum@${GOTESTSUM_VERSION}
|
|
|
|
FROM golang AS goversioninfo
|
|
# GOVERSIONINFO_VERSION is the version of GoVersionInfo to install.
|
|
# It must be a valid tag from https://github.com/josephspurrier/goversioninfo
|
|
ARG GOVERSIONINFO_VERSION=v1.5.0
|
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
|
--mount=type=cache,target=/go/pkg/mod \
|
|
--mount=type=tmpfs,target=/go/src/ \
|
|
GO111MODULE=on go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@${GOVERSIONINFO_VERSION}
|
|
|
|
FROM golang AS dev
|
|
RUN apk add --no-cache \
|
|
bash \
|
|
bash-completion \
|
|
build-base \
|
|
ca-certificates \
|
|
coreutils \
|
|
curl \
|
|
git \
|
|
git-daemon \
|
|
jq \
|
|
nano
|
|
|
|
RUN <<-'EOF'
|
|
cat > /etc/motd <<-'EOM'
|
|
\e[1;32mYou are now in a development container.\e[0m
|
|
|
|
Run \e[1;36mmake help\e[0m to see available targets.
|
|
EOM
|
|
|
|
cat >> /root/.bashrc <<-'EOB'
|
|
# print the MOTD when opening the dev-container (interactive shell only).
|
|
if [[ $- == *i* ]] && [[ -z "$MOTD_SHOWN" ]]; then
|
|
printf "%b\n" "$(cat /etc/motd)"
|
|
export MOTD_SHOWN=1
|
|
fi
|
|
|
|
# set a custom prompt to make it more visible when inside the dev-container.
|
|
PS1='\[\e[0;32m\]\u@docker-cli-dev\$ \[\e[0m\]'
|
|
|
|
# set-up bash completion for testing.
|
|
source /etc/bash/bash_completion.sh
|
|
EOB
|
|
EOF
|
|
|
|
CMD ["/bin/bash"]
|
|
ENV DISABLE_WARN_OUTSIDE_CONTAINER=1
|
|
ENV PATH=$PATH:/go/src/github.com/docker/cli/build
|
|
|
|
COPY --link --from=buildx /buildx /usr/libexec/docker/cli-plugins/docker-buildx
|
|
COPY --link --from=gofumpt /go/bin/* /go/bin/
|
|
COPY --link --from=gotestsum /go/bin/* /go/bin/
|
|
COPY --link --from=goversioninfo /go/bin/* /go/bin/
|
|
|
|
WORKDIR /go/src/github.com/docker/cli
|
|
ENV GO111MODULE=auto
|
|
COPY --link . .
|