Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
Low

Path Traversal in Dulwich porcelain.format_patch filename generation

IdentifiersCVE-2026-47712CWE-22· Improper Limitation of a Pathname…

CVE-2026-47712 affects Dulwich, a pure-Python implementation of Git formats and protocols. Starting in version 0.24.0 and prior to version 1.2.5, dulwich.porcelain.format_patch(outdir=...) derived each patch filename from the commit subject line. Before the fix, dulwich.patch.get_summary only replaced spaces with dashes and did not sanitize path separators, parent-directory components, or other filename-hostile characters. The resulting summary was passed into os.path.join(outdir, f"{i:04d}-{summary}.patch"), allowing a malicious commit subject such as one containing "/", "\", or ".." to influence the final path and steer patch output outside the intended outdir. Dulwich 1.2.5 fixes this by sanitizing subjects similarly to Git's format_sanitized_subject, retaining only safe filename characters, collapsing runs of unsafe characters, stripping unsafe trailing characters, and limiting length.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

An attacker able to supply or influence commit metadata processed by porcelain.format_patch can cause generated patch files to be written outside the intended output directory, subject to the permissions of the running process. This can result in unauthorized file creation or overwrite in attacker-influenced locations reachable via path traversal. Depending on the execution context and writable paths, this may enable tampering with local files, interference with automation workflows, or writing into sensitive directories. On some platforms, hostile characters may also trigger filesystem errors or path handling issues.

Mitigation

If you can’t patch tonight, do this now.

If upgrading is not immediately possible, avoid letting format_patch choose filenames from untrusted commit subjects. Use stdout=True and write patch output to a destination you control. Validate any returned path before opening it, for example by comparing os.path.realpath(returned_path) to os.path.realpath(outdir) and rejecting outputs whose resolved path is not contained within outdir. Additionally, pre-screen or reject commits whose subject first line contains path separators, parent-directory components, or other filesystem-unsafe characters.

Remediation

Patch, then assume compromise.

Upgrade Dulwich to version 1.2.5 or later. The fix updates dulwich.patch.get_summary to sanitize commit subjects before embedding them in patch filenames, preventing traversal outside outdir and reducing other filename safety issues.
PUBLIC EXPLOITS

Exploits

No public exploits tracked yet. Mallory keeps watching.

VALID 0 / 0 TOTALView more in app

No public exploit code observed for this vulnerability.

ACTIVITY FEED

Recent activity

2 sources tracked across advisories and community write-ups. News coverage will land here when it surfaces.

No news coverage yet. Advisories and community discussion only.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence

Every observed campaign linking this CVE to a named adversary.

Associated malware

Malware families riding this exploit, with evidence and IOCs.

Detection signatures

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity2

Community discussion across Reddit, Mastodon, and other social sources.