<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-11-01T23:54:20.421653+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/cve-2026-110860</id>
    <title>CVE-2026-110860 — GitPython 3.1.62 before 3.2.0 Symlink Path Traversal via Submodule.move()</title>
    <updated>2026-11-01T23:54:20.423826+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> gitpython-developers GitPython</p>
<p>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.</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/cve-2026-110860"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-gq48-pqfc-9p58</id>
    <title>GHSA-gq48-pqfc-9p58 — GitPython: Submodule.move() follows an attacker-committed intermediate symlink outside the worktree</title>
    <updated>2026-11-01T23:54:20.423912+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: GitPython</p>
<p>## Summary</p>
<p>GitPython's public `Submodule.move()` API verifies that its destination is lexically inside the parent repository, but it does not reject symbolic links in the destination's intermediate components before filesystem operations. On systems that check out Git symlinks, an untrusted repository can therefore redirect a fixed, application-selected move destination outside the parent worktree.</p>
<p>The reporter reproduced this on the latest release, GitPython 3.1.62, and current `main`. In the strict scenario, the repository commits `vendor -&gt; ../outside`, while the consuming application independently passes the fixed literal `vendor/module`. `Submodule.move()` follows `vendor`, moves the initialized submodule checkout to `outside/module`, rewrites `.gitmodules` and the index to the symlinked path, and leaves the index unable to produce a tree.</p>
<p>The same result occurs when the committed symlink contains an absolute path to an external directory. No attacker-controlled API argument, local symlink planting, race, Git hook, unsafe-option flag, or network access during the proof is required.</p>
<p>## Trust boundary and preconditions</p>
<p>The attacker controls:</p>
<p>- an untrusted Git repository that the application clones;
- a mode-`120000` tracked symlink named `vendor`;
- the initialized submodule's content.</p>
<p>The consuming application controls the call and uses a fixed layout rule:</p>
<p>```python
submodule.move("vendor/module")
```</p>
<p>The trigger requires the application to initialize the subm…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-gq48-pqfc-9p58"/>
  </entry>
</feed>
