CVE-2026-47734
MediumCVSS 5.7Exploitation Probability (EPSS)
Low risk9th percentile - higher than 9% of all known CVEs
Summary
A vulnerability in Dulwich (versions 0.1.0 through 1.2.4) allows a client with push access to send a crafted thin pack (~174 bytes) whose delta header declares a huge dest_size. When processed by add_thin_pack/apply_delta, it allocates hundreds of MB of memory, potentially causing resource exhaustion.
Risk Assessment
An attacker with push privileges can cause a denial of service (DoS) by excessive memory consumption, potentially destabilizing or crashing the Dulwich-based Git server.
Recommendation
Upgrade Dulwich to version 1.2.5 or later and set receive.maxInputSize in the server's repository config to a reasonable limit to restrict the maximum pack size.
Other vulnerabilities in Dulwich
See all- CVE-2015-0838High
Buffer overflow in the C implementation of the apply_delta function in _pack.c in Dulwich before version 0.9.9 allows remote attackers to execute arbitrary code via a crafted pack file.
- CVE-2014-9706High
The build_index_from_tree function in index.py in Dulwich before version 0.9.9 allows remote attackers to execute arbitrary code via a commit with a directory path starting with .git/, which is not properly handled when checking out a working tree.
- CVE-2017-16228Critical
Dulwich before version 0.18.5, when using an SSH subprocess, allows remote attackers to execute arbitrary commands via an ssh URL with an initial dash character in the hostname.
- CVE-2026-38974Medium
Dulwich through version 1.1.0 is missing SSH host key verification in contrib/paramiko_vendor.py. This means that during SSH connections, the server's public key is not checked for trustworthiness.
- CVE-2026-52726High
Dulwich versions 0.23.2 through 1.2.5 do not validate submodule paths during recursive clone. An attacker can craft a malicious .gitmodules and gitlink tree with path .git/hooks, causing files to be written into the victim's .git/hooks directory. Executable files are then run on any hook invocation, leading to remote code execution.
- CVE-2026-47712Low
A vulnerability in Dulwich (versions 0.24.0 through 1.2.4) allows writing patch files outside the intended directory via a malicious commit subject. The format_patch function derives filenames from commit subjects without sanitizing path separators or parent-directory components.
- CVE-2026-42563High
A vulnerability in the Dulwich library (versions 0.24.0 through 1.2.4) allows arbitrary command execution. An attacker can craft a malicious file path in a Git branch, which is substituted into the merge driver command via the %P placeholder and executed with shell=True when a victim merges the branch.
- CVE-2026-42305High
A vulnerability in the Dulwich library (versions 0.10.0 through 1.2.4) allows remote code execution via arbitrary file write when cloning or checking out a malicious Git repository on Windows. The issue stems from improper validation of path elements that can contain bytes interpreted by Windows as structural path syntax. Additionally, the core.protectNTFS and core.protectHFS security settings were silently ignored due to configuration bugs.
Original NVD description (English source)
Dulwich is a pure-Python implementation of the Git file formats and protocols. Starting in version 0.1.0 and prior to version 1.2.5, a client with push access could push a tiny crafted thin pack (~174 bytes) whose delta header declares a huge dest_size. When dulwich ingested it via add_thin_pack / apply_delta, it would allocate hundreds of MB of memory based on that attacker-controlled size, with no relationship to the actual bytes received. Operators running a Dulwich-based Git server that exposes git-receive-pack (i.e. accepts pushes) - for example via dulwich.server functionality, the HTTP smart server, or anything built on ReceivePackHandler - are impacted. The issue is patched in 1.2.5. add_thin_pack now accepts a max_input_size keyword (bytes; 0/None = unlimited, matching git's semantics), and ReceivePackHandler reads receive.maxInputSize from the repository config and passes it through. Wire reads are counted and a PackInputTooLarge exception is raised once the cap is exceeded - equivalent to git index-pack --max-input-size. Users should upgrade to Dulwich 1.2.5 or later and set receive.maxInputSize in their server's repository config to a sane bound for their environment. On unpatched versions, receive.maxInputSize has no effect, so it cannot be used as a workaround. Until upgrading, operators should restrict dulwich-receive-pack (push) access to trusted, authenticated clients only, or disable it entirely on servers that only need to serve fetches and/or run the server under an OS-level memory limit (e.g. ulimit, cgroups/MemoryMax, or a container memory limit) so a malicious push is killed rather than taking down the host.

