Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion etcdutl/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,4 @@ require (
sigs.k8s.io/yaml v1.4.0 // indirect
)

replace go.etcd.io/bbolt => github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15
replace go.etcd.io/bbolt => github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/hasbro17-bbolt"
git -C "$tmp/hasbro17-bbolt" fetch --depth=1 origin b0af58f3a325
git -C "$tmp/hasbro17-bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/v1.4.3

git -C "$tmp/hasbro17-bbolt" diff --stat \
  v1.4.3 b0af58f3a325 -- '*.go' go.mod

git -C "$tmp/hasbro17-bbolt" diff --name-status \
  v1.4.3 b0af58f3a325 -- '*.go' go.mod

Repository: openshift/etcd

Length of output: 254


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- module declarations and replacements ---'
for f in etcdutl/go.mod server/go.mod go.mod tests/go.mod; do
  if [ -f "$f" ]; then
    printf '\n[%s]\n' "$f"
    rg -n -C 3 'bbolt|module ' "$f"
  fi
done

printf '%s\n' '--- fork commit resolution ---'
curl -fsSL 'https://api.github.com/repos/hasbro17/bbolt/commits/b0af58f3a325' |
  jq '{sha: .sha, message: .commit.message, html_url: .html_url}'

printf '%s\n' '--- fork refs and tags ---'
curl -fsSL 'https://api.github.com/repos/hasbro17/bbolt/git/refs/tags/v1.3.7' |
  jq '{ref: .ref, object: .object}'
curl -fsSL 'https://api.github.com/repos/hasbro17/bbolt/git/refs/tags/v1.4.3' |
  jq '{ref: .ref, object: .object}' || true

printf '%s\n' '--- upstream v1.4.3 tag ---'
curl -fsSL 'https://api.github.com/repos/etcd-io/bbolt/git/refs/tags/v1.4.3' |
  jq '{ref: .ref, object: .object}'

Repository: openshift/etcd

Length of output: 2267


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- fork refs ---'
git ls-remote https://github.com/hasbro17/bbolt.git \
  'refs/heads/*' 'refs/tags/v*' |
  rg 'b0af58f3a325|refs/tags/v1\.4\.3|refs/tags/v1\.3\.7|refs/heads'

printf '%s\n' '--- upstream v1.4.3 refs ---'
git ls-remote https://github.com/etcd-io/bbolt.git \
  'refs/tags/v1.4.3' 'refs/tags/v1.4.3^{}'

printf '%s\n' '--- Go proxy pseudo-version metadata ---'
curl -fsSL \
  'https://proxy.golang.org/github.com/hasbro17/bbolt/@v/v1.3.7-0.20260811212650-b0af58f3a325.info' |
  jq .

printf '%s\n' '--- module checksums ---'
for module_version in \
  'github.com/hasbro17/bbolt@v1.3.7-0.20260811212650-b0af58f3a325' \
  'go.etcd.io/bbolt@v1.4.3'; do
  printf '\n[%s]\n' "$module_version"
  curl -fsSL "https://sum.golang.org/lookup/$module_version" || true
done

Repository: openshift/etcd

Length of output: 1676


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/bbolt"

git -C "$tmp/bbolt" fetch --depth=1 origin \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1

git -C "$tmp/bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/upstream-v1.4.3 \
  refs/tags/v1.4.3^{}:refs/remotes/upstream/v1.4.3-commit

printf '%s\n' '--- commits ---'
git -C "$tmp/bbolt" rev-parse \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1 \
  upstream-v1.4.3 \
  upstream/v1.4.3-commit

printf '%s\n' '--- diff summary ---'
git -C "$tmp/bbolt" diff --stat \
  upstream/v1.4.3-commit \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1 \
  -- '*.go' go.mod

printf '%s\n' '--- changed files ---'
git -C "$tmp/bbolt" diff --name-status \
  upstream/v1.4.3-commit \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1 \
  -- '*.go' go.mod

printf '%s\n' '--- module files ---'
git -C "$tmp/bbolt" show \
  upstream/v1.4.3-commit:go.mod
printf '\n[fork]\n'
git -C "$tmp/bbolt" show \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1:go.mod

Repository: openshift/etcd

Length of output: 396


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/bbolt"

git -C "$tmp/bbolt" fetch --depth=1 origin \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1

git -C "$tmp/bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/upstream-v1.4.3

fork_commit="$(git -C "$tmp/bbolt" rev-parse \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1^{commit})"
upstream_commit="$(git -C "$tmp/bbolt" rev-parse \
  refs/tags/upstream-v1.4.3^{commit})"

printf '%s\n' '--- commits ---'
printf 'fork:     %s\n' "$fork_commit"
printf 'upstream: %s\n' "$upstream_commit"

printf '%s\n' '--- diff summary ---'
git -C "$tmp/bbolt" diff --stat \
  "$upstream_commit" "$fork_commit" -- '*.go' go.mod

printf '%s\n' '--- changed files ---'
git -C "$tmp/bbolt" diff --name-status \
  "$upstream_commit" "$fork_commit" -- '*.go' go.mod

printf '%s\n' '--- module files ---'
git -C "$tmp/bbolt" show "$upstream_commit:go.mod"
printf '\n[fork]\n'
git -C "$tmp/bbolt" show "$fork_commit:go.mod"

Repository: openshift/etcd

Length of output: 2195


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT

git clone --filter=blob:none --no-checkout \
  https://github.com/hasbro17/bbolt.git "$tmp/bbolt"

git -C "$tmp/bbolt" fetch --depth=1 origin \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1

git -C "$tmp/bbolt" fetch --depth=1 \
  https://github.com/etcd-io/bbolt.git \
  refs/tags/v1.4.3:refs/tags/upstream-v1.4.3

fork_commit="$(git -C "$tmp/bbolt" rev-parse \
  b0af58f3a3257e164b9c1f397d27766c5f6b8ba1^{commit})"
upstream_commit="$(git -C "$tmp/bbolt" rev-parse \
  refs/tags/upstream-v1.4.3^{commit})"

printf '%s\n' '--- source diff ---'
git -C "$tmp/bbolt" diff --no-ext-diff --unified=80 \
  "$upstream_commit" "$fork_commit" -- \
  bolt_fadvise_linux.go bolt_fadvise_other.go bolt_unix.go

printf '%s\n' '--- local dependency and policy metadata ---'
git ls-files '*go.sum' '*LICENSE*' '*NOTICE*' '*SBOM*' '*provenance*' \
  '.github/workflows/*' |
  sed -n '1,160p'

printf '%s\n' '--- bbolt references in checksums and workflows ---'
rg -n -C 2 'bbolt|cosign|sigstore|provenance|attest|sbom|osv' \
  --glob '*go.sum' --glob '.github/workflows/**' --glob 'Makefile*' \
  --glob 'README*' . || true

Repository: openshift/etcd

Length of output: 10033


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- fork license files ---'
for path in LICENSE COPYING NOTICE; do
  url="https://raw.githubusercontent.com/hasbro17/bbolt/b0af58f3a3257e164b9c1f397d27766c5f6b8ba1/$path"
  status="$(curl -sS -o "/tmp/$path" -w '%{http_code}' "$url" || true)"
  printf '%s: HTTP %s\n' "$path" "$status"
  if [ "$status" = 200 ]; then
    sed -n '1,12p' "/tmp/$path"
  fi
done

printf '%s\n' '--- OSV records for upstream and fork module identities ---'
for module in go.etcd.io/bbolt github.com/hasbro17/bbolt; do
  printf '\n[%s]\n' "$module"
  curl -fsSL -X POST https://api.osv.dev/v1/query \
    -H 'content-type: application/json' \
    --data "{\"package\":{\"ecosystem\":\"Go\",\"name\":\"$module\"}}" |
    jq -r '.vulns[]? | [.id, .summary] | `@tsv`'
done

Repository: openshift/etcd

Length of output: 909


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf '%s\n' '--- release and artifact workflows ---'
for file in $(git ls-files '.github/workflows/*'); do
  if rg -qi 'release|artifact|image|cosign|sigstore|provenance|attest|sbom|sign' "$file"; then
    printf '\n[%s]\n' "$file"
    rg -n -C 3 -i \
      'release|artifact|cosign|sigstore|provenance|attest|sbom|sign' "$file"
  fi
done

Repository: openshift/etcd

Length of output: 2175


Document the fork provenance and validate the Linux mmap change.

The fork matches upstream go.etcd.io/bbolt v1.4.3 except for the mmap advice files. Run the etcdutl and server tests, plus Linux compaction, recovery, and performance checks. Document the need for this fork and provide provenance, SBOM, and artifact-signing evidence. go.sum pins the content, the fork uses the MIT license, and OSV reports no advisories.

📍 Affects 2 files
  • etcdutl/go.mod#L98-L98 (this comment)
  • server/go.mod#L94-L94
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@etcdutl/go.mod` at line 98, Update the bbolt replacements in
etcdutl/go.mod:98 and server/go.mod:94 to document the fork’s provenance and why
it is required for the Linux mmap advice changes, while retaining the pinned
fork version. Add or reference the requested SBOM, MIT-license, OSV, and
artifact-signing evidence, and validate the change with etcdutl and server tests
plus Linux compaction, recovery, and performance checks.

4 changes: 2 additions & 2 deletions etcdutl/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwn
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325 h1:rj74/a/7HN26DqM0uefNm7/dz0hG5QoFKBW/m3UPmPo=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=
Expand All @@ -64,8 +66,6 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15 h1:2I9kSmIGqi4nGqV0JueekeRfvp8QW1tIUMP4/6P2iPg=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,4 @@ require (
sigs.k8s.io/yaml v1.4.0 // indirect
)

replace go.etcd.io/bbolt => github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15
replace go.etcd.io/bbolt => github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

repo="hasbro17/bbolt"
module="github.com/${repo}"
version="v1.3.7-0.20260811212650-b0af58f3a325"
commit="b0af58f3a325"

curl -fsSL "https://api.github.com/repos/${repo}/commits/${commit}" |
  jq -e --arg prefix "${commit}" '.sha | startswith($prefix)'

curl -fsSL "https://api.github.com/repos/${repo}/license?ref=${commit}" |
  jq -r '.license.spdx_id // "UNKNOWN"'

curl -fsSL -X POST "https://api.osv.dev/v1/query" \
  -H "content-type: application/json" \
  -d "{\"package\":{\"name\":\"${module}\",\"ecosystem\":\"Go\"},\"version\":\"${version}\"}" |
  jq '{vulnerabilities: [.vulns[]?.id]}'

while IFS= read -r file; do
  rg -n -F "replace go.etcd.io/bbolt => ${module} ${version}" "$file"
done < <(fd -HI -t f '^go\.mod$')

while IFS= read -r file; do
  rg -n -F "${module} ${version}" "$file"
done < <(fd -HI -t f '^go\.sum$')

fd -HI -t f |
  rg '(^|/)(Makefile|.*\.(yaml|yml|sh|toml|json))$' |
  while IFS= read -r file; do
    rg -n -i 'sbom|cyclonedx|spdx|provenance|slsa|cosign|sigstore|attest' "$file" || true
  done

Repository: openshift/etcd

Length of output: 201


🏁 Script executed:

#!/usr/bin/env bash
set -u

printf '%s\n' '--- replacement declarations ---'
for file in go.mod etcdutl/go.mod server/go.mod tests/go.mod; do
  if [ -f "$file" ]; then
    rg -n -C 2 'go\.etcd\.io/bbolt|github\.com/hasbro17/bbolt' "$file"
  fi
done

printf '%s\n' '--- fork version in sums and module files ---'
rg -n -F 'github.com/hasbro17/bbolt' --glob 'go.sum' --glob 'go.mod' . || true

printf '%s\n' '--- dependency and release metadata files ---'
git ls-files | rg '(^|/)(go\.sum|Makefile|.*\.(yaml|yml|sh|toml|json))$' | sed -n '1,240p'

printf '%s\n' '--- supply-chain controls ---'
rg -n -i 'sbom|cyclonedx|spdx|provenance|slsa|cosign|sigstore|attest|license|osv|vulnerabilit' \
  --glob 'Makefile' --glob '*.yaml' --glob '*.yml' --glob '*.sh' --glob '*.toml' --glob '*.json' . || true

Repository: openshift/etcd

Length of output: 18225


🌐 Web query:

hasbro17/bbolt b0af58f3a325 v1.3.7-0.20260811212650-b0af58f3a325 GitHub

💡 Result:

The GitHub repository hasbro17/bbolt is an unofficial fork of the bbolt key/value database [1]. The primary, authoritative repository for bbolt is etcd-io/bbolt [2][3][4]. The specific identifier v1.3.7-0.20260811212650-b0af58f3a325 is a pseudo-version string typically generated by the Go module system (Go Modules) [3]. This format indicates a dependency on a specific commit (b0af58f3a325) from the repository, dated August 11, 2026 [1][3]. Because hasbro17/bbolt is not the official repository, this version string likely reflects a user-specific fork or a dependency resolution quirk rather than an official release from the maintainers of the bbolt project [1][4]. The official bbolt project uses semantic versioning and is managed under the etcd-io organization [4]. As of August 2026, the latest official release for bbolt is v1.5.0 [4]. Users are strongly advised to use the official module path, go.etcd.io/bbolt, which points to the etcd-io/bbolt repository, to ensure they are using the maintained and stable version of the software [3].

Citations:


🌐 Web query:

site:github.com/hasbro17/bbolt license bbolt

💡 Result:

The bbolt database project is licensed under the MIT License [1]. This is a permissive free software license that allows for broad use, modification, and distribution of the software [1].

Citations:


🌐 Web query:

OSV github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325

💡 Result:

The OSV (Open Source Vulnerabilities) database does not contain a specific entry for the fork github.com/hasbro17/bbolt [1]. However, the primary upstream library for bbolt, go.etcd.io/bbolt, has been associated with vulnerability GO-2026-4923 (also tracked as CVE-2026-33817) [2][3][4]. This vulnerability involves an index out-of-range panic when calling Bucket.Stats on a branch page with zero elements, typically caused by database corruption [4]. While this issue was patched in the official etcd-io/bbolt repository [4], it is important to verify if the hasbro17 fork has incorporated these or other upstream security patches, as independent forks may diverge from the official maintenance track [1].

Citations:


🏁 Script executed:

#!/usr/bin/env bash
set -u

module='github.com/hasbro17/bbolt'
version='v1.3.7-0.20260811212650-b0af58f3a325'
encoded_module='github.com/hasbro17/bbolt'

printf '%s\n' '--- Go proxy metadata ---'
for suffix in info mod zip; do
  url="https://proxy.golang.org/${encoded_module}/@v/${version}.${suffix}"
  printf '%s\n' "$url"
  curl -fsSL "$url" | if [ "$suffix" = zip ]; then wc -c; else sed -n '1,80p'; fi || true
done

printf '%s\n' '--- Go checksum database record ---'
curl -fsSL "https://sum.golang.org/lookup/${module}@${version}" | sed -n '1,120p' || true

printf '%s\n' '--- Fork source metadata at the pinned commit ---'
for path in LICENSE COPYING go.mod; do
  url="https://raw.githubusercontent.com/hasbro17/bbolt/b0af58f3a325/${path}"
  printf '%s\n' "$url"
  curl -fsSL "$url" | sed -n '1,40p' || true
done

printf '%s\n' '--- BOM entries for bbolt ---'
for file in bill-of-materials.json bill-of-materials.override.json; do
  if [ -f "$file" ]; then
    printf '%s\n' "$file"
    jq -r '.. | objects | select((tostring | test("bbolt"; "i"))) ' "$file" 2>/dev/null | sed -n '1,100p'
  fi
done

printf '%s\n' '--- release and security workflow controls ---'
for file in .github/workflows/verify-released-assets.yaml .github/workflows/scorecards.yml .github/workflows/codeql-analysis.yml Makefile scripts/build-release.sh scripts/release.sh scripts/updatebom.sh; do
  if [ -f "$file" ]; then
    printf '%s\n' "--- $file"
    rg -n -i -C 2 'sbom|cyclonedx|spdx|provenance|slsa|cosign|sigstore|attest|license|vulnerabil|bill-of-materials' "$file" || true
  fi
done

Repository: openshift/etcd

Length of output: 5198


🏁 Script executed:

#!/usr/bin/env bash
set -u

python3 - <<'PY'
from pathlib import Path
import re

version = "v1.3.7-0.20260811212650-b0af58f3a325"
want = f"github.com/hasbro17/bbolt {version}"
files = ["go.sum", "etcdutl/go.sum", "server/go.sum", "tests/go.sum"]

for path in files:
    text = Path(path).read_text()
    matches = [line for line in text.splitlines()
               if line.startswith(want + " ")]
    print(f"{path}: {len(matches)} content checksum line(s)")
    for line in matches:
        print("  " + line)
    mod_matches = [line for line in text.splitlines()
                   if line.startswith(want + "/go.mod ")]
    print(f"{path}: {len(mod_matches)} go.mod checksum line(s)")
PY

Repository: openshift/etcd

Length of output: 922


🌐 Web query:

hasbro17 bbolt b0af58f3a325 LICENSE raw.githubusercontent.com

💡 Result:

The repository hasbro17/bbolt is a fork of the popular embedded key/value database for Go [1][2]. The project is licensed under the MIT License, which is standard for the bbolt project [1][3]. The specific reference "b0af58f3a325" appears to be an abbreviated git commit hash associated with the bbolt codebase, though it does not map to a primary branch or tag in the main etcd-io/bbolt repository [2]. Projects like this often maintain fork-specific history, but the core license terms for bbolt projects remain consistent with the original MIT license created by Ben Johnson [4][5][1][2]. If you are inspecting this file from a raw GitHub URL, it is retrieving the MIT license text from that specific point in the repository's history [4][5]. For production or development purposes, it is recommended to use the actively maintained version at github.com/etcd-io/bbolt [2][3].

Citations:


Record the fork in the supply-chain manifest before merging.

The four go.sum files authenticate the pinned commit, and the fork includes the MIT license. However, bill-of-materials.json identifies the dependency only as go.etcd.io/bbolt, not github.com/hasbro17/bbolt. Update the BOM to record the replacement source and commit. Document the fork’s vulnerability review, including upstream GO-2026-4923, and add signed provenance for release artifacts.

📍 Affects 4 files
  • go.mod#L105-L105 (this comment)
  • etcdutl/go.mod#L98-L98
  • server/go.mod#L94-L94
  • tests/go.mod#L110-L110
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@go.mod` at line 105, Record the bbolt fork in bill-of-materials.json by
replacing go.etcd.io/bbolt with github.com/hasbro17/bbolt and its pinned commit,
documenting the fork’s vulnerability review including GO-2026-4923, and adding
signed provenance for release artifacts. Apply the corresponding
dependency-source metadata update for go.mod:105, etcdutl/go.mod:98,
server/go.mod:94, and tests/go.mod:110; these four sites require no direct code
change beyond ensuring the BOM reflects each replacement consistently.

Source: Path instructions

4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwn
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325 h1:rj74/a/7HN26DqM0uefNm7/dz0hG5QoFKBW/m3UPmPo=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=
Expand Down Expand Up @@ -100,8 +102,6 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15 h1:2I9kSmIGqi4nGqV0JueekeRfvp8QW1tIUMP4/6P2iPg=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
2 changes: 1 addition & 1 deletion server/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,4 @@ replace go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY

replace go.etcd.io/tests/v3 => ./FORBIDDEN_DEPENDENCY

replace go.etcd.io/bbolt => github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15
replace go.etcd.io/bbolt => github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325
4 changes: 2 additions & 2 deletions server/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwn
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325 h1:rj74/a/7HN26DqM0uefNm7/dz0hG5QoFKBW/m3UPmPo=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=
Expand All @@ -83,8 +85,6 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15 h1:2I9kSmIGqi4nGqV0JueekeRfvp8QW1tIUMP4/6P2iPg=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
2 changes: 1 addition & 1 deletion tests/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,4 @@ require (
sigs.k8s.io/yaml v1.4.0 // indirect
)

replace go.etcd.io/bbolt => github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15
replace go.etcd.io/bbolt => github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325
4 changes: 2 additions & 2 deletions tests/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwn
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325 h1:rj74/a/7HN26DqM0uefNm7/dz0hG5QoFKBW/m3UPmPo=
github.com/hasbro17/bbolt v1.3.7-0.20260811212650-b0af58f3a325/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=
Expand Down Expand Up @@ -112,8 +114,6 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15 h1:2I9kSmIGqi4nGqV0JueekeRfvp8QW1tIUMP4/6P2iPg=
github.com/openshift/bbolt v0.0.0-20260806041816-148dcef86a15/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down