Skip to main content

Dulwich EUVDEUVD-2026-106901

| CVE-2026-114098 HIGH
Path Traversal (CWE-22)
2026-10-21 VulnCheck GHSA-mw9m-763w-f8m9
7.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Recon
    Victim clones malicious repository
  2. Delivery
    Symlink staged in worktree
  3. Exploit
    Victim stash push/checkout/pop sequence
  4. Install
    stash.pop() follows symlink past validate_path
  5. C2
    Payload written to .git/hooks/post-checkout
  6. Execute
    Next checkout runs hook as victim
  7. Impact
    Arbitrary code execution

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

Exploitation requires the victim to use dulwich (>=0.22.5, <=1.2.7) to clone or operate on an attacker-crafted repository containing an intermediate directory symlink pointing outside the worktree (e.g. link → ../../.git/hooks) plus a stashed file under that symlinked path. The victim must then perform the specific stash workflow - checkout a branch, stash.push(), checkout back to the branch holding the symlink, and stash.pop() - because validate_path() only blocks INVALID_DOTNAMES and performs no filesystem symlink detection, and build_file_from_blob() has no O_NOFOLLOW protection. LIMITING FACTORS: local access/operation only (AV:L), mandatory multi-step user interaction (UI:P), the attacker cannot act without the victim processing an untrusted repository, and RCE is only realized when a subsequent git checkout triggers the planted post-checkout hook. Highest exposure is developer workstations and CI/automation that ingest untrusted repositories.

Impact

This is a genuine but conditional code-execution risk, not a drive-by remote compromise. The input provides only a CVSS 4.0 vector (CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P, score 7.3) and no CVSS 3.1 vector. Key signals: attack vector is LOCAL (AV:L), there is an attack requirement (AT:P) and required user interaction (UI:P), while vulnerable-system impact is HIGH across confidentiality, integrity and availability (VC:H/VI:H/VA:H) - consistent with arbitrary file write leading to RCE via a planted .git/hooks/post-checkout. PR:N technically means no pre-existing privileges on the victim's machine, but exploitation is gated by the victim voluntarily cloning an attacker-controlled repository and performing a specific stash push/checkout/pop sequence, so 'unauthenticated' here does not mean 'unattended remote.' No EPSS score, no CISA KEV entry, and no explicit POC/exploit-code flag were supplied, so there is no public exploitation-probability signal; the GHSA/VulnCheck advisories describe a detailed, reproducible attack recipe but no weaponized exploit artifact is referenced. Net: real priority for developer/CI environments that process untrusted repositories with dulwich, but the local vector plus multi-step user interaction keeps real-world mass-exploitation risk well below what the 7.3 and 'RCE' tag might suggest in isolation.

Exploit ScenarioDerived

An attacker publishes a malicious Git repository whose branches contain an intermediate directory symlink (e.g. link → ../../.git/hooks) and a stashed payload file at link/post-checkout. When a victim using dulwich clones the repo and runs the specific stash push/checkout/pop sequence, stash.pop() follows the symlink and writes the payload to .git/hooks/post-checkout, which executes on the next checkout. No weaponized public exploit is referenced in the input, but the advisory provides a full step-by-step reproduction; attack complexity is raised by the required local AV:L and victim-driven stash operations (AT:P/UI:P).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% 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 leading to potential code execution affects Dulwich 0.22.5 through 1.2.7 when a victim pops a stash in an attacker-crafted repository, because intermediate directory symlinks are followed and can redirect writes into .git/hooks/post-checkout. Exploitation requires local operation of the affected library plus a multi-step stash workflow and a subsequent checkout, so this is a conditional code-execution risk rather than a drive-by remote compromise; no public exploit code was identified at time of analysis. Dulwich 1.2.8 contains the vendor fix.

RemediationAI

Vendor-released patch: 1.2.8. Upgrade Dulwich to 1.2.8 or later; the fix is referenced by commit 40a542cb02f9ac39a9eeac1193472903098698f9 and the GitHub advisory at https://github.com/jelmer/dulwich/security/advisories/GHSA-cm62-gvxx-vmxx. If upgrade cannot be applied immediately, avoid stash.pop() on repositories from untrusted sources and inspect clone worktrees for intermediate directory symlinks (for example with find . -type l) before stash operations. Restrict write access to .git/hooks or run repository operations in a sandbox/container confined to the worktree; trade-offs are that disabling or making hook directories read-only breaks legitimate Git hooks, and sandboxing may interfere with build or tooling integrations.

Affected VersionsENISA

dulwich 0.22.5 <1.2.8

Affected Packages

pypi dulwich fix: 1.2.8

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 implementation of Git. In stash.py pop(), the code checks parent directory existence with os.path.exists(), which follows symlinks; validate_path() only screens path component names against INVALID_DOTNAMES and does not inspect the filesystem, and build_file_from_blob() lacks O_NOFOLLOW protection. This is CWE-22 path traversal: an intermediate symlink such as link -> ../../.git/hooks causes a stashed path like link/post-checkout to be written outside the worktree. The reported CPE cpe:2.3:a:jelmer:dulwich:*:*:*:*:*:*:*:* identifies the affected package; the advisory documents branches main (symlink) and feature (payload), enabling post-checkout hook execution on the next checkout.

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 7.3 HIGH
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.0 HIGH

Local, victim-driven stash workflow against an untrusted repo justifies AV:L and AC:H with UI:R; no victim privileges needed (PR:N); symlink-based arbitrary write yields full C/I/A via hook RCE.

3.1 AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:P/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
Local
Attack Complexity
Low
Attack Requirements
Present
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:37 cve.org
HIGH 7.3

DescriptionCVE.org

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.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 1 pypi packages depend on dulwich (1 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.22.5.

Technical POC Analysis

CWE-22 (Path Traversal), with the advisory also tagging CWE-59 (Link Following).

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

A high-severity flaw (CVE-2026-114098) in the Dulwich Git library, versions 0.22.5 through 1.2.7, allows a maliciously crafted repository to redirect file writes during a stash-pop and subsequent checkout, potentially leading to code execution. Because Dulwich is embedded in Python-based developer tooling and automation, exposure concentrates on engineering workstations and CI runners rather than customer-facing systems, making this a developer-environment and supply-chain integrity risk. Leadership should care because a single crafted repository handled by an engineer or pipeline could compromise build trust with limited interaction.

Business Impact: Medium
Compensating Controls

Apply vendor patch (upgrade to Dulwich 1.2.8); until upgraded, avoid popping stashes from untrusted repositories and run affected Git operations in isolated, disposable environments without access to credentials or active hooks.

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Medium
popular pure-Python Git implementation embedded in various developer and automation tools
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.2%
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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
Medium

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
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