← Back to scan
File as GitHub Issue repo: etcd-io/etcd

Push this scan report to etcd-io/etcd

Click the green button below to open GitHub’s new-issue form, pre-filled with the report title, summary table, top findings, and an embedded score-card image. No authentication needed — you review on GitHub before submitting. Repobility is credited as the scanner.

Embedded score card image

This image will render at the top of the issue body. Hosted on Repobility, refreshes automatically after re-scans.

Repobility score card

Issue title

Weak Crypto

Curate findings to include

Pick exactly which findings appear in the issue body. By default the top 5 are included. Uncheck noise, check what matters.

Top 5 (default)
Severity Rule Title File:line
CRIT generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive… scripts/genproto.sh:96
CRIT private-key Identified a Private Key, which may compromise cryptographic security and sensitive data … pkg/proxy/fixtures/server.key.insecure:1
CRIT generic-api-key Detected a Generic API Key, potentially exposing access to various services and sensitive… codecov.yml:4
CRIT MINED125 GHA script injection via github.event.pull_request.head.ref in run-step .github/workflows/bump-devcontainer-ver…:45
HIGH MINED004 [MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums). server/etcdserver/api/membership/member…:18
HIGH SEC090 [SEC090] Go: math/rand used near crypto context: math/rand is not cryptographically secur… server/proxy/tcpproxy/userspace.go:20
HIGH SEC090 [SEC090] Go: math/rand used near crypto context: math/rand is not cryptographically secur… client/v3/utils.go:18
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … server/proxy/grpcproxy/cache/store.go:156
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … server/etcdserver/api/rafthttp/peer.go:273
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … client/v3/leasing/cache.go:164
HIGH MINED033 [MINED033] Go Recover Without Log: defer func() { recover() }() that silently swallows pa… pkg/schedule/schedule.go:201
HIGH MINED033 [MINED033] Go Recover Without Log: defer func() { recover() }() that silently swallows pa… client/v3/internal/resolver/resolver.go:81
HIGH MINED033 [MINED033] Go Recover Without Log: defer func() { recover() }() that silently swallows pa… client/v3/concurrency/stm.go:145
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… pkg/netutil/netutil.go:78
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… etcdctl/ctlv3/command/util.go:116
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… client/pkg/testutil/testutil.go:41
HIGH MINED016 [MINED016] Go Error Ignored: _, err := fn() with err not checked. Go anti-pattern. client/v3/concurrency/session.go:112
HIGH MINED016 [MINED016] Go Error Ignored: _, err := fn() with err not checked. Go anti-pattern. client/pkg/fileutil/sync_darwin.go:30
HIGH MINED016 [MINED016] Go Error Ignored: _, err := fn() with err not checked. Go anti-pattern. client/pkg/fileutil/fileutil.go:89
HIGH DKR014 Dockerfile copies the entire context without .dockerignore tests/antithesis/test-template/Dockerfi…:6
HIGH MINED118 Dockerfile FROM `ubuntu:24.04` not pinned by digest tests/antithesis/test-template/Dockerfi…:12
HIGH MINED118 Dockerfile FROM `ubuntu:24.04` not pinned by digest tests/antithesis/server/Dockerfile:67
HIGH MINED128 go.mod replaces `(` — points to a LOCAL path client/v3/go.mod:43
HIGH MINED128 go.mod replaces `(` — points to a LOCAL path tests/go.mod:6
HIGH MINED128 go.mod replaces `(` — points to a LOCAL path etcdctl/go.mod:52
HIGH MINED128 go.mod replaces `(` — points to a LOCAL path cache/go.mod:34
HIGH MINED128 go.mod replaces `(` — points to a LOCAL path etcdutl/go.mod:6
HIGH MINED128 go.mod replaces `(` — points to a LOCAL path server/go.mod:76
HIGH MINED128 go.mod replaces `go.etcd.io/etcd/client/pkg/v3` — points to a LOCAL path pkg/go.mod:34
HIGH MINED128 go.mod replaces `(` — points to a LOCAL path go.mod:6
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 tools/testgrid-analysis/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 tools/testgrid-analysis/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 tools/testgrid-analysis/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 tools/testgrid-analysis/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 tools/testgrid-analysis/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 tools/testgrid-analysis/go.mod
HIGH GO-2026-5032 golang.org/x/image: GO-2026-5032 tools/rw-heatmaps/go.mod
HIGH GO-2026-5031 golang.org/x/image: GO-2026-5031 tools/rw-heatmaps/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 tools/mod/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 tools/mod/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 tools/mod/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 tools/mod/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 tools/mod/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 tools/mod/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 tests/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 tests/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 tests/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 tests/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 tests/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 tests/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 server/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 server/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 server/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 server/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 server/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 server/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 pkg/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 pkg/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 pkg/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 pkg/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 pkg/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 pkg/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 etcdutl/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 etcdutl/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 etcdutl/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 etcdutl/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 etcdutl/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 etcdutl/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 etcdctl/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 etcdctl/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 etcdctl/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 etcdctl/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 etcdctl/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 etcdctl/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 client/v3/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 client/v3/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 client/v3/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 client/v3/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 client/v3/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 client/v3/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 cache/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 cache/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 cache/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 cache/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 cache/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 cache/go.mod
HIGH GO-2026-5030 golang.org/x/net: GO-2026-5030 api/go.mod
HIGH GO-2026-5029 golang.org/x/net: GO-2026-5029 api/go.mod
HIGH GO-2026-5028 golang.org/x/net: GO-2026-5028 api/go.mod
HIGH GO-2026-5027 golang.org/x/net: GO-2026-5027 api/go.mod
HIGH GO-2026-5026 golang.org/x/net: GO-2026-5026 api/go.mod
HIGH GO-2026-5025 golang.org/x/net: GO-2026-5025 api/go.mod
HIGH SEC013 [SEC013] Path Traversal — User Input in File Path: User-controlled input used in file pat… tools/rw-heatmaps/pkg/dataset/dataset.go:68
MED SEC112 [SEC112] Go html/template bypass — text/template used for HTML output, or template.HTML o… etcdctl/ctlv3/command/printer_json.go:96
MED DKR007 Docker build context has no .dockerignore .dockerignore
MED DKR018 Database dump or local database file is included in Docker build context .dockerignore
MED DKR001 Docker final stage has no non-root USER tools/container-images/devcontainer/Doc…:1
MED DKR001 Docker final stage has no non-root USER tests/antithesis/test-template/Dockerfi…:13
MED DKR001 Docker final stage has no non-root USER tests/antithesis/server/Dockerfile:68
LOW ERR003 [ERR003] Ignored Error (Go): Ignoring error return values. server/storage/backend.go:105
LOW ERR003 [ERR003] Ignored Error (Go): Ignoring error return values. server/etcdserver/api/v3lock/v3lockpb/g…:48
LOW AIC003 Duplicated implementation block across source files server/etcdserver/api/v3lock/v3lockpb/g…:8
LOW AIC003 Duplicated implementation block across source files etcdutl/etcdutl/completion_commmand.go:24
LOW AIC003 Duplicated implementation block across source files client/v3/experimental/recipes/queue.go:21
INFO MINED057 [MINED057] Todo Bomb: Code path with a TODO/FIXME/HACK comment that gates correctness — l… pkg/schedule/schedule.go:192
INFO MINED053 [MINED053] Placeholder Default Username: [email protected] / [email protected] / admin/admin… etcdctl/ctlv3/command/snapshot_command.…:41
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… scripts/cherrypick.sh:140
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… etcdctl/ctlv3/command/util.go:100
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… etcdctl/ctlv3/command/global.go:398
INFO MINED060 [MINED060] Go Context No Cancel: context.Background() at request handler boundary leaks g… client/v3/experimental/recipes/watch.go:26
INFO MINED060 [MINED060] Go Context No Cancel: context.Background() at request handler boundary leaks g… client/pkg/transport/tls.go:41
INFO MINED060 [MINED060] Go Context No Cancel: context.Background() at request handler boundary leaks g… client/pkg/transport/listener_tls.go:113
INFO MINED071 [MINED071] Go Panic Call: panic() crashes the process. Should return error in most cases. client/pkg/logutil/log_level.go:27
INFO MINED071 [MINED071] Go Panic Call: panic() crashes the process. Should return error in most cases. client/pkg/fileutil/lock_windows.go:69
INFO MINED071 [MINED071] Go Panic Call: panic() crashes the process. Should return error in most cases. client/pkg/fileutil/filereader.go:53
Reset to top 5 121 findings available (after auto-suppression of test files + won't-fix)

Issue body (markdown)

## Code-quality scan: `etcd-io/etcd`

**Score: 68/100 (B)**  ·  122 findings  ·  scanned 2026-06-05 11:32 UTC  ·  198,508 LOC

| Severity | Count |
|---|---|
| CRITICAL | 4 |
| HIGH | 95 |
| MEDIUM | 6 |
| LOW | 5 |

📊 [Full filterable report](https://repobility.com/scan/ba97197c-2e3b-4bc7-a17c-38a79bdd557b/)  ·  ![scorecard](https://repobility.com/scan/ba97197c-2e3b-4bc7-a17c-38a79bdd557b/report.png?v=1780659147-s2)

### Top findings

1. **CRITICAL** `generic-api-key` — Detected a Generic API Key, potentially exposing access to various services and sensitive 
   `scripts/genproto.sh:96`
2. **CRITICAL** `private-key` — Identified a Private Key, which may compromise cryptographic security and sensitive data e
   `pkg/proxy/fixtures/server.key.insecure:1`
3. **CRITICAL** `generic-api-key` — Detected a Generic API Key, potentially exposing access to various services and sensitive 
   `codecov.yml:4`
4. **CRITICAL** `MINED125` — GHA script injection via github.event.pull_request.head.ref in run-step
   `.github/workflows/bump-devcontainer-version.yml:45` · ✓ Repobility
5. **HIGH** `MINED004` — Weak Crypto
   `server/etcdserver/api/membership/member.go:18` · CWE-327 · ✓ Repobility

---

_Filed automatically. Close this issue if not useful — we won't refile. Full report: https://repobility.com/scan/ba97197c-2e3b-4bc7-a17c-38a79bdd557b/_
Already filed
This repo publishes a SECURITY.md policy and the scan contains 9 Critical/High security finding(s). Public issue filing would violate coordinated disclosure. Submit privately via the project's security reporting channel.
Megaproject â high spam risk
Could not determine 'etcd-io/etcd' star count (GitHub API rate-limited or unreachable). When in doubt about repo size, prefer opening a focused PR or a discussion rather than an issue.

The button opens GitHubâs new-issue page in a new tab. You will see the title + body pre-filled â review, edit if you want, then click GitHubâs "Submit new issue" button. Repobility never posts anything on your behalf.

For real security findings on big repos: use the project's SECURITY.md or private advisory flow instead of a public issue.