GHSA-m7cr-m3pv-hgrp

    Dashboard / Vulnerabilities / GHSA-m7cr-m3pv-hgrp

    GHSA-m7cr-m3pv-hgrp

    Published: 19 May 2026Last Modified: 10 Sept 2026

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

    Details: ### 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 `sq_quote_buf` 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 `$SSH_ORIGINAL_COMMAND`), 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 `sq_quote_buf` 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:

    Affected packages

    Package

    Name: github.com/go-git/go-git/v5

    Purl: pkg:golang/github.com/go-git/go-git/v5

    Affected ranges

    Type: SEMVER

    Events:

    Introduced- 0
    Fixed -5.19.1

    Affected versions

    Common Vulnerability Scoring System

    Attack Vector
    Network
    Adjacent
    Local
    Physical
    Privileges Required
    None
    Low
    High
    User Interaction
    None
    Required
    Scope
    Unchanged
    Changed
    Confidentiality
    None
    Low
    High
    Integrity
    None
    Low
    High
    Availability
    None
    Low
    High