CVE-2026-45570: go-git: Improper single-quote escaping in go-git SSH transport

Published May 19, 2026
·
Updated

Impact

go-git's SSH transport constructs the remote exec command by wrapping the repository path in single quotes without escaping single quotes embedded inside the path. This diverges from canonical Git, which shell-quotes the path through sqquotebuf so that an embedded ' becomes the '\'' close-escape-reopen sequence and the whole path round-trips as a single quoted argument.

A repository path containing a single quote can therefore break out of the quoted region in the exec command and be appended as additional shell tokens. On SSH servers that evaluate the exec command through a shell (for example a user account whose login shell is /bin/sh or /bin/bash, or a ForceCommand wrapper that re-evaluates $SSHORIGINALCOMMAND), those additional tokens execute in that account's command-execution context. SSH servers that tokenize the exec command without shell evaluation, including the canonical git-shell setup, are not affected.

The vulnerable behaviour is on the SSH server side, not in go-git: the same bytes can be produced by any SSH client. The change in go-git is defense-in-depth that restores parity with canonical Git's wire format and prevents go-git from being a vehicle for reaching shell-evaluating servers through attacker-influenced repository paths.

Patches

Users should upgrade to a patched version in order to mitigate this issue. The fix ports sqquotebuf from canonical Git into go-git's SSH transport so that the wire output is byte-identical to what git itself would send for the same input.

Versions prior to v5 are likely to be affected, users are recommended to upgrade to a supported go-git version.

Credit

Thanks to @N0zoM1z0 for reporting this to the go-git project. :bow:

Other sources

go-git is an extensible git implementation library written in pure Go. Prior to 5.19.1 and 6.0.0-alpha.4, go-git's SSH transport constructs the remote exec command by wrapping the repository path in single quotes without escaping single quotes embedded inside the path. A repository path containing a single quote can therefore break out of the quoted region in the exec command and be appended as additional shell tokens. This vulnerability is fixed in 5.19.1 and 6.0.0-alpha.4.

MITRE

go-git: Improper single-quote escaping in go-git SSH transport

Microsoft

Affected Software

8 affected componentsFixes available
go/github.com/go-git/go-git<=4.7.0
go/github.com/go-git/go-git/v6<=6.0.0-alpha.3
6.0.0-alpha.4
go/github.com/go-git/go-git/v5<=5.19.0
5.19.1
go-git project Go-git Go<5.19.1
go-git project Go-git Go=6.0.0-alpha1
go-git project Go-git Go=6.0.0-alpha2
go-git project Go-git Go=6.0.0-alpha3
Microsoft azl3 packer 1.9.5-16<1.9.5-17
1.9.5-17

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/go-git/go-git/v6 to a version that resolves this vulnerability.

    Fixed in 6.0.0-alpha.4
  2. Upgrade

    Upgrade go/github.com/go-git/go-git/v5 to a version that resolves this vulnerability.

    Fixed in 5.19.1
  3. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 1.9.5-17
  4. Upgrade

    Upgrade go-git to a version that resolves this vulnerability.

    Fixed in 5.19.1
  5. Upgrade

    Upgrade go-git to a version that resolves this vulnerability.

    Fixed in 6.0.0-alpha.4
  6. Compensating control

    On SSH servers that evaluate the exec command through a shell (e.g., user login shells like /bin/sh or /bin/bash, or a ForceCommand wrapper that re-evaluates $SSH_ORIGINAL_COMMAND), ensure repository paths cannot influence remote exec command tokenization; if possible, use SSH configurations that tokenize exec without shell evaluation (e.g., canonical git-shell setup).

Event History

May 19, 2026
Advisory Published
via GitHub·03:21 PM
Data Sourced
via GitHub·03:21 PM
DescriptionWeaknessAffected Software
May 27, 2026
CVE Published
via MITRE·02:59 PM
Data Sourced
via MITRE·02:59 PM
DescriptionWeakness
Data Sourced
via NVD·03:16 PM
DescriptionSeverityWeaknessAffected Software
May 28, 2026
Data Sourced
via Microsoft·08:07 AM
DescriptionSeverityWeakness
Data Sourced
via Microsoft·08:07 AM
Affected Software
Updated
via Microsoft·08:07 AM
DescriptionSeverity

Frequently Asked Questions

1

What is the severity of CVE-2026-45570?

CVE-2026-45570 is considered a medium severity vulnerability due to improper handling of single quotes in SSH commands.

2

How do I fix CVE-2026-45570?

To fix CVE-2026-45570, upgrade to go-git version 5.19.1, 6.0.0-alpha.4 or later.

3

What versions of go-git are affected by CVE-2026-45570?

CVE-2026-45570 affects go-git versions up to and including 4.7.0, 5.19.0, and 6.0.0-alpha.3.

4

What causes CVE-2026-45570?

CVE-2026-45570 is caused by go-git's SSH transport improperly wrapping repository paths in single quotes without escaping embedded single quotes.

5

What software is impacted by CVE-2026-45570?

The software impacted by CVE-2026-45570 is go-git and its associated versions.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203