Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessVictim clones/checks out malicious repo
-
DeliveryTree entry 'C:' bypasses NTFS validation
-
Exploitos.path.join drops worktree root
-
ExecutionFile written to absolute Windows path
-
PersistPoison .gitconfig/startup/authorized_keys
-
ImpactCode execution as victim
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires (1) the victim to be running Dulwich on a Windows (NTFS) client - Linux/macOS are not affected; (2) the victim to clone or check out an attacker-controlled repository, i.e. passive user interaction such as a normal clone, checkout, or an automated Windows CI runner cloning a malicious pull request; and (3) the attacker to author a Git tree entry whose name is a DOS drive-letter prefix like 'C:', which passes validate_path_element_ntfs and causes os.path.join to discard the worktree root. No authentication against the victim is needed and default configurations are vulnerable, but the limiting factors are the mandatory Windows platform and the requirement that the victim initiate a clone/checkout of hostile repository content. |
| Impact | This is a genuinely serious flaw but one whose real-world risk is gated by specific preconditions. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H, score 8.7) indicates a network-delivered, low-complexity, unauthenticated path-traversal that yields high confidentiality, integrity and availability impact - consistent with the described arbitrary file write escalating to RCE. The critical caveat is UI:P (passive user interaction) and the platform constraint: exploitation only triggers when a Windows client clones or checks out the malicious repository, and Linux/macOS clients are unaffected. No CISA KEV listing and no EPSS score were supplied in the input, so there is no signal of active or probabilistically-likely exploitation; however, the GHSA advisory publishes a working proof-of-concept, so publicly available exploit code exists. The signals are therefore consistent rather than conflicting: high technical impact and a public PoC, but exploitation requires attacker-authored repo content plus a Windows victim who performs a clone/checkout, which argues for targeted (e.g. malicious pull request against a Windows CI runner) rather than opportunistic mass exploitation. Treat as a real priority specifically for Windows environments and Windows-based CI/CD using Dulwich; lower priority for Linux-only deployments. Note no EPSS/KEV data was provided - absence is not evidence of low risk, and the public PoC meaningfully raises practical exploitability. |
| Exploit ScenarioDerived | An attacker authors a malicious Git repository (craftable on Linux) containing a tree entry named 'C:' that bypasses Dulwich's NTFS path validation. When a Windows victim - for example a GitHub Actions runner that auto-clones an incoming pull request - checks out the repository, os.path.join discards the worktree root and writes the attacker's file to an absolute path such as C:\Users\<victim>\.gitconfig, poisoning core.sshCommand to gain code execution. A proof-of-concept generator is published in the GHSA advisory, and because UI is passive the victim only needs to perform a normal clone/checkout. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 21, 2026
Arbitrary file write in Dulwich before 1.2.9 on Windows can be escalated to remote code execution when an unauthenticated remote attacker convinces a victim or an automated Windows CI runner to clone or check out a malicious repository. A crafted Git tree entry whose name is a DOS drive-letter prefix such as 'C:' passes NTFS validation and causes os.path.join to discard the intended worktree root, allowing writes to locations like the user's .gitconfig or Startup folder. A proof-of-concept generator is described in the vendor advisory, so publicly available exploit code exists.
RemediationAI
Vendor-released patch: 1.2.9. Upgrade Dulwich to 1.2.9 or later, which includes the upstream fix commit 4ca77f9f470742ba246cd6fa07beb6d735045664; confirm the installed package version with pip show dulwich and redeploy any Windows CI runners or services using the library. If immediate upgrade is not possible, the most direct compensating control on Windows is to perform checkouts with the standard Git client, which explicitly rejects DOS drive-letter path elements, instead of Dulwich-based checkout, accepting that this may not be feasible for applications that call Dulwich directly. Also prevent automatic checkout of untrusted pull requests on Windows CI runners, isolate those runners in disposable low-privilege VMs with minimal repository secrets, and restrict clone/checkout of attacker-controlled repositories until the patch is applied. Advisory: https://github.com/jelmer/dulwich/security/advisories/GHSA-8mcx-5rqc-vhmf.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Dulwich is a pure-Python Git implementation. The vulnerability is a CWE-22 path traversal caused by incomplete Windows path validation: validate_path_element_ntfs in dulwich/index.py rejects .git variants, alternate data streams, git~1 short names, and reserved device names but does not reject DOS drive-letter prefixes, and _tree_to_fs_path then combines the worktree root with the untrusted tree path via os.path.join. On Windows, a second component beginning with an absolute drive letter (for example b'C:\\Users\\...') makes os.path.join discard the root, so checkout writes outside the worktree. The same gap affects _checked_worktree_path in dulwich/porcelain/__init__.py; upstream Git blocks this case with has_dos_drive_prefix() in path.c. The issue is platform-specific to Windows/NTFS clients because the drive-letter join behavior does not apply on Linux/macOS, but malicious trees can be authored anywhere. The CPE cpe:2.3:a:jelmer:dulwich:*:*:*:*:*:*:*:* covers the affected package range before 1.2.9.
Know when Dulwich gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Attacker-authored repo delivered over the network with no auth (AV:N/PR:N), but victim must clone/checkout on Windows (UI:R); arbitrary file write yields full C/I/A on the host.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
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.
Blast Radius
ecosystem impact- 3 pypi packages depend on dulwich (3 direct, 0 indirect)
Ecosystem-wide dependent count for version 1.2.9.
Technical POC Analysis
Evidence base: GHSA-8mcx-5rqc-vhmf advisory only.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Dulwich on Windows, in versions prior to 1.2.9, allows a crafted Git repository to write arbitrary files and escalate to remote code execution during clone or checkout, affecting developer workstations and automated Windows CI runners. The advisory describes a proof-of-concept generator, so publicly available exploit code exists; no vendor-released patch identified at time of analysis. Leadership should treat this as a supply-chain and endpoint risk because compromise of a CI runner or developer machine could enable code tampering, credential theft, and downstream software compromise.
No vendor-released patch identified at time of analysis; restrict cloning/checkout of untrusted repositories on Windows, run Dulwich operations in low-privilege isolated containers or non-Windows environments, block Git tree entries with drive-letter prefixes such as 'C:', enforce repository allowlists, and monitor writes to .gitconfig and Startup folders.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Related Vulnerabilities in Dulwich Path Traversal and DoS Vulnerabilities
View all 5The build_index_from_tree function in index.py in Dulwich before 0.9.9 allows remote attackers to execute arbitrary code
Arbitrary code execution in Dulwich (pure-Python Git implementation) versions 0.23.2 through 1.2.4 allows a malicious up
Dulwich before 0.18.5, when an SSH subprocess is used, allows remote attackers to execute arbitrary commands via an ssh
Buffer overflow in the C implementation of the apply_delta function in _pack.c in Dulwich before 0.9.9 allows remote att
EUVD-2026-106897
GHSA-pxf3-54vf-v638
NVD
CVE.org
EPSS
Exploit-DB