Skip to content
OpenAdvisories
High · 7.5 Public exploit CVE-2026-105437 EUVD-2026-122614GHSA-m7r7-8v36-j77r

Affected versions of Git have a heap buffer overflow in the three-way merge code (xdiff), which an attacker can trigger through a repositor…

Published Nov 10, 2026 · Assigned by GitLab

Description

Affected versions of Git have a heap buffer overflow in the three-way merge
code (xdiff), which an attacker can trigger through a repository they
control.

When Git merges a file, it first adds up the size of the merged
output, allocates a buffer of that size, and then writes the output into
it. That total was kept in a 32-bit signed integer. The
conflict-marker-size attribute, which can be set from a committed
.gitattributes file, accepts any positive integer, and the markers are
written several times for every conflict. A small file with a huge marker
size and many separate conflicts can therefore push the total past 4 GiB,
so the integer wraps to a small value and Git writes attacker-controlled
merge output past the end of a buffer that is too small. At minimum this
crashes Git, and because the overflow is large and its contents are largely
attacker-controlled, worse heap corruption is possible.

Any command that does a textual three-way merge can trigger it, such
as git-merge(1), git-rebase(1), git-cherry-pick(1), and
git-merge-tree(1). The latter is most likely a target for Git forges,
which might use git-merge-tree(1) on the server-side to check
mergeability. When the server reads attributes from trees in the
repository (for example through attr.tree or --attr-source), any
user who can push branches and request that they be merged (for
example by opening a pull or merge request) can trigger the overflow
without anyone else doing anything, and the data they push is small
because the oversized output only appears during the merge.

The problem has been patched by computing the size as size_t and
checking every addition for overflow, so Git stops with an error
instead of overflowing.

Servers that cannot upgrade right away can add

* conflict-marker-size=7

to each repository's info/attributes as a workaround, which overrides
any in-tree .gitattributes, or turn off server-side mergeability checks for
untrusted repositories.

Affected products

VendorProductAffectedFixed
git-for-windows Git 2.52.0-rc0 <2.52.1 —
git-for-windows Git 2.51.0-rc0 <2.51.3 —
git-for-windows Git 2.54.0-rc0 <2.54.1 —
git-for-windows Git 2.53.0-rc0 <2.53.1 —
git-for-windows Git 2.56.0-rc0 <2.56.1 —
git-for-windows Git 2.50.0-rc0 <2.50.2 —
git-for-windows Git 0 <2.49.1 —
git-for-windows Git 2.55.0-rc0 <2.55.1 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 git No fix yet —
Debian 13 git No fix yet —
Debian 12 git No fix yet —
ReleasePackageFixed inAdvisory
Ubuntu 26.10 git No fix yet —
Ubuntu 26.04 LTS git No fix yet —
Ubuntu 24.04 LTS git No fix yet —
Ubuntu 22.04 LTS git No fix yet —
Show 3 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu Pro 20.04 LTS git No fix yet —
Ubuntu Pro 18.04 LTS git No fix yet —
Ubuntu Pro 16.04 LTS git No fix yet —
ReleasePackageFixed inAdvisory
Alpine v3.24 git 2.54.1-r0 —
Alpine v3.23 git 2.52.1-r0 —

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 git +16 2.50.1-1.amzn2023.0.2 ALAS2023-2026-3445
Amazon Linux 2 git +16 2.47.3-1.amzn2.0.2 ALAS2-2026-4109

Azure Linux

ReleasePackageFixed inAdvisory
Azure Linux 3 git No fix yet —

Public exploits

Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.

Third-party code, not reviewed by us. Public PoCs are sometimes fake or contain malware. Read the code first and run it only in an isolated lab, against systems you are authorised to test.

GitHub 1 repository

  • googlesky/CVE-2026-105437 ★ 0 · Nov 11, 2026

    PoC for CVE-2026-105437 — Git's three-way merge (xdiff/xmerge.c) sizes the merge output buffer in a 32-bit int, so a committed conflict-marker-size gitattribute plus many conflicts overflows it and t…

Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.

Advisories 5

References