<?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 16:40:11 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-76220 — GitPython before 3.1.58 Command Execution via split_single_char_options</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-76220</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 command execution vulnerability in the check_unsafe_options guard that can be bypassed by combining a single-character kwarg with split_single_char_options=False. Attackers can supply a crafted kwargs dictionary to guarded methods like clone_from to emit a joined token parsed as --upload-pack, enabling arbitrary OS command execution at default allow_unsafe_options=False.&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 command execution vulnerability in the check_unsafe_options guard that can be bypassed by combining a single-character kwarg with split_single_char_options=False. Attackers can supply a crafted kwargs dictionary to guarded methods like clone_from to emit a joined token parsed as --upload-pack, enabling arbitrary OS command execution at default allow_unsafe_options=False.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-76220</guid>
    </item>
    <item>
      <title>GHSA-wvpp-8hx9-p66j — GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables comm…</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-wvpp-8hx9-p66j</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: GitPython&lt;/p&gt;
&lt;p&gt;## Summary
The `check_unsafe_options` guard can be bypassed on every guarded method (clone/clone_from, fetch/pull/push, ls_remote, iter_commits, blame, archive) by combining a single-character kwarg with `split_single_char_options=False`. The guard&amp;#39;s candidate list omits the smuggled option, but `transform_kwarg` emits a JOINED `-n&amp;lt;value&amp;gt;` argv token that git parses as `--upload-pack=&amp;lt;cmd&amp;gt;`, yielding arbitrary command execution at the default `allow_unsafe_options=False`. This is an incomplete-fix bypass of commit `e8d0fbf7` (the fix for GHSA-r9mr-m37c-5fr3), which only emits value-derived candidates when `split_single_char_options` is True.&lt;/p&gt;
&lt;p&gt;## Root Cause
`_option_candidates` derives value-token candidates only under `if len(key)==1 and split_single_char_options:` (cmd.py:1048, added by `e8d0fbf7`). With `split_single_char_options=False`, `_option_candidates([], {&amp;#34;n&amp;#34;:&amp;#34;utouch &amp;lt;cmd&amp;gt;;git-upload-pack&amp;#34;})` returns only `[&amp;#39;-n&amp;#39;]` (not on the denylist), so the guard passes. But `transform_kwarg(&amp;#39;n&amp;#39;, value, split_single_char_options=False)` emits the JOINED token `-nutouch &amp;lt;cmd&amp;gt;;git-upload-pack` (cmd.py:1631). git clusters value-less short flags then parses `-u&amp;lt;cmd&amp;gt;` = `--upload-pack=&amp;lt;cmd&amp;gt;` → command execution. The hardened guard WOULD block the joined token if it saw it — the flaw is it never receives it.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary OS command execution as the host process (via `--upload-pack`) at default `allow_unsafe_options=False`, affecting all guarded methods that forward kwargs. Prec…&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
The `check_unsafe_options` guard can be bypassed on every guarded method (clone/clone_from, fetch/pull/push, ls_remote, iter_commits, blame, archive) by combining a single-character kwarg with `split_single_char_options=False`. The guard&amp;#39;s candidate list omits the smuggled option, but `transform_kwarg` emits a JOINED `-n&amp;lt;value&amp;gt;` argv token that git parses as `--upload-pack=&amp;lt;cmd&amp;gt;`, yielding arbitrary command execution at the default `allow_unsafe_options=False`. This is an incomplete-fix bypass of commit `e8d0fbf7` (the fix for GHSA-r9mr-m37c-5fr3), which only emits value-derived candidates when `split_single_char_options` is True.&lt;/p&gt;
&lt;p&gt;## Root Cause
`_option_candidates` derives value-token candidates only under `if len(key)==1 and split_single_char_options:` (cmd.py:1048, added by `e8d0fbf7`). With `split_single_char_options=False`, `_option_candidates([], {&amp;#34;n&amp;#34;:&amp;#34;utouch &amp;lt;cmd&amp;gt;;git-upload-pack&amp;#34;})` returns only `[&amp;#39;-n&amp;#39;]` (not on the denylist), so the guard passes. But `transform_kwarg(&amp;#39;n&amp;#39;, value, split_single_char_options=False)` emits the JOINED token `-nutouch &amp;lt;cmd&amp;gt;;git-upload-pack` (cmd.py:1631). git clusters value-less short flags then parses `-u&amp;lt;cmd&amp;gt;` = `--upload-pack=&amp;lt;cmd&amp;gt;` → command execution. The hardened guard WOULD block the joined token if it saw it — the flaw is it never receives it.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary OS command execution as the host process (via `--upload-pack`) at default `allow_unsafe_options=False`, affecting all guarded methods that forward kwargs. Prec…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-wvpp-8hx9-p66j</guid>
    </item>
    <item>
      <title>PYSEC-2026-3843 — GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables comm…</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3843</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: gitpython&lt;/p&gt;
&lt;p&gt;## Summary
The `check_unsafe_options` guard can be bypassed on every guarded method (clone/clone_from, fetch/pull/push, ls_remote, iter_commits, blame, archive) by combining a single-character kwarg with `split_single_char_options=False`. The guard&amp;#39;s candidate list omits the smuggled option, but `transform_kwarg` emits a JOINED `-n&amp;lt;value&amp;gt;` argv token that git parses as `--upload-pack=&amp;lt;cmd&amp;gt;`, yielding arbitrary command execution at the default `allow_unsafe_options=False`. This is an incomplete-fix bypass of commit `e8d0fbf7` (the fix for GHSA-r9mr-m37c-5fr3), which only emits value-derived candidates when `split_single_char_options` is True.&lt;/p&gt;
&lt;p&gt;## Root Cause
`_option_candidates` derives value-token candidates only under `if len(key)==1 and split_single_char_options:` (cmd.py:1048, added by `e8d0fbf7`). With `split_single_char_options=False`, `_option_candidates([], {&amp;#34;n&amp;#34;:&amp;#34;utouch &amp;lt;cmd&amp;gt;;git-upload-pack&amp;#34;})` returns only `[&amp;#39;-n&amp;#39;]` (not on the denylist), so the guard passes. But `transform_kwarg(&amp;#39;n&amp;#39;, value, split_single_char_options=False)` emits the JOINED token `-nutouch &amp;lt;cmd&amp;gt;;git-upload-pack` (cmd.py:1631). git clusters value-less short flags then parses `-u&amp;lt;cmd&amp;gt;` = `--upload-pack=&amp;lt;cmd&amp;gt;` → command execution. The hardened guard WOULD block the joined token if it saw it — the flaw is it never receives it.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary OS command execution as the host process (via `--upload-pack`) at default `allow_unsafe_options=False`, affecting all guarded methods that forward kwargs. Prec…&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
The `check_unsafe_options` guard can be bypassed on every guarded method (clone/clone_from, fetch/pull/push, ls_remote, iter_commits, blame, archive) by combining a single-character kwarg with `split_single_char_options=False`. The guard&amp;#39;s candidate list omits the smuggled option, but `transform_kwarg` emits a JOINED `-n&amp;lt;value&amp;gt;` argv token that git parses as `--upload-pack=&amp;lt;cmd&amp;gt;`, yielding arbitrary command execution at the default `allow_unsafe_options=False`. This is an incomplete-fix bypass of commit `e8d0fbf7` (the fix for GHSA-r9mr-m37c-5fr3), which only emits value-derived candidates when `split_single_char_options` is True.&lt;/p&gt;
&lt;p&gt;## Root Cause
`_option_candidates` derives value-token candidates only under `if len(key)==1 and split_single_char_options:` (cmd.py:1048, added by `e8d0fbf7`). With `split_single_char_options=False`, `_option_candidates([], {&amp;#34;n&amp;#34;:&amp;#34;utouch &amp;lt;cmd&amp;gt;;git-upload-pack&amp;#34;})` returns only `[&amp;#39;-n&amp;#39;]` (not on the denylist), so the guard passes. But `transform_kwarg(&amp;#39;n&amp;#39;, value, split_single_char_options=False)` emits the JOINED token `-nutouch &amp;lt;cmd&amp;gt;;git-upload-pack` (cmd.py:1631). git clusters value-less short flags then parses `-u&amp;lt;cmd&amp;gt;` = `--upload-pack=&amp;lt;cmd&amp;gt;` → command execution. The hardened guard WOULD block the joined token if it saw it — the flaw is it never receives it.&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary OS command execution as the host process (via `--upload-pack`) at default `allow_unsafe_options=False`, affecting all guarded methods that forward kwargs. Prec…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3843</guid>
    </item>
  </channel>
</rss>
