Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-11968

CVE-2026-11968: TortoiseGit Path Traversal Vulnerability

CVE-2026-11968 is a path traversal flaw in TortoiseGit that enables argument injection via malicious Git history filenames, leading to arbitrary file writes. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-11968 Overview

CVE-2026-11968 is an argument injection vulnerability [CWE-88] in TortoiseGit's TortoiseGitBlame component. The flaw allows a malicious Git repository to inject command-line arguments through crafted filenames stored in Git history. When a user runs the blame operation on such a repository, the injected arguments cause arbitrary file write on the local system. Exploitation requires the victim to open a malicious repository and trigger the blame functionality, classifying this as a local attack requiring user interaction.

Critical Impact

A malicious Git repository can write arbitrary files to the victim's filesystem when a user views file history in TortoiseGitBlame, enabling persistence or local code execution through file overwrite.

Affected Products

  • TortoiseGit (Windows Git client)
  • TortoiseGitBlame component
  • Versions prior to the fix in commit 7052e3ef61cd104f8a90fb3dcdfb403cbc8c1773

Discovery Timeline

  • 2026-06-24 - CVE-2026-11968 published to NVD
  • 2026-06-24 - Last updated in NVD database

Technical Details for CVE-2026-11968

Vulnerability Analysis

The vulnerability resides in how TortoiseGitBlame constructs command-line invocations when processing filenames from Git history. Git allows filenames containing characters that downstream tools may interpret as option flags. When TortoiseGitBlame passes a historical filename to a subprocess without proper argument separation, an attacker-controlled filename beginning with a dash gets parsed as a command-line switch rather than a positional argument.

This behavior maps to [CWE-88] (Improper Neutralization of Argument Delimiters in a Command). The impact is integrity-focused: an attacker can leverage option flags supported by the invoked binary to write data to arbitrary file paths on the user's system. Confidentiality and availability are not directly impacted.

Root Cause

The root cause is missing argument neutralization in the subprocess invocation path. TortoiseGitBlame did not prefix filename arguments with the -- end-of-options separator, and did not validate or escape filenames that begin with - or --. Git stores arbitrary byte sequences as filenames, and a repository can contain history entries whose filenames are valid option strings for the target binary.

Attack Vector

An attacker creates a Git repository containing a file whose name is a crafted option flag, for example a name that resembles --output=C:\path\to\target. The attacker distributes this repository through a public clone, a pull request, or a shared development workspace. When a victim opens the repository in TortoiseGit and invokes the blame view for that file or for the history that references it, TortoiseGitBlame passes the malicious filename to the underlying binary. The injected switch causes the binary to write controlled content to the attacker-specified path. See the TortoiseGit issue tracker and the GitLab patch commit for technical specifics.

Detection Methods for CVE-2026-11968

Indicators of Compromise

  • Git repositories containing filenames in history that begin with - or --, particularly those resembling known CLI options.
  • Unexpected file writes to user-writable locations shortly after a developer runs TortoiseGitBlame against an untrusted repository.
  • Process telemetry showing TortoiseGitBlame.exe spawning child processes with suspicious argument patterns derived from repository content.

Detection Strategies

  • Inspect cloned repositories with git log --all --name-only --pretty=format: and flag any path entries starting with a dash.
  • Monitor for child processes of TortoiseGitProc.exe or TortoiseGitBlame.exe whose command lines include flags such as --output, --export, or other write-related options.
  • Hunt for file creation events in sensitive directories correlated with TortoiseGit process activity.

Monitoring Recommendations

  • Enable command-line auditing on developer workstations to capture full argument lists for TortoiseGit subprocesses.
  • Forward Sysmon Event ID 1 (process creation) and Event ID 11 (file create) to a centralized log platform for correlation.
  • Alert on file writes performed by TortoiseGit-related processes outside of expected working directories.

How to Mitigate CVE-2026-11968

Immediate Actions Required

  • Update TortoiseGit to the version that includes commit 7052e3ef61cd104f8a90fb3dcdfb403cbc8c1773 or later.
  • Audit all cloned repositories on developer workstations for filenames beginning with dash characters.
  • Restrict cloning of repositories from untrusted sources until the patch is applied.

Patch Information

The TortoiseGit project addressed this vulnerability in the upstream commit referenced in the GitLab patch commit. The fix adds proper argument separation when invoking child processes with filename inputs. Refer to the TortoiseGit issue tracker entry 4269 for release details.

Workarounds

  • Avoid using the blame feature on repositories sourced from untrusted parties until updated.
  • Scan repositories with a pre-clone hook that rejects filenames starting with - or containing shell metacharacters.
  • Run TortoiseGit under a low-privilege user account to limit the scope of arbitrary file writes.

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.