CVE catalog

CVE-2026-100689

GitPython before 3.1.62 does not validate the `path` field read from an untrusted .gitmodules file when updating submodules. While a prior fix (GHSA-hmq2-w58f-27jc) added Submodule._validated_name() t

[CVE catalog]

Severity
High · CVSS 8.7CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Published
Updated
Source
[NVD] · [CVE record]
EPSS
0.40% · Oct 25, 2026

GitPython before 3.1.62 does not validate the `path` field read from an untrusted .gitmodules file when updating submodules. While a prior fix (GHSA-hmq2-w58f-27jc) added Submodule._validated_name() to constrain the `name` field, and GitPython's own containment guard Submodule._to_relative_path() is applied in add() and move(), Submodule.update() derives the absolute checkout location from the raw `path` value without that guard. A .gitmodules entry containing directory traversal components (e.g., path = ../../../tmp/escaped) can therefore cause directories to be created via os.makedirs() outside the repository working tree, populated from the submodule URL on the clone path, and removed via shutil.rmtree() when force_remove is used. Exploitation requires an application flow that updates submodules at a non-HEAD commit (such as a historical-commit API); the common clone-then-update flow re-derives the path from a canonical tree lookup and is not affected. The issue is fixed in GitPython 3.1.62.

Vulnerable and fixed packages

Distribution-reported package versions and fixes. These do not depend on matching against the OpenFactory package catalog.

DistributionPackageReleaseVersionStatus
Debianpython-gitsid3.2.1-1fixed
Debianpython-gitforky3.2.1-1fixed
Debianpython-gittrixie3.1.44-1vulnerable
Debianpython-gitbookworm3.1.30-1+deb12u2vulnerable
Opensusepython-GitPythontumbleweed3.2.0-1.1fixed

Fixed-version evidence

DistributionPackageTypeReleaseFixed versionUrgencyOriginBugs
Debianpython-gitsourcesid3.1.62-1not yet assignedNot reportedNot reported
Debianpython-gitsourceforky3.1.62-1not yet assignedNot reportedNot reported
Debianpython-gitsourcetrixie(unfixed)not yet assignedNot reportedNot reported
Debianpython-gitsourcebookworm(unfixed)not yet assignedNot reportedNot reported
Opensusepython-GitPythonrpmtumbleweed3.2.0-1.1Not reportedOPENSUSE-SU-2026:11971-1Not reported

OpenFactory catalog packages

[Debian 12 (Bookworm)]

  • [python3-git]Affected

    Source package: [python-git]

    Details (2)
    • 3.1.30-1+deb12u2 · all · bookworm

      Affected

      nvd · python-git · debian · bookworm; nvd · python-git · debian · 12

    • 3.1.30-1+deb12u2 · all · bookworm

      Affected

      nvd · python-git · debian · bookworm; nvd · python-git · debian · 12

  • [python-git-doc]Affected

    Source package: [python-git]

    Details (2)
    • 3.1.30-1+deb12u2 · all · bookworm

      Affected

      nvd · python-git · debian · bookworm; nvd · python-git · debian · 12

    • 3.1.30-1+deb12u2 · all · bookworm

      Affected

      nvd · python-git · debian · bookworm; nvd · python-git · debian · 12

[Debian 13 (Trixie)]

  • [python3-git]Affected

    Source package: [python-git]

    Details (2)
    • 3.1.44-1 · all · trixie

      Affected

      nvd · python-git · debian · 13

    • 3.1.44-1 · all · trixie

      Affected

      nvd · python-git · debian · 13

  • [python-git-doc]Affected

    Source package: [python-git]

    Details (2)
    • 3.1.44-1 · all · trixie

      Affected

      nvd · python-git · debian · 13

    • 3.1.44-1 · all · trixie

      Affected

      nvd · python-git · debian · 13

[openSUSE Tumbleweed]

  • Source package: [python-GitPython]

    Details (1)
    • 3.1.61-1.1 · noarch · tumbleweed

      Unknown · Fixed: 3.2.0-1.1

      Version impact unknown

      nvd · python-GitPython · opensuse · tumbleweed

  • Source package: [python-GitPython]

    Details (1)
    • 3.1.61-1.1 · noarch · tumbleweed

      Unknown · Fixed: 3.2.0-1.1

      Version impact unknown

      nvd · python-GitPython · opensuse · tumbleweed

Observed:

References