Skip to content

Update module github.com/go-git/go-git/v5 to v5.19.2 [SECURITY] (main) - #3473

Merged
renovate[bot] merged 1 commit into
mainfrom
renovate/main-go-github.com-go-git-go-git-v5-vulnerability
Aug 26, 2026
Merged

Update module github.com/go-git/go-git/v5 to v5.19.2 [SECURITY] (main)#3473
renovate[bot] merged 1 commit into
mainfrom
renovate/main-go-github.com-go-git-go-git-v5-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
github.com/go-git/go-git/v5 v5.19.1v5.19.2 age adoption passing confidence

go-git: Worktree operations may follow symlinks

CVE-2026-71556 / GHSA-hc8v-wwc9-vgxm

More information

Details

Impact

A symlink traversal issue in go-git could allow worktree operations to modify files outside the intended worktree path.

The worktreeFilesystem wrapper rejected dangerous path strings, including paths containing .git, parent-directory components, or control characters. However, it did not prevent filesystem operations from following symbolic links that were already present in the worktree.

As a result, a path that is safe when evaluated as a string could still resolve into the repository's Git metadata directory. For example, if s is a symbolic link to .git, writing to s/config would modify .git/config.

A symbolic link at the final path component could also be followed. For example, if s points directly to .git/config, opening s for writing with truncation could overwrite the repository configuration.

Exploitation requires an attacker to be able to introduce or control a symbolic link in the worktree and cause the application to perform a write through that path.

Applications using storage/memory for their Storer, or go-billy/memfs for their Worktree, are not affected by this vulnerability.

Patches

The issue has been addressed by making the worktree filesystem wrapper a symlink-safe boundary.

Worktree operations now reject paths where an existing symbolic link in any path component could cause the operation to escape the intended worktree location, including symbolic links at the final component.

Users of filesystem-backed worktrees should upgrade to a patched version.

Credits

Thanks to @​kodareef5 for reporting this issue and working with the go-git security team toward its resolution. 🥇
We would also like to thank @​HughLewis20, who independently reported the same issue while a fix was already in progress.

Severity

  • CVSS Score: 7.1 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


go-git: Malicious reference names may modify files outside the reference storage

CVE-2026-71557 / GHSA-qgq7-7hm3-q39j

More information

Details

Impact

A path traversal issue in go-git could allow malicious reference names to access files outside the repository's intended reference storage.

Loose references are stored under .git/<reference-name>. The reference name was previously used as a path without verifying that the resolved path remained within the reference storage. A name such as refs/heads/../../config could therefore resolve to unrelated repository metadata such as .git/config or .git/HEAD.

A malicious Git server could advertise such a reference name. The name may also survive refspec mapping; for example, it could be mapped to refs/remotes/origin/../../config during a clone or fetch operation.

This vulnerability affects filesystem-backed repositories using the storage/filesystem package and its dotgit reference storage. Users relying exclusively on the in-memory storage implementation, storage/memory, are not affected, because reference names are not resolved as filesystem paths.

Exploitation requires an application using go-git with filesystem-backed storage to interact with a malicious Git server or otherwise process attacker-controlled reference names.

Patches

The issue has been addressed by validating reference names at the dotgit storage entry points and rejecting names whose resolved paths could escape the reference storage.

Users of filesystem-backed storage should upgrade to a patched version.

Workarounds

Applications that exclusively use storage/memory are not affected and do not require a workaround for this vulnerability.

For applications using filesystem-backed storage, avoid cloning from or fetching from untrusted Git servers until an upgrade is possible.

Applications that directly construct or process reference names may also validate them before passing them to filesystem-backed go-git storage. Application-level validation should only be considered a temporary mitigation and does not replace upgrading to a patched version.

References
Credits

Thanks to @​Saku0512 for reporting this issue and @​Sahana2524 for proposing the initial fix. 🙇

Severity

  • CVSS Score: 6.3 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

go-git/go-git (github.com/go-git/go-git/v5)

v5.19.2

Compare Source

What's Changed

Full Changelog: go-git/go-git@v5.19.1...v5.19.2


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot enabled auto-merge August 7, 2026 17:25
@renovate

renovate Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

ℹ️ Artifact update notice

File name: acceptance/go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 2 additional dependencies were updated

Details:

Package Change
golang.org/x/mod v0.36.0 -> v0.37.0
golang.org/x/text v0.38.0 -> v0.39.0
File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 3 additional dependencies were updated

Details:

Package Change
golang.org/x/text v0.38.0 -> v0.39.0
golang.org/x/mod v0.36.0 -> v0.37.0
golang.org/x/tools v0.45.0 -> v0.47.0

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 7, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 5:27 PM UTC · Completed 5:33 PM UTC

Commit: 87c4a29 · View workflow run →

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 7, 2026

Copy link
Copy Markdown

Looks good to me

Previous run

Looks good to me

Previous run (2)

Looks good to me

Previous run (3)

Looks good to me

Previous run (4)

Looks good to me

Previous run (5)

Looks good to me


Labels: PR is a Go dependency version bump

Previous run (6)

Looks good to me

Previous run (7)

Looks good to me

Previous run (8)

Looks good to me

Previous run (9)

Looks good to me

Previous run (10)

Looks good to me

Previous run (11)

Looks good to me

Previous run (12)

Looks good to me

Previous run (13)

Looks good to me

Previous run (14)

Looks good to me

Previous run (15)

Looks good to me

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review fullsend-ai-review Bot added the ready-for-merge All reviewers approved — ready to merge label Aug 7, 2026
@codecov

codecov Bot commented Aug 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
acceptance 54.46% <ø> (ø)
generative 12.27% <ø> (ø)
integration 23.59% <ø> (ø)
unit 72.21% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from 314f440 to c7574b2 Compare August 7, 2026 20:20
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 7, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 8:22 PM UTC · Completed 8:27 PM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@renovate renovate Bot changed the title Update module github.com/go-git/go-git/v5 to v5.19.2 [SECURITY] (main) Update module github.com/go-git/go-git/v5 to v5.19.2 [SECURITY] (main) - autoclosed Aug 8, 2026
@renovate renovate Bot closed this Aug 8, 2026
auto-merge was automatically disabled August 8, 2026 14:03

Pull request was closed

@renovate
renovate Bot deleted the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch August 8, 2026 14:03
@fullsend-ai-retro

fullsend-ai-retro Bot commented Aug 8, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 2:04 PM UTC · Completed 2:17 PM UTC

Commit: 87c4a29 · View workflow run →

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #3473 — Renovate security update for go-git/go-git/v5 (autoclosed)

Timeline

  1. Aug 7, 17:25 UTC — Renovate opened PR #3473 to bump go-git/go-git/v5 from v5.19.1 to v5.19.2, addressing CVE-2026-71556 (CVSS 7.1 High, symlink traversal) and CVE-2026-71557 (CVSS 6.3 Medium, reference name path traversal). Changes: 4 files (go.mod/go.sum in root and acceptance), 23 lines added/deleted.
  2. Aug 7, 17:25–17:33 UTC — Review agent run 31202244976 dispatched. Classified the PR as "mechanical/value-only." Dispatched correctness (no findings) and style-conventions (failed — Sonnet model unavailable, recorded as info). Security sub-agent was not dispatched because the diff only touches go.mod/go.sum, which don't match auth/RBAC/permissions/secrets criteria. Verdict: APPROVED. Cost: $1.42.
  3. Aug 7, 20:20 UTC — PR rebased by Renovate. Review agent run 31215486430 dispatched again. Same triage, same verdict: APPROVED. Style-conventions failed again but succeeded on retry with Haiku. Cost: $1.19.
  4. Aug 8, 14:03 UTC — Renovate autoclosed the PR. The go-git v5.19.2 update was folded into the existing grouped PR #3019 ("Update go modules (main) (patch)"), which has been open since October 2025.
  5. Result: The security fix was never merged. The go.mod on main still shows go-git/go-git/v5 v5.19.1. Both CVEs remain unpatched. Total review cost wasted: $2.61.

Workflow quality

The review agent performed correctly within its current design constraints. It correctly classified a mechanical dependency bump, verified version consistency across both module directories, checked for PR body injection patterns, and approved appropriately. The root problem is not in the agent workflow — it's in the Renovate configuration that caused a security-specific PR to be folded into a slow-moving grouped PR before it could merge.

Evidence for existing open issues (not proposing duplicates)

Proposals filed

@fullsend-ai-review

fullsend-ai-review Bot commented Aug 8, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 2:31 PM UTC · Completed 2:38 PM UTC

Commit: 87c4a29 · View workflow run →

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from 538fd8b to 04747d3 Compare August 13, 2026 20:41
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 13, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 8:43 PM UTC · Completed 8:49 PM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from 04747d3 to cefefe1 Compare August 14, 2026 16:22
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 14, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 4:23 PM UTC · Completed 4:28 PM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from cefefe1 to ee34cbb Compare August 18, 2026 18:32
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 18, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 6:33 PM UTC · Completed 6:38 PM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review fullsend-ai-review Bot added the dependencies Pull requests that update a dependency file label Aug 18, 2026
@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from ee34cbb to f683ecc Compare August 18, 2026 21:31
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 18, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:32 PM UTC · Completed 9:38 PM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from f683ecc to 85f846d Compare August 18, 2026 21:42
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 18, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:43 PM UTC · Completed 9:48 PM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from 85f846d to 5d8e7f3 Compare August 19, 2026 08:41
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 19, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 8:42 AM UTC · Completed 8:50 AM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from 5d8e7f3 to 4ee0a0b Compare August 19, 2026 09:33
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 19, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:34 AM UTC · Completed 9:41 AM UTC

Commit: 87c4a29 · View workflow run →

fullsend-ai-review[bot]

This comment was marked as outdated.

@renovate
renovate Bot force-pushed the renovate/main-go-github.com-go-git-go-git-v5-vulnerability branch from 4ee0a0b to 572fc55 Compare August 19, 2026 14:02
@fullsend-ai-review

fullsend-ai-review Bot commented Aug 19, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 2:04 PM UTC · Completed 2:10 PM UTC

Commit: 87c4a29 · View workflow run →

@renovate
renovate Bot merged commit f712ec1 into main Aug 26, 2026
22 checks passed
@fullsend-ai-retro

fullsend-ai-retro Bot commented Aug 26, 2026

Copy link
Copy Markdown

🤖 Finished Retro · ✅ Success · Started 11:07 AM UTC · Completed 11:20 AM UTC

Commit: 87c4a29 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.47

@fullsend-ai-retro

Copy link
Copy Markdown

Retro: PR #3473 — Renovate security bump for go-git v5.19.2

This PR was a Renovate bot security update bumping go-git/go-git/v5 from v5.19.1 to v5.19.2, addressing CVE-2026-71556 (CVSS 7.1, symlink traversal) and CVE-2026-71557 (CVSS 6.3, path traversal in reference names). It touched 4 files (go.mod, go.sum, acceptance/go.mod, acceptance/go.sum) with 23 additions and 23 deletions.

Timeline

  • Aug 7: Renovate opened the PR. First review agent run approved (~$1.42). Security sub-agent was skipped (agent reasoned go.mod/go.sum are not security code).
  • Aug 7–8: Second review run after rebase, same verdict. First retro triggered when Renovate briefly autoclosed the PR into grouped PR Update go modules (main) (patch) #3019.
  • Aug 8–19: Renovate rebased the PR 14+ more times. Each rebase triggered a new review agent run. All 16 runs produced the same "Looks good to me" verdict.
  • Aug 26: Human reviewer (dheerajodha) approved. PR merged via automerge 9 seconds later — 19 days after opening.

Key observations

1. 16 redundant review runs (~$22 total cost). Every Renovate rebase dispatched a full review agent run, each costing $1.11–$1.61. All 16 produced identical approvals with zero findings. Adding the first retro run ($4.81), total agent spend on this 4-file dependency bump was approximately $27.

2. Security sub-agent dispatch inconsistency. Run 1 (Aug 7, fullsend v0.35.0) skipped the security sub-agent, reasoning that go.mod/go.sum version strings are not auth/RBAC/secrets code. Run 17 (Aug 19, fullsend v0.36.0) dispatched it, reasoning that go.mod/go.sum count as config files and the PR is tagged [SECURITY]. The inconsistency may reflect agent definition changes between fullsend-ai/agents@91f61f3 and @6bdcab6, or non-deterministic LLM reasoning.

3. Style-conventions model failure on every run. The Sonnet-tier style-conventions sub-agent failed due to model unavailability on both sampled runs (and likely all 16). Each failure was handled gracefully (info-level, suppressed), but the sub-agent never produced a result across the entire PR lifecycle.

4. 19-day merge latency for a security fix. Two CVEs with CVSS scores of 7.1 and 6.3 remained unpatched for nearly three weeks, partly due to Renovate grouping dynamics (documented in the previous retro).

Existing issue coverage

All improvement areas identified are covered by existing open issues. This retro provides additional quantitative evidence (16 runs, ~$22 cost, 19-day latency) for the following:

No new proposals are warranted — the existing issues comprehensively cover all identified improvements. The quantitative evidence from this retro (16 runs at ~$22 for a single dependency bump) strengthens the prioritization case for fullsend#2587 (dispatch cap) and fullsend#4596 (rebase dedup) in particular.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file main ready-for-merge All reviewers approved — ready to merge renovate size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant