<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sun, 01 Nov 2026 23:55:12 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-110860 — GitPython 3.1.62 before 3.2.0 Symlink Path Traversal via Submodule.move()</title>
      <link>https://db.gcve.eu/vuln/cve-2026-110860</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; gitpython-developers GitPython&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; gitpython-developers GitPython&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-110860</guid>
    </item>
    <item>
      <title>GHSA-gq48-pqfc-9p58 — GitPython: Submodule.move() follows an attacker-committed intermediate symlink outside the worktree</title>
      <link>https://db.gcve.eu/vuln/ghsa-gq48-pqfc-9p58</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: GitPython&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;GitPython&amp;#39;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&amp;#39;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.&lt;/p&gt;
&lt;p&gt;The reporter reproduced this on the latest release, GitPython 3.1.62, and current `main`. In the strict scenario, the repository commits `vendor -&amp;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Trust boundary and preconditions&lt;/p&gt;
&lt;p&gt;The attacker controls:&lt;/p&gt;
&lt;p&gt;- an untrusted Git repository that the application clones;
- a mode-`120000` tracked symlink named `vendor`;
- the initialized submodule&amp;#39;s content.&lt;/p&gt;
&lt;p&gt;The consuming application controls the call and uses a fixed layout rule:&lt;/p&gt;
&lt;p&gt;```python
submodule.move(&amp;#34;vendor/module&amp;#34;)
```&lt;/p&gt;
&lt;p&gt;The trigger requires the application to initialize the subm…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: GitPython&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;GitPython&amp;#39;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&amp;#39;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.&lt;/p&gt;
&lt;p&gt;The reporter reproduced this on the latest release, GitPython 3.1.62, and current `main`. In the strict scenario, the repository commits `vendor -&amp;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Trust boundary and preconditions&lt;/p&gt;
&lt;p&gt;The attacker controls:&lt;/p&gt;
&lt;p&gt;- an untrusted Git repository that the application clones;
- a mode-`120000` tracked symlink named `vendor`;
- the initialized submodule&amp;#39;s content.&lt;/p&gt;
&lt;p&gt;The consuming application controls the call and uses a fixed layout rule:&lt;/p&gt;
&lt;p&gt;```python
submodule.move(&amp;#34;vendor/module&amp;#34;)
```&lt;/p&gt;
&lt;p&gt;The trigger requires the application to initialize the subm…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-gq48-pqfc-9p58</guid>
    </item>
  </channel>
</rss>
