CVE-2026-52726
HighCVSS 7.5Exploitation Probability (EPSS)
Low risk37th percentile - higher than 37% of all known CVEs
Summary
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.
Risk Assessment
The organization is at risk of Git repository takeover by cloning a malicious repository. The attacker can achieve remote code execution in the context of the cloning user, potentially leading to full system compromise.
Recommendation
Immediately upgrade Dulwich to version 1.2.5 or later. Avoid cloning repositories from untrusted sources with recursive submodule fetching.
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-47734Medium
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.
- 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.23.2 and prior to version 1.2.5, `dulwich.porcelain.submodule_update`, and by extension `porcelain.clone(..., recurse_submodules=True)`, materializes attacker-controlled submodule paths from a crafted upstream repository without path validation. A malicious `.gitmodules` plus a matching tree gitlink whose `path` is `.git/hooks` (or any other directory inside the parent repository's `.git` directory) causes the attacker's submodule tree contents to be written directly into the victim's `.git/hooks/` directory, preserving executable mode bits. The dropped executables are then run by any subsequent `git` or `dulwich` command that invokes the matching hook, resulting in arbitrary code execution. This is the dulwich equivalent of the upstream Git fixes for CVE-2024-32002 / CVE-2024-32004, which were never propagated into dulwich's separately implemented submodule porcelain. Version 1.2.5 patches the issue.

