<?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-02T02:43:41.013631+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/brew-aider-cve-2026-110860</id>
    <title>BREW-aider-CVE-2026-110860 — GitPython: Submodule.move() follows an attacker-committed intermediate symlink outside the worktree</title>
    <updated>2026-11-02T02:43:41.024393+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Homebrew: aider</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/brew-aider-cve-2026-110860"/>
  </entry>
</feed>
