Git 2.56.1 patches six vulnerabilities, including code execution during a recursive clone
On November 10, 2026 the Git project shipped six security fixes, including arbitrary code execution triggered by recursively cloning a hostile repository. Upgrade to Git 2.56.1 and update everything that bundles it — IDEs, CI runners, review bots — because the trigger is nothing more than a clone.
November 10, 2026. The Git project ships six security fixes. 2.56.1. That is the lead release carrying them, with backports to 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3, and 2.50.2. Arbitrary code execution. That is what the most severe of the six, CVE-2026-111760, makes possible — triggered by recursively cloning a hostile repository. Why it matters: Git is no longer just a developer binary. It is bundled inside IDEs, CI runners, and review bots, and half of these flaws fire on routine operations.
The code-execution flaw: CVE-2026-111760
CVE-2026-111760 is the only one of the six that leads to code execution. Its vector is the recursive clone — git clone --recursive, which fetches a repository and then its submodules. During that process Git validates paths before writing files into the working tree, rejecting paths that would overwrite its own repository metadata (the .git directory).
The bug is an integer truncation: the length of an index entry path is stored in a type that is too narrow, and a long enough value overflows. A crafted repository can therefore present a path that, once truncated, collides with a legitimate directory. Git writes into a location it believes is safe, then reuses that directory — and executes attacker-controlled code. The fix is to reject excessively long index entry paths before their lengths can be truncated.
The concrete scenario fits in one sentence: a developer or pipeline that recursively clones an untrusted repository — a third-party project, an incoming patch, a demo repo — can execute code without ever opening a file. It is a textbook supply-chain vector, in the same family as poisoned packages or malicious hooks, except it requires no interaction beyond the clone itself.
Five more flaws: memory corruption and path traversal
The other five flaws are less dramatic, but two of them hit operations that hosting platforms run constantly.
CVE-2026-113408 — path traversal through a server-advertised HEAD. When cloning an empty repository over Git protocol v2, the server can advertise a symbolic HEAD reference pointing to an unborn branch — one with no commits. A malicious server can make Git write references outside the expected directory. Git now validates the advertised target before accepting it, and extends that validation to other reference names and symbolic-reference targets received over protocol v2.
CVE-2026-114467 — stack corruption when removing signatures. While stripping GPG signatures from a message, Git assumed there would be at most two. A crafted message containing more than two signatures caused stack corruption — a denial of service that can also hit hosting services that perform these merges on behalf of their users. The fix removes the fixed-size array and handles any number of signatures.
CVE-2026-114469 — out-of-bounds reads when applying binary patches. Git rejects patches larger than roughly 1 GiB because its patch code cannot handle them safely. But that check only looked at the compressed input, not the declared uncompressed size. A crafted patch bypasses the check and causes an out-of-bounds read that crashes Git. Git now also checks the declared uncompressed size before processing the patch.
CVE-2026-105437 — heap corruption during large merges. The merge machinery calculates how much memory it needs for a merge result before writing the output; that calculation can overflow when the result is very large. The fix uses size-appropriate types and checked arithmetic, rejecting merges whose output size cannot be represented safely.
CVE-2026-114466 — filesystem access through fast-import streams. git fast-import reads a stream of commands to build a repository; some commands can access files outside the repository, even though Git already restricted them in part. The restriction is now complete.
What makes this batch different: the bundling surface
What changes the real-world severity of this batch is not the CVSS score, but who runs Git. Git is no longer just a tool invoked from the command line. It is bundled into:
- IDEs and editors — VS Code and its derivatives, JetBrains — and their built-in clone functions;
- CI runners and build images that run
git cloneon every commit; - review bots, dependency scanners, and platforms that clone repositories in order to analyze them;
- libraries that bind Git — libgit2, go-git, dulwich — which must be rebuilt against the fixes.
That is exactly GitHub’s recommendation, delivered by Elijah Newren — the maintainer of merge-ort and the author of git-filter-repo, who authored the announcement: update not only Git, but any application that bundles it. An up-to-date IDE protects nothing if its embedded Git is two versions behind.
Checking your exposure in one minute
The check is trivial: compare your Git version against 2.56.1. Two commands cover it.
git --version
git config --get-regexp 'submodule\..*\.url' | wc -l The first prints the binary’s version. If it predates 2.56.1 — or the backport for your maintenance series — you are exposed to CVE-2026-111760. The second is a reminder: if you use submodules, that is precisely the surface of the most severe flaw. For managed fleets, the efficient move is to let the package manager do the work — apt, dnf, brew, or Git for Windows — rather than patching each machine by hand.
For teams that bundle Git into their images, the rule is the same as for any dependency: rebuild the images; do not stop at patching the local binary.
Verdict
If you clone untrusted repositories — third-party projects, incoming patches, demo forks — or if your pipelines recursively clone repositories you do not control, upgrade to Git 2.56.1, or the backport for your series, before your next code review, and rebuild CI images that shipped an older version. CVE-2026-111760 turns a git clone --recursive into code execution: a supply-chain vector that needs no interaction beyond the clone. If your fleet only clones internal repositories and everything is already current, the risk is low — but patch anyway within your normal window: the other five flaws are memory corruption and path traversals that hosting platforms absorb on your behalf.