CVE-2026-114096: Dulwich symlink following in porcelain.checkout

CVE-2026-114096 · Severity: high · CVSS 7.8 · Published 2026-10-21

Dulwich is a Python library for interacting with Git repositories. A vulnerability in its checkout function allows attackers to write arbitrary files by exploiting symlinks, including placing malicious hooks that execute code when git operations are performed on a cloned repository.

Technologies: Jelmer Dulwich. Vendors: Jelmer.

Quick answers

Is CVE-2026-114096 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-114096 being exploited in the wild.
How severe is CVE-2026-114096?
High severity, with a CVSS score of 7.8, published 21 October 2026.
Which products and versions are affected?
Jelmer Dulwich 0.24.0 to 1.2.7.
Is there a fix for CVE-2026-114096?
Yes: fixed in 1.2.8. Until then: Avoid using porcelain.checkout(paths=[...]) with untrusted repositories until upgraded, or restrict cloning and checkout operations to trusted sources only. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-114096 attacked?
It is attacked with local access, in a software library.
Am I affected by CVE-2026-114096?
Check whether you run Jelmer Dulwich at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: 1.2.8

Avoid using porcelain.checkout(paths=[...]) with untrusted repositories until upgraded, or restrict cloning and checkout operations to trusted sources only.

Technical details

The porcelain.checkout(paths=[...]) code path uses raw os.open() without O_NOFOLLOW flag, bypassing symlink protections and allowing attackers to follow symlinks to write files outside the intended worktree. An attacker can craft a malicious repository with a symlink in HEAD pointing to .git/hooks/post-checkout, then provide an executable file at that path in a tag; when a victim checks out that tag using the affected paths parameter, the hook is overwritten with attacker code. This requires local file system access and user interaction (running checkout), but results in arbitrary code execution.

Affected products

  • jelmer Dulwich 0.24.0 to 1.2.7

Timeline

  • 2026-07-06: disclosed
  • 2026-10-21: advisory

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.