<?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://vulnerability.circl.lu</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>Tue, 29 Sep 2026 07:26:12 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-76218 — GitPython before 3.1.58 Remote Code Execution via Repo.init</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-76218</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; gitpython-developers GitPython&lt;/p&gt;
&lt;p&gt;GitPython before 3.1.58 contains a remote code execution vulnerability in Repo.init that forwards unsafe git options without validation. Attackers can supply a template parameter pointing to a directory with malicious git hooks that execute arbitrary code when git operations are performed on the initialized repository.&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 before 3.1.58 contains a remote code execution vulnerability in Repo.init that forwards unsafe git options without validation. Attackers can supply a template parameter pointing to a directory with malicious git hooks that execute arbitrary code when git operations are performed on the initialized repository.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-76218</guid>
    </item>
    <item>
      <title>GHSA-9rj7-rf2p-w77r — GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via --template clone hooks</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-9rj7-rf2p-w77r</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: GitPython&lt;/p&gt;
&lt;p&gt;## Summary
`Repo.init()` forwards `**kwargs` verbatim to `git init` with no unsafe-option guard and no `allow_unsafe_options` parameter. `git init --template=&amp;lt;dir&amp;gt;` copies `&amp;lt;dir&amp;gt;/hooks/*` into the new repo&amp;#39;s `.git/hooks`, so an attacker-controlled `template` kwarg plants a hook that executes on the next git operation → arbitrary code execution. `--template` is already recognized as unsafe for clone (it is on `unsafe_git_clone_options`, and GHSA-6p8h-3wgx-97gf covers the clone path), but `Repo.init` is a distinct method that never received a guard and needs an independent fix.&lt;/p&gt;
&lt;p&gt;## Root Cause
`Repo.init(path, mkdir, odbt, expand_vars, **kwargs)` is a bare `git.init(**kwargs)` (git/repo/base.py:1435) with no `check_unsafe_options` and no `allow_unsafe_options`.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary code execution (hook fires on next git op) at the privileges of the host process. Two preconditions raise attack complexity (AC:H): the app must forward a `template=` kwarg (KEY control) AND the attacker must stage an executable hook directory at a known path — the same profile GHSA-6p8h-3wgx-97gf accepted as HIGH for the clone path. Default `allow_unsafe_options` is irrelevant here because `Repo.init` has no guard at all.&lt;/p&gt;
&lt;p&gt;## Proof of Concept
```python
# attacker stages /evil/hooks/post-commit (executable)
from git import Repo
Repo.init(path, template=&amp;#34;/evil&amp;#34;)
# next commit runs /evil/hooks/post-commit -&amp;gt; ACE
```&lt;/p&gt;
&lt;p&gt;## Attack Chain
1. Entry: attacker stages `/evil/hooks/post-commit` (executable) and g…&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
`Repo.init()` forwards `**kwargs` verbatim to `git init` with no unsafe-option guard and no `allow_unsafe_options` parameter. `git init --template=&amp;lt;dir&amp;gt;` copies `&amp;lt;dir&amp;gt;/hooks/*` into the new repo&amp;#39;s `.git/hooks`, so an attacker-controlled `template` kwarg plants a hook that executes on the next git operation → arbitrary code execution. `--template` is already recognized as unsafe for clone (it is on `unsafe_git_clone_options`, and GHSA-6p8h-3wgx-97gf covers the clone path), but `Repo.init` is a distinct method that never received a guard and needs an independent fix.&lt;/p&gt;
&lt;p&gt;## Root Cause
`Repo.init(path, mkdir, odbt, expand_vars, **kwargs)` is a bare `git.init(**kwargs)` (git/repo/base.py:1435) with no `check_unsafe_options` and no `allow_unsafe_options`.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary code execution (hook fires on next git op) at the privileges of the host process. Two preconditions raise attack complexity (AC:H): the app must forward a `template=` kwarg (KEY control) AND the attacker must stage an executable hook directory at a known path — the same profile GHSA-6p8h-3wgx-97gf accepted as HIGH for the clone path. Default `allow_unsafe_options` is irrelevant here because `Repo.init` has no guard at all.&lt;/p&gt;
&lt;p&gt;## Proof of Concept
```python
# attacker stages /evil/hooks/post-commit (executable)
from git import Repo
Repo.init(path, template=&amp;#34;/evil&amp;#34;)
# next commit runs /evil/hooks/post-commit -&amp;gt; ACE
```&lt;/p&gt;
&lt;p&gt;## Attack Chain
1. Entry: attacker stages `/evil/hooks/post-commit` (executable) and g…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-9rj7-rf2p-w77r</guid>
    </item>
    <item>
      <title>PYSEC-2026-3840 — GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via --template clone hooks</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3840</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: gitpython&lt;/p&gt;
&lt;p&gt;## Summary
`Repo.init()` forwards `**kwargs` verbatim to `git init` with no unsafe-option guard and no `allow_unsafe_options` parameter. `git init --template=&amp;lt;dir&amp;gt;` copies `&amp;lt;dir&amp;gt;/hooks/*` into the new repo&amp;#39;s `.git/hooks`, so an attacker-controlled `template` kwarg plants a hook that executes on the next git operation → arbitrary code execution. `--template` is already recognized as unsafe for clone (it is on `unsafe_git_clone_options`, and GHSA-6p8h-3wgx-97gf covers the clone path), but `Repo.init` is a distinct method that never received a guard and needs an independent fix.&lt;/p&gt;
&lt;p&gt;## Root Cause
`Repo.init(path, mkdir, odbt, expand_vars, **kwargs)` is a bare `git.init(**kwargs)` (git/repo/base.py:1435) with no `check_unsafe_options` and no `allow_unsafe_options`.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary code execution (hook fires on next git op) at the privileges of the host process. Two preconditions raise attack complexity (AC:H): the app must forward a `template=` kwarg (KEY control) AND the attacker must stage an executable hook directory at a known path — the same profile GHSA-6p8h-3wgx-97gf accepted as HIGH for the clone path. Default `allow_unsafe_options` is irrelevant here because `Repo.init` has no guard at all.&lt;/p&gt;
&lt;p&gt;## Proof of Concept
```python
# attacker stages /evil/hooks/post-commit (executable)
from git import Repo
Repo.init(path, template=&amp;#34;/evil&amp;#34;)
# next commit runs /evil/hooks/post-commit -&amp;gt; ACE
```&lt;/p&gt;
&lt;p&gt;## Attack Chain
1. Entry: attacker stages `/evil/hooks/post-commit` (executable) and g…&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
`Repo.init()` forwards `**kwargs` verbatim to `git init` with no unsafe-option guard and no `allow_unsafe_options` parameter. `git init --template=&amp;lt;dir&amp;gt;` copies `&amp;lt;dir&amp;gt;/hooks/*` into the new repo&amp;#39;s `.git/hooks`, so an attacker-controlled `template` kwarg plants a hook that executes on the next git operation → arbitrary code execution. `--template` is already recognized as unsafe for clone (it is on `unsafe_git_clone_options`, and GHSA-6p8h-3wgx-97gf covers the clone path), but `Repo.init` is a distinct method that never received a guard and needs an independent fix.&lt;/p&gt;
&lt;p&gt;## Root Cause
`Repo.init(path, mkdir, odbt, expand_vars, **kwargs)` is a bare `git.init(**kwargs)` (git/repo/base.py:1435) with no `check_unsafe_options` and no `allow_unsafe_options`.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary code execution (hook fires on next git op) at the privileges of the host process. Two preconditions raise attack complexity (AC:H): the app must forward a `template=` kwarg (KEY control) AND the attacker must stage an executable hook directory at a known path — the same profile GHSA-6p8h-3wgx-97gf accepted as HIGH for the clone path. Default `allow_unsafe_options` is irrelevant here because `Repo.init` has no guard at all.&lt;/p&gt;
&lt;p&gt;## Proof of Concept
```python
# attacker stages /evil/hooks/post-commit (executable)
from git import Repo
Repo.init(path, template=&amp;#34;/evil&amp;#34;)
# next commit runs /evil/hooks/post-commit -&amp;gt; ACE
```&lt;/p&gt;
&lt;p&gt;## Attack Chain
1. Entry: attacker stages `/evil/hooks/post-commit` (executable) and g…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3840</guid>
    </item>
  </channel>
</rss>
