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
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| 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.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | git | No fix yet | — |
| Debian 13 | git | No fix yet | — |
| Debian 12 | git | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| 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)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| 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 | — |
Alpine
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Alpine v3.24 | git | 2.54.1-r0 | — |
| Alpine v3.23 | git | 2.52.1-r0 | — |
Amazon Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| 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
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| 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.
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
- ALAS2023-2026-3445 Important: git security update (Amazon Linux 2023) Amazon Linux Security Center (ALAS) · Nov 12, 2026
- ALAS2-2026-4109 Important: git security update (Amazon Linux 2) Amazon Linux Security Center (ALAS) · Nov 12, 2026
- WID-SEC-2026-4455 git: Mehrere Schwachstellen BSI CERT-Bund (WID) · Nov 11, 2026
- NCSC-2026-0480 Kwetsbaarheid verholpen in GitLab NCSC-NL (Netherlands) · Nov 11, 2026
- WID-SEC-2026-4476 GitLab: Schwachstelle ermöglicht Codeausführung BSI CERT-Bund (WID) · Nov 10, 2026