# CVE-2026-114098: Dulwich path traversal in stash pop via symlinks

Source: https://junglewise.ai/threats/cve-2026-114098-dulwich-from-0-22-5-before-1-2-8-contains-a-path-traversal  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-10-21. Updated: 2026-10-21  
License: CC BY 4.0 with a link back

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

Dulwich is a Python library for interacting with Git repositories. A path traversal vulnerability in its stash pop operation allows an attacker to write arbitrary files to locations outside the repository, including Git hook directories. An attacker can craft a malicious repository that executes arbitrary code when the victim performs a checkout operation.

Technologies: [Jelmer Dulwich](https://junglewise.ai/threats/technologies/jelmer-dulwich). Vendors: [Jelmer](https://junglewise.ai/threats/vendors/jelmer).

## Quick answers

**Is CVE-2026-114098 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-114098 being exploited in the wild.

**How severe is CVE-2026-114098?** High severity, with a CVSS score of 7.8, published 21 October 2026.

**Which products and versions are affected?** Jelmer Dulwich 0.22.5 through 1.2.7.

**Is there a fix for CVE-2026-114098?** Yes: fixed in 1.2.8. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-114098 attacked?** It is attacked with local access, in a software library.

**Am I affected by CVE-2026-114098?** 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

## Technical details

The stash.py pop() function uses os.path.exists() to check if parent directories exist before writing stashed files; however, os.path.exists() follows symlinks, allowing an attacker to traverse outside the worktree via intermediate directory symlinks. The validate_path() function does not detect filesystem symlinks. An attacker can craft a repository with a symlink in the worktree pointing to .git/hooks, then place a malicious post-checkout hook in the stash, which gets written outside the repository when popped and executes on the next checkout.

## Affected products

- jelmer Dulwich 0.22.5 through 1.2.7

## Timeline

- 2026-07-06: disclosed
- 2026-10-21: patched

## References

- [https://github.com/jelmer/dulwich/security/advisories/GHSA-cm62-gvxx-vmxx](https://github.com/jelmer/dulwich/security/advisories/GHSA-cm62-gvxx-vmxx)
- [https://www.vulncheck.com/advisories/dulwich-0.22.5-before-1.2.8-path-traversal-via-stash-pop-symlinks](https://www.vulncheck.com/advisories/dulwich-0.22.5-before-1.2.8-path-traversal-via-stash-pop-symlinks)

## Related threats

- [Dulwich commit object parsing divergence from git](https://junglewise.ai/threats/cve-2026-122299-dulwich-before-1-2-20-contains-a-commit-object-parsing)
- [Dulwich path traversal in filter_branch CommitFilter](https://junglewise.ai/threats/cve-2026-114097-dulwich-from-0-23-1-before-1-2-8-contains-a-path-traversal)
- [Dulwich symlink following in porcelain.checkout](https://junglewise.ai/threats/cve-2026-114096-dulwich-from-0-24-0-before-1-2-8-contains-a-symlink-following)
- [Dulwich path traversal via DOS drive letter prefixes on Windows](https://junglewise.ai/threats/cve-2026-114094-dulwich-before-1-2-9-fails-to-validate-dos-drive-letter-prefixes)
