Skip to main content

Dulwich EUVDEUVD-2026-106897

| CVE-2026-114094 HIGH
Path Traversal (CWE-22)
2026-10-21 VulnCheck GHSA-pxf3-54vf-v638
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Victim clones/checks out malicious repo
  2. Delivery
    Tree entry 'C:' bypasses NTFS validation
  3. Exploit
    os.path.join drops worktree root
  4. Execution
    File written to absolute Windows path
  5. Persist
    Poison .gitconfig/startup/authorized_keys
  6. Impact
    Code 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.7% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

dulwich 0 <1.2.9

Affected Packages

pypi dulwich fix: 1.2.9

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

Vendor (VulnCheck) PRIMARY 8.7 HIGH
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
vuln.today AI 8.8 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 02:01 EUVD
CVE Published
Oct 21, 2026 - 00:36 cve.org
HIGH 8.7

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.7%
Top 49% exploitable
Prevalence
Medium
popular pure-Python Git library, but impact limited to Windows clients
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.7%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy