Low severity · published Jun 10, 2026
CVE-2026-47712
Dulwich doesn't sanitize commit subjects in `porcelain.format_patch`
3.3
CVSS
0.1%
EPSS
No
On KEV
Description
Dulwich is a pure-Python implementation of the Git file formats and protocols. Starting in version 0.24.0 and prior to version 1.2.5, dulwich.porcelain.format_patch(outdir=...) derives each patch filename from the commit's subject line. Prior to this fix, get_summary only replaced spaces with dashes - path separators (/, \), parent-directory components (..), and other filename-hostile characters (e.g. :) were preserved verbatim and passed straight into os.path.join(outdir, f"{i:04d}-{summary}.patch"). A malicious commit subject could therefore direct the generated patch file outside the requested outdir. This is fixed in Dulwich 1.2.5. Users should upgrade to 1.2.5 or later. dulwich.patch.get_summary now mirrors git's format_sanitized_subject: only `[A-Za-z0-9._]` are kept, runs of other characters collapse to a single -, consecutive . collapse to a single ., trailing ./- are stripped, and the result is length-limited. This makes the returned string safe to embed as a filename component, so format_patch can no longer be steered out of outdir via the commit subject. Until upgrading, callers that pass untrusted commits to porcelain.format_patch can use stdout=True and write the patch to a destination they control, rather than letting format_patch choose the filename; validate the chosen path before opening - e.g. compare os.path.realpath(returned_path) against os.path.realpath(outdir) and reject any patch whose resolved path is not inside outdir; and/or pre-screen commits and refuse to format any whose subject's first line contains /, \, .., or other characters that are not safe on the target filesystem.
CVSS vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
Attack vector
Local
Complexity
Low
Privileges
None
User interaction
Required
Confidentiality
None
Integrity
Low
Availability
None
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.1% · higher than 3% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
DU
dulwich · jelmer
>= 0.24.0, < 1.2.5 · source: vendor
Affected product
DU
dulwich
jelmer
More from dulwich
8.8
CVE-2026-114094
Dulwich before 1.2.9 Arbitrary File Write via DOS drive letter paths
8.8
CVE-2026-42305
Dulwich has an arbitrary file write via NTFS-hostile tree entries on Windows
7.8
CVE-2026-114098
Dulwich 0.22.5 before 1.2.8 Path Traversal via Stash Pop Symlinks
7.8
CVE-2026-114097
Dulwich 0.23.1 before 1.2.8 Symlink Path Traversal via filter_branch Index Filter
7.8
CVE-2026-114096
Dulwich 0.24.0 before 1.2.8 Symlink Write-Through via porcelain.checkout paths