CVE-2026-114096: Dulwich 0.24.0 before 1.2.8 Symlink Write-Through via porcelain.checkout paths

Published Oct 21, 2026
·
Updated

Dulwich from 0.24.0 before 1.2.8 contains a symlink following vulnerability in porcelain.checkout(paths=[...]) that allows attackers to write arbitrary files by abusing raw os.open without ONOFOLLOW. Attackers can craft a repository where a worktree symlink points to .git/hooks/post-checkout, so restoring the file from a tag writes a malicious hook for code execution.

Affected Software

1 affected component
pypi/dulwich>=0.24.0<1.2.8

Event History

Oct 21, 2026
CVE Published
via MITRE·12:36 AM
Data Sourced
via MITRE·12:36 AM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who is exposed to this issue?

Applications using Dulwich versions from 0.24.0 before 1.2.8 that invoke porcelain.checkout with an explicit paths list are exposed when operating on an attacker-crafted repository or worktree.

2

What does an attacker need to exploit it?

The attacker needs to craft a repository in which a worktree symlink points to .git/hooks/post-checkout and cause a file restoration from a tag through porcelain.checkout(paths=[...]). This can write a malicious post-checkout hook that executes code.

3

Is a normal checkout affected?

The reported vulnerable path is porcelain.checkout(paths=[...]), meaning the issue specifically involves checkout operations with an explicit paths list. The provided information does not establish that checkouts without paths are affected.

4

What should be done if upgrading is not immediately possible?

Do not run porcelain.checkout with explicit paths against untrusted repositories or worktrees. In particular, avoid restoring paths from tags where attacker-controlled symlinks could redirect writes into .git/hooks.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203