Skip to content
Heist/ feed
Back to feed
Medium

GitPython 3.1.62 before 3.2.0 Symlink Path Traversal via Submodule.move()

Type: advisorySources: Official CVE List

GitPython from 3.1.62 before 3.2.0 contains a symlink-following flaw in Submodule.move(), which checks the destination only lexically and does not reject symbolic links in intermediate path components. An untrusted repository can commit a symlink such as vendor pointing outside the worktree, so an application moving an initialized submodule beneath it relocates the checkout externally and corrupts the index and .gitmodules.

Products
GitPython
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-110860
Confirmed fixed CVEs
Not specified
Updated in this feed
30 Oct 2026, 12:01 UTC · Revision 2

Source evidence

GitPython 3.1.62 before 3.2.0 Symlink Path Traversal via Submodule.move()

core-cve · Original source

Published 14 Oct 2026, 22:52 UTC

GitPython from 3.1.62 before 3.2.0 contains a symlink-following flaw in Submodule.move(), which checks the destination only lexically and does not reject symbolic links in intermediate path components. An untrusted repository can commit a symlink such as vendor pointing outside the worktree, so an application moving an initialized submodule beneath it relocates the checkout externally and corrupts the index and .gitmodules.

cve:CVE-2026-110860

GitPython

Fixed versions: Not specified

Complete source record
{
  "id": "1583921f0a115c7dcfe935596e985ca4e7163e27c56a197df32a3bfa1e74f5fe",
  "url": "https://www.cve.org/CVERecord?id=CVE-2026-110860",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "GitPython 3.1.62 before 3.2.0 Symlink Path Traversal via Submodule.move()",
    "summary": "GitPython from 3.1.62 before 3.2.0 contains a symlink-following flaw in Submodule.move(), which checks the destination only lexically and does not reject symbolic links in intermediate path components. An untrusted repository can commit a symlink such as vendor pointing outside the worktree, so an application moving an initialized submodule beneath it relocates the checkout externally and corrupts the index and .gitmodules.",
    "evidence": "cve:CVE-2026-110860",
    "products": [
      {
        "name": {
          "value": "GitPython",
          "evidence": "/containers/cna/affected/0/product"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-110860",
      "aliases": [
        "CVE-2026-110860"
      ],
      "metrics": [
        {
          "format": "CVSS",
          "cvssV4_0": {
            "Safety": "NOT_DEFINED",
            "version": "4.0",
            "Recovery": "NOT_DEFINED",
            "baseScore": 6.9,
            "Automatable": "NOT_DEFINED",
            "attackVector": "LOCAL",
            "baseSeverity": "MEDIUM",
            "valueDensity": "NOT_DEFINED",
            "vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N",
            "exploitMaturity": "NOT_DEFINED",
            "providerUrgency": "NOT_DEFINED",
            "userInteraction": "PASSIVE",
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "privilegesRequired": "NONE",
            "subIntegrityImpact": "NONE",
            "vulnIntegrityImpact": "HIGH",
            "subAvailabilityImpact": "NONE",
            "vulnAvailabilityImpact": "LOW",
            "subConfidentialityImpact": "NONE",
            "vulnConfidentialityImpact": "NONE",
            "vulnerabilityResponseEffort": "NOT_DEFINED"
          }
        },
        {
          "format": "CVSS",
          "cvssV3_1": {
            "scope": "UNCHANGED",
            "version": "3.1",
            "baseScore": 6.1,
            "attackVector": "LOCAL",
            "baseSeverity": "MEDIUM",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L",
            "integrityImpact": "HIGH",
            "userInteraction": "REQUIRED",
            "attackComplexity": "LOW",
            "availabilityImpact": "LOW",
            "privilegesRequired": "NONE",
            "confidentialityImpact": "NONE"
          }
        }
      ],
      "affected": [
        {
          "vendor": "gitpython-developers",
          "product": "GitPython",
          "versions": [
            {
              "status": "affected",
              "version": "3.1.62",
              "lessThan": "3.2.0",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "3.2.0",
              "versionType": "semver"
            }
          ],
          "packageURL": "pkg:pypi/GitPython",
          "defaultStatus": "unaffected"
        }
      ],
      "modified": "2026-10-26T15:27:14.246Z",
      "provider": "cve",
      "references": [
        "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-gq48-pqfc-9p58",
        "https://www.vulncheck.com/advisories/gitpython-3.1.62-before-3.2.0-symlink-path-traversal-via-submodule-move"
      ],
      "provider_metadata": {
        "adp": [
          {
            "title": "CISA ADP Vulnrichment",
            "metrics": [
              {
                "other": {
                  "type": "ssvc",
                  "content": {
                    "id": "CVE-2026-110860",
                    "role": "CISA Coordinator",
                    "options": [
                      {
                        "Exploitation": "poc"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "version": "2.0.3",
                    "timestamp": "2026-10-26T15:26:56.118240Z"
                  }
                }
              }
            ],
            "references": [
              {
                "url": "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-gq48-pqfc-9p58",
                "tags": [
                  "exploit"
                ]
              }
            ],
            "providerMetadata": {
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP",
              "dateUpdated": "2026-10-26T15:27:14.246Z"
            }
          }
        ],
        "cna": {
          "orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
          "shortName": "VulnCheck",
          "dateUpdated": "2026-10-14T22:52:44.690Z"
        }
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-110860",
        "evidence": "/cveMetadata/cveId"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/containers/cna/metrics"
  },
  "source_id": "core-cve",
  "document_id": 316027,
  "published_at": "2026-10-14T22:52:44.69+00:00"
}