CVE-2026-42305
HighCVSS 8.8Exploitation Probability (EPSS)
Low risk47th percentile - higher than 47% of all known CVEs
Summary
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.
Risk Assessment
The organization is at risk of an attacker gaining control over a Windows system by placing a malicious file in an arbitrary location during repository cloning. Even POSIX users can unknowingly propagate a malicious tree to Windows consumers.
Recommendation
Upgrade Dulwich to version 1.2.5 or later immediately. If upgrading is not possible, avoid cloning, fetching, or checking out untrusted repositories with Dulwich on Windows.
Other vulnerabilities in Dulwich
See all- CVE-2026-114095Medium
Dulwich before 1.2.9 contains a denial of service vulnerability in Pack.resolve_object that allows attackers to cause infinite recursion via self-referential OFS_DELTA objects. Attackers can supply a malicious packfile with an OFS_DELTA delta_offset of 0 to exhaust CPU during clone, fetch, or cat-file operations.
- 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-114098High
Dulwich from 0.22.5 before 1.2.8 contains a path traversal vulnerability in stash.py pop() that allows attackers to write arbitrary files outside the worktree through intermediate directory symlinks. Attackers can craft a malicious repository whose popped stash writes a payload into .git/hooks/post-checkout, achieving code execution on the next checkout.
- CVE-2026-114097High
Dulwich from 0.23.1 before 1.2.8 contains a path traversal vulnerability in CommitFilter._apply_index_filter() that allows attackers to write files outside the working directory via symlinks persisting between commits. Attackers can craft a repository where an ancestor commit's symlink redirects a descendant commit's file writes during filter_branch, enabling code execution by writing into .git/hooks.
- CVE-2026-114096High
Dulwich from 0.24.0 before 1.2.8 contains a symlink following vulnerability in porcelain.checkout(paths=[...]) that allows attackers to write arbitrary files by abusing raw os.open without O_NOFOLLOW. Attackers can craft a repository where a worktree symlink points to .git/hooks/post-checkout, so restoring the file from a tag writes a malicious hook for code execution.
- CVE-2026-114094High
Dulwich before 1.2.9 fails to validate DOS drive letter prefixes in Git tree path elements on Windows, allowing arbitrary file write. Attackers can craft a malicious repository with a tree entry named 'C:' that bypasses NTFS validation and writes files outside the worktree to achieve remote code execution.
- 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.
Original NVD description (English source)
Dulwich is a pure-Python implementation of the Git file formats and protocols. Versions starting with 0.10.0 and prior to 1.2.5 have an arbitrary file write leading to remote code execution when cloning or checking out a malicious Git repository on Windows. Dulwich's path-element validator accepted tree entries whose filenames contained bytes that Windows interprets as structural path syntax. Contributing configuration bugs made matters worse. The core.protectNTFS and core.protectHFS settings were looked up under a wrong option name and so user-set values were silently ignored, and core.protectNTFS only defaulted to true on Windows (Git upstream has defaulted it to true everywhere since CVE-2019-1353). Both have been corrected. Anyone who clones, fetches, or checks out an untrusted repository with Dulwich on Windows - either through the Dulwich CLI, porcelain.clone, or any downstream tool built on Dulwich - is impacted. POSIX clones are not directly exploitable (on POSIX \ is a literal filename byte), but a POSIX user can unknowingly propagate a malicious tree to Windows consumers via push or re-publication. This issue is fixed in Dulwich 1.2.5. Users should upgrade to 1.2.5 or later. There is no effective pre-patch workaround. On affected versions the core.protectNTFS configuration key was silently ignored, so setting it to true does not mitigate the issue. Users who cannot upgrade should avoid cloning, fetching, or checking out untrusted repositories with Dulwich on Windows. After upgrading the NTFS validator is on by default on every platform, so no additional configuration is required.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

