Description
libgit2 is a portable C implementation of the Git core methods provided as a linkable library with a solid API, allowing to build Git functionality into your application. Prior to 1.8.6 and 1.9.5, libgit2 does not reject traversal components in a submodule path loaded from .gitmodules. The affected src/libgit2/submodule.c paths include git_submodule_lookup and git_submodule_add_setup. A crafted repository can specify a path such as ../escape-target, and applications that initialize the submodule can create directories outside the repository working tree. This issue is fixed in versions 1.8.6 and 1.9.5.
Published: 2026-08-20
Score: 4.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability resides in libgit2's handling of submodule paths defined in a repository’s .gitmodules file. A .gitmodules entry such as "../escape-target" is accepted without sanitization. When an application uses git_submodule_lookup or git_submodule_add_setup to initialize the submodule, the library will create directories relative to the current working tree, potentially outside the intended repository boundary. This enables an attacker to cause file system writes beyond the repository tree, violating isolation assumptions. The primary impact is a directory traversal that can lead to tampering with files outside the repository, a risk that could expose sensitive data or alter system behavior. This weakness is categorized as CWE-22, a classic path traversal flaw.

Affected Systems

The affected product is libgit2 by libgit2, a portable C library providing Git functionality. The vulnerability exists in all versions prior to 1.8.6 and 1.9.5. These releases and earlier ones do not reject traversal components in a submodule path.

Risk and Exploitability

The CVSS score of 4.3 indicates a medium severity. No EPSS data is provided. The vulnerability is not listed in CISA KEV. Exploitation requires an application to process a crafted repository that contains a .gitmodules file with a traversal component. An attacker can execute this by hosting a malicious repository or by supplying one to an untrusted application that clones or pulls from external sources. Once the vulnerable library initializes the submodule, it will create directories outside the repository working tree, allowing the attacker to write files, potentially overwrite critical files or drop malicious payloads. The attack vector is therefore likely remote in the sense of a malicious repository delivered over the network, but it can also be local if the developer or build system pulls untrusted content. The possibility of compromising the host filesystem depends on the application’s privileges.

Generated by OpenCVE AI on August 21, 2026 at 01:30 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade libgit2 to version 1.8.6, 1.9.5 or a later release where the issue is fixed.
  • If an upgrade is not immediately possible, validate .gitmodules entries to ensure paths do not contain "../" or other traversal sequences before initializing submodules.
  • Apply the vendor’s security advisory GHSA-cw77-j82w-mchm and review the referenced commit hashes for any manual patching.

Generated by OpenCVE AI on August 21, 2026 at 01:30 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DSA Debian DSA DSA-6453-1 libgit2 security update
History

Mon, 24 Aug 2026 12:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Low


Thu, 20 Aug 2026 20:45:00 +0000

Type Values Removed Values Added
First Time appeared Libgit2
Libgit2 libgit2
Vendors & Products Libgit2
Libgit2 libgit2

Thu, 20 Aug 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 20 Aug 2026 19:00:00 +0000

Type Values Removed Values Added
Description libgit2 is a portable C implementation of the Git core methods provided as a linkable library with a solid API, allowing to build Git functionality into your application. Prior to 1.8.6 and 1.9.5, libgit2 does not reject traversal components in a submodule path loaded from .gitmodules. The affected src/libgit2/submodule.c paths include git_submodule_lookup and git_submodule_add_setup. A crafted repository can specify a path such as ../escape-target, and applications that initialize the submodule can create directories outside the repository working tree. This issue is fixed in versions 1.8.6 and 1.9.5.
Title libgit2: Submodule path traversal
Weaknesses CWE-22
References
Metrics cvssV3_1

{'score': 4.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-20T19:48:17.848Z

Reserved: 2026-06-09T19:11:53.484Z

Link: CVE-2026-53584

cve-icon Vulnrichment

Updated: 2026-08-20T19:48:14.383Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-08-20T19:16:54.680

Modified: 2026-09-09T21:19:49.197

Link: CVE-2026-53584

cve-icon Redhat

Severity : Low

Publid Date: 2026-08-20T18:35:10Z

Links: CVE-2026-53584 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T01:45:08Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')