mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00

$ govulncheck ./... govulncheck is an experimental tool. Share feedback at https://go.dev/s/govulncheck-feedback. Scanning for dependencies with known vulnerabilities... Found 1 known vulnerability. Vulnerability #1: GO-2022-1144 An attacker can cause excessive memory growth in a Go server accepting HTTP/2 requests. HTTP/2 server connections contain a cache of HTTP header keys sent by the client. While the total number of entries in this cache is capped, an attacker sending very large keys can cause the server to allocate approximately 64 MiB per open connection. Call stacks in your code: tools/etcd-dump-metrics/main.go:159:31: go.etcd.io/etcd/v3/tools/etcd-dump-metrics.main$4 calls go.etcd.io/etcd/server/v3/embed.StartEtcd, which eventually calls golang.org/x/net/http2.ConfigureServer$1 Found in: golang.org/x/net/http2@v0.2.0 Fixed in: golang.org/x/net/http2@v1.19.4 More info: https://pkg.go.dev/vuln/GO-2022-1144 Vulnerability #2: GO-2022-1144 An attacker can cause excessive memory growth in a Go server accepting HTTP/2 requests. HTTP/2 server connections contain a cache of HTTP header keys sent by the client. While the total number of entries in this cache is capped, an attacker sending very large keys can cause the server to allocate approximately 64 MiB per open connection. Call stacks in your code: contrib/lock/storage/storage.go:106:28: go.etcd.io/etcd/v3/contrib/lock/storage.main calls net/http.ListenAndServe contrib/raftexample/httpapi.go:113:31: go.etcd.io/etcd/v3/contrib/raftexample.serveHTTPKVAPI$1 calls net/http.Server.ListenAndServe tools/etcd-dump-metrics/main.go:159:31: go.etcd.io/etcd/v3/tools/etcd-dump-metrics.main$4 calls go.etcd.io/etcd/server/v3/embed.StartEtcd, which eventually calls net/http.Serve tools/etcd-dump-metrics/main.go:159:31: go.etcd.io/etcd/v3/tools/etcd-dump-metrics.main$4 calls go.etcd.io/etcd/server/v3/embed.StartEtcd, which eventually calls net/http.Server.Serve Found in: net/http@go1.19.3 Fixed in: net/http@go1.19.4 More info: https://pkg.go.dev/vuln/GO-2022-1144 Signed-off-by: Benjamin Wang <wachao@vmware.com>
284 lines
10 KiB
Makefile
284 lines
10 KiB
Makefile
TMP_DOCKERFILE:=$(shell mktemp)
|
|
GO_VERSION ?= 1.19.4
|
|
TMP_DIR_MOUNT_FLAG = --tmpfs=/tmp:exec
|
|
ifdef HOST_TMP_DIR
|
|
TMP_DIR_MOUNT_FLAG = --mount type=bind,source=$(HOST_TMP_DIR),destination=/tmp
|
|
endif
|
|
|
|
# Example:
|
|
# make build-docker-test
|
|
# make compile-with-docker-test
|
|
# make build-docker-static-ip-test
|
|
#
|
|
# gcloud auth configure-docker
|
|
# make push-docker-static-ip-test
|
|
#
|
|
# gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com
|
|
# make pull-docker-static-ip-test
|
|
#
|
|
# make docker-static-ip-test-certs-run
|
|
# make docker-static-ip-test-certs-metrics-proxy-run
|
|
|
|
build-docker-static-ip-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
@sed 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./docker-static-ip/Dockerfile > $(TMP_DOCKERFILE)
|
|
docker build \
|
|
--network=host \
|
|
--tag gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION) \
|
|
--file ./docker-static-ip/Dockerfile \
|
|
$(TMP_DOCKERFILE)
|
|
|
|
push-docker-static-ip-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
docker push gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION)
|
|
|
|
pull-docker-static-ip-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
docker pull gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION)
|
|
|
|
docker-static-ip-test-certs-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-static-ip/certs,destination=/certs \
|
|
gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-static-ip-test-certs-metrics-proxy-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-static-ip/certs-metrics-proxy,destination=/certs-metrics-proxy \
|
|
gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-metrics-proxy/run.sh && rm -rf m*.etcd"
|
|
|
|
|
|
|
|
# Example:
|
|
# make build-docker-test
|
|
# make compile-with-docker-test
|
|
# make build-docker-dns-test
|
|
#
|
|
# gcloud auth configure-docker
|
|
# make push-docker-dns-test
|
|
#
|
|
# gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com
|
|
# make pull-docker-dns-test
|
|
#
|
|
# make docker-dns-test-insecure-run
|
|
# make docker-dns-test-certs-run
|
|
# make docker-dns-test-certs-gateway-run
|
|
# make docker-dns-test-certs-wildcard-run
|
|
# make docker-dns-test-certs-common-name-auth-run
|
|
# make docker-dns-test-certs-common-name-multi-run
|
|
# make docker-dns-test-certs-san-dns-run
|
|
|
|
build-docker-dns-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
@sed 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./docker-dns/Dockerfile > $(TMP_DOCKERFILE)
|
|
docker build \
|
|
--network=host \
|
|
--tag gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
--file ./docker-dns/Dockerfile \
|
|
$(TMP_DOCKERFILE)
|
|
|
|
docker run \
|
|
--rm \
|
|
--dns 127.0.0.1 \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "/etc/init.d/bind9 start && cat /dev/null >/etc/hosts && dig etcd.local"
|
|
|
|
push-docker-dns-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
docker push gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION)
|
|
|
|
pull-docker-dns-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
docker pull gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION)
|
|
|
|
docker-dns-test-insecure-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns/insecure,destination=/insecure \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /insecure/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-test-certs-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns/certs,destination=/certs \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-test-certs-gateway-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns/certs-gateway,destination=/certs-gateway \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-gateway/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-test-certs-wildcard-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns/certs-wildcard,destination=/certs-wildcard \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-wildcard/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-test-certs-common-name-auth-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns/certs-common-name-auth,destination=/certs-common-name-auth \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-common-name-auth/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-test-certs-common-name-multi-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns/certs-common-name-multi,destination=/certs-common-name-multi \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-common-name-multi/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-test-certs-san-dns-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns/certs-san-dns,destination=/certs-san-dns \
|
|
gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-san-dns/run.sh && rm -rf m*.etcd"
|
|
|
|
|
|
# Example:
|
|
# make build-docker-test
|
|
# make compile-with-docker-test
|
|
# make build-docker-dns-srv-test
|
|
# gcloud auth configure-docker
|
|
# make push-docker-dns-srv-test
|
|
# gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com
|
|
# make pull-docker-dns-srv-test
|
|
# make docker-dns-srv-test-certs-run
|
|
# make docker-dns-srv-test-certs-gateway-run
|
|
# make docker-dns-srv-test-certs-wildcard-run
|
|
|
|
build-docker-dns-srv-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
@sed 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' > $(TMP_DOCKERFILE)
|
|
docker build \
|
|
--network=host \
|
|
--tag gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \
|
|
--file ./docker-dns-srv/Dockerfile \
|
|
$(TMP_DOCKERFILE)
|
|
|
|
docker run \
|
|
--rm \
|
|
--dns 127.0.0.1 \
|
|
gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \
|
|
/bin/bash -c "/etc/init.d/bind9 start && cat /dev/null >/etc/hosts && dig +noall +answer SRV _etcd-client-ssl._tcp.etcd.local && dig +noall +answer SRV _etcd-server-ssl._tcp.etcd.local && dig +noall +answer m1.etcd.local m2.etcd.local m3.etcd.local"
|
|
|
|
push-docker-dns-srv-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
docker push gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION)
|
|
|
|
pull-docker-dns-srv-test:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
docker pull gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION)
|
|
|
|
docker-dns-srv-test-certs-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns-srv/certs,destination=/certs \
|
|
gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-srv-test-certs-gateway-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns-srv/certs-gateway,destination=/certs-gateway \
|
|
gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-gateway/run.sh && rm -rf m*.etcd"
|
|
|
|
docker-dns-srv-test-certs-wildcard-run:
|
|
$(info GO_VERSION: $(GO_VERSION))
|
|
$(info HOST_TMP_DIR: $(HOST_TMP_DIR))
|
|
$(info TMP_DIR_MOUNT_FLAG: $(TMP_DIR_MOUNT_FLAG))
|
|
docker run \
|
|
--rm \
|
|
--tty \
|
|
--dns 127.0.0.1 \
|
|
$(TMP_DIR_MOUNT_FLAG) \
|
|
--mount type=bind,source=`pwd`/bin,destination=/etcd \
|
|
--mount type=bind,source=`pwd`/tests/docker-dns-srv/certs-wildcard,destination=/certs-wildcard \
|
|
gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \
|
|
/bin/bash -c "cd /etcd && /certs-wildcard/run.sh && rm -rf m*.etcd"
|