<?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 21:29:44 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-76221 — GitPython before 3.1.58 Config Injection via option-name</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-76221</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 config-name injection vulnerability in the option-name validator that allows attackers to forge arbitrary git-config directives by injecting equals signs, hash symbols, and whitespace into option names. Attackers can inject malicious option names like &amp;#39;sshCommand = touch /tmp/RCE #&amp;#39; to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.&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 config-name injection vulnerability in the option-name validator that allows attackers to forge arbitrary git-config directives by injecting equals signs, hash symbols, and whitespace into option names. Attackers can inject malicious option names like &amp;#39;sshCommand = touch /tmp/RCE #&amp;#39; to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-76221</guid>
    </item>
    <item>
      <title>GHSA-jm78-9fvv-mhgr — GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling forged core.sshCommand…</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-jm78-9fvv-mhgr</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: GitPython&lt;/p&gt;
&lt;p&gt;## Summary
GitPython&amp;#39;s config-name validator only neutralizes CR/LF/NUL for the `&amp;#34;option&amp;#34;` label; it does not reject `=`, `#`, `;`, `[`, `]`, or whitespace in an **option name**. `write_section` writes the option name verbatim into the config file, so an option name such as `sshCommand = touch &amp;lt;cmd&amp;gt; #` is written as `\tsshCommand = touch &amp;lt;cmd&amp;gt; # = &amp;lt;value&amp;gt;`, which git parses as `core.sshCommand = touch &amp;lt;cmd&amp;gt;` (the trailing `#` comments out the intended value). This forges arbitrary config directives (`core.sshCommand`, `core.hooksPath`, `alias.*`) → RCE on the next git operation. This is a distinct field (option name, not section name) and distinct character class (`=`/`#`/space, not newline/bracket) from GHSA-3rp5-jjmw-4wv2 (section-name bracket injection) and GHSA-mv93-w799-cj2w / GHSA-v87r-6q3f-2j67 (newline injection).&lt;/p&gt;
&lt;p&gt;## Root Cause
`_assure_config_name_safe(name, label)` (`git/config.py:897`) applies the bracket/quote state machine ONLY when `label == &amp;#34;section&amp;#34;`; for the `&amp;#34;option&amp;#34;` label it falls through with just the `UNSAFE_CONFIG_CHARS_RE = [\r\n\x00]` regex. `write_section` then writes the option name verbatim into `&amp;#34;\t%s = %s\n&amp;#34;` (config.py:702).&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary git-config directive injection → remote code execution via `core.sshCommand` (fires on any ssh git operation, no staged file needed) or `core.hooksPath` (with a staged hook). Requires the embedding application to forward a caller-influenced OPTION NAME into the config writer (name-control model, the sa…&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
GitPython&amp;#39;s config-name validator only neutralizes CR/LF/NUL for the `&amp;#34;option&amp;#34;` label; it does not reject `=`, `#`, `;`, `[`, `]`, or whitespace in an **option name**. `write_section` writes the option name verbatim into the config file, so an option name such as `sshCommand = touch &amp;lt;cmd&amp;gt; #` is written as `\tsshCommand = touch &amp;lt;cmd&amp;gt; # = &amp;lt;value&amp;gt;`, which git parses as `core.sshCommand = touch &amp;lt;cmd&amp;gt;` (the trailing `#` comments out the intended value). This forges arbitrary config directives (`core.sshCommand`, `core.hooksPath`, `alias.*`) → RCE on the next git operation. This is a distinct field (option name, not section name) and distinct character class (`=`/`#`/space, not newline/bracket) from GHSA-3rp5-jjmw-4wv2 (section-name bracket injection) and GHSA-mv93-w799-cj2w / GHSA-v87r-6q3f-2j67 (newline injection).&lt;/p&gt;
&lt;p&gt;## Root Cause
`_assure_config_name_safe(name, label)` (`git/config.py:897`) applies the bracket/quote state machine ONLY when `label == &amp;#34;section&amp;#34;`; for the `&amp;#34;option&amp;#34;` label it falls through with just the `UNSAFE_CONFIG_CHARS_RE = [\r\n\x00]` regex. `write_section` then writes the option name verbatim into `&amp;#34;\t%s = %s\n&amp;#34;` (config.py:702).&lt;/p&gt;
&lt;p&gt;## Impact
Arbitrary git-config directive injection → remote code execution via `core.sshCommand` (fires on any ssh git operation, no staged file needed) or `core.hooksPath` (with a staged hook). Requires the embedding application to forward a caller-influenced OPTION NAME into the config writer (name-control model, the sa…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-jm78-9fvv-mhgr</guid>
    </item>
    <item>
      <title>PYSEC-2026-3783</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3783</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: gitpython&lt;/p&gt;
&lt;p&gt;GitPython before 3.1.58 contains a config-name injection vulnerability in the option-name validator that allows attackers to forge arbitrary git-config directives by injecting equals signs, hash symbols, and whitespace into option names. Attackers can inject malicious option names like &amp;#39;sshCommand = touch /tmp/RCE #&amp;#39; to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: gitpython&lt;/p&gt;
&lt;p&gt;GitPython before 3.1.58 contains a config-name injection vulnerability in the option-name validator that allows attackers to forge arbitrary git-config directives by injecting equals signs, hash symbols, and whitespace into option names. Attackers can inject malicious option names like &amp;#39;sshCommand = touch /tmp/RCE #&amp;#39; to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3783</guid>
    </item>
  </channel>
</rss>
