🛡️ CVE-2026-42563 — dulwich

🟠 CVSS 8.0 — High ✅ No Known Exploit CWE-78 NVD
8.0
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Dulwich Vulnerable to Command Injection via Merge Driver Path

Summary

Dulwich's ProcessMergeDriver substitutes the file path (from the git tree, controllable by an attacker via a malicious branch) into the merge driver command via the %P placeholder and executes it with subprocess.run(..., shell=True). An attacker who can cause a victim to merge an untrusted branch can achieve arbitrary command execution by crafting malicious file paths.

Description

  • Type: Command Injection
  • Source: merge.py line 195 — path from merge tree (from repository content when merging untrusted branch)
  • Sink: merge_drivers.py lines 124–127 — subprocess.run(cmd, shell=True) where cmd includes path via %P placeholder
  • Impact: Arbitrary code execution when merging from a malicious repository. Requires the user to have a merge driver configured that uses the %P placeholder.

Resources

  • Repository: https://github.com/dulwich/dulwich
  • Vulnerable file: dulwich/merge_drivers.py (lines 119–129)

Proof of Concept

```python

from dulwich.attrs import GitAttributes, Pattern

from dulwich.config import ConfigDict

from dulwich.merge import merge_blobs

from dulwich.objects import Blob

# Merge driver with %P (path) - typical for custom merge tools

config = ConfigDict()

config.set((b"merge", b"injectable"), b"driver", b"echo %P > %A")

patterns = [(Pattern(b"*"), {b"merge": b"injectable"})]

gitattributes = GitAttributes(patterns)

base = Blob.from_string(b"base")

ours = Blob.from_string(b"ours")

theirs = Blob.from_string(b"theirs")

# Malicious path from attacker-controlled git tree: injects "touch /tmp/pwned"

malicious_path = b"x; touch /tmp/pwned #"

merge_blobs(base, ours, theirs, path=malicious_path,

gitattributes=gitattributes, config=config)

# => Executes: echo x; touch /tmp/pwned #

# => Shell runs: echo x, then touch /tmp/pwned

```

Fix

[merge_drivers_shell_escape.patch](https://github.com/user-attachments/files/27016503/merge_drivers_shell_escape.patch)

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. A user must be tricked into taking some action. Rated impact: confidentiality high, integrity high, availability high.

Weakness class

CVE-2026-42563 is classified as CWE-78: OS Command Injection. Untrusted input reaches a shell command without neutralisation, so an attacker can run arbitrary operating system commands.

Affected software

CVE-2026-42563 is recorded against 2 packages.

  • dulwich (from 0.24.0 up to 1.2.5)
  • unknown

Timeline and source

Published on 28 May 2026 and last revised on 13 July 2026. No public exploit is currently recorded for this entry. Record sourced from NVD.

References

github.com (Web)
nvd.nist.gov (Advisory)
github.com (Web)
github.com (Package)
github.com (Web)

CVE-2026-42563 on other distributions

Each distribution ships its own build and its own fixed version. Pick the one you run:

Details

Severity HIGH
CVSS Score 8.0
CVSS Vector CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CWE CWE-78
Public Exploit ✅ No
Source NVD
Published 2026-05-28
Updated 2026-08-12
Modified 2026-07-13
Fix URL N/A

Affected Packages

Software From version Fixed in
dulwich 0.24.0 1.2.5
unknown

Site Security Check

Is dulwich part of your stack?

CVE-2026-42563 is rated CVSS 8.0 High. BotEraser scans your installation against known CVE records and tells you whether this vulnerability applies to the versions you actually run.

Scan My Site Free →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.