CVE-2026-76221
GitPython before 3.1.58 Config Injection via option-name
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.7
GitPython before 3.1.58 Config Injection via option-name
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
CVE-2026-76221- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-74
- Updated
- 2026-11-02
EUVDEUVD-2026-62462
8.7
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
EUVD-2026-62462- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-78pq-g4m8-fx2c
8.7
GitPython before 3.1.58 contains a config-name injection vulnerability in the option-name...
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
GHSA-78pq-g4m8-fx2c- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-74
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jm78-9fvv-mhgr
8.8
GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling forged core.sshCommand/hooksPath (RCE)
Summary
GitPython's config-name validator only neutralizes CR/LF/NUL for the "option" 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 <cmd> # is written as \tsshCommand = touch <cmd> # = <value>, which git parses as core.sshCommand = touch <cmd> (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).
Root Cause
_assure_config_name_safe(name, label) (git/config.py:897) applies the bracket/quote state machine ONLY when label == "section"; for the "option" label it falls through with just the UNSAFE_CONFIG_CHARS_RE = [\r\n\x00] regex. write_section then writes the option name verbatim into "\t%s = %s\n" (config.py:702).
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 same name-control model accepted by the related published advisories GHSA-3rp5-jjmw-4wv2 and GHSA-mv93-w799-cj2w). Default configuration.
Proof of Concept
with repo.config_writer() as cw:
cw.set_value("core", "sshCommand = touch /tmp/RCE #", "x")
# git config --get core.sshCommand -> touch /tmp/RCE
Attack Chain
- Entry: app calls config writer with attacker-controlled OPTION name:
set_value("core", "sshCommand = touch /tmp/RCE #", "x"). - Check:
_assure_config_name_safe(option, "option")@ config.py. Guard: regex matches only[\r\n\x00]; bracket/quote state machine is gated onlabel=="section". Bypass proof:=,#,space pass → noValueError. - Sink:
write_sectionwrites"\tsshCommand = touch /tmp/RCE # = x\n"(config.py:702). - Impact: git parses
core.sshCommand=touch /tmp/RCE→ arbitrary code execution on next git op.
Bypass Evidence
Independently reproduced (gate harness): set_value('core','sshCommand = touch <RCE> #','x') → no ValueError; file line sshCommand = touch <RCE> # = x; git config --get core.sshCommand → touch <RCE> (rc=0). Also verified core.hooksPath via both GitConfigParser and repo.config_writer(). Fix-commit read: bracket/quote checks are inside if label == "section"; the "option" label is not covered.
Affected Versions
GitPython <= 3.1.57 (validator present verbatim on the latest release tag).
Suggested Fix
Apply the section-name safety checks (reject =, #, ;, [, ], whitespace) to the "option" label as well, or validate the fully-rendered config line after substitution.
Reported by zx (Jace) — GitHub: @manus-use
- Record
GHSA-jm78-9fvv-mhgr- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-74, CWE-88
- Updated
- 2026-11-02
NVD
8.7
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
CVE-2026-76221- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-74
- Updated
- 2026-11-02
OSVALPINE-CVE-2026-76221
8.7
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
ALPINE-CVE-2026-76221- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-03
Show 14 moreShow less
OSV
8.7
GitPython before 3.1.58 Config Injection via option-name
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
CVE-2026-76221- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-74
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-76221
8.7
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
DEBIAN-CVE-2026-76221- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVGHSA-jm78-9fvv-mhgr
8.8
GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling forged core.sshCommand/hooksPath (RCE)
Summary
GitPython's config-name validator only neutralizes CR/LF/NUL for the "option" 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 <cmd> # is written as \tsshCommand = touch <cmd> # = <value>, which git parses as core.sshCommand = touch <cmd> (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).
Root Cause
_assure_config_name_safe(name, label) (git/config.py:897) applies the bracket/quote state machine ONLY when label == "section"; for the "option" label it falls through with just the UNSAFE_CONFIG_CHARS_RE = [\r\n\x00] regex. write_section then writes the option name verbatim into "\t%s = %s\n" (config.py:702).
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 same name-control model accepted by the related published advisories GHSA-3rp5-jjmw-4wv2 and GHSA-mv93-w799-cj2w). Default configuration.
Proof of Concept
with repo.config_writer() as cw:
cw.set_value("core", "sshCommand = touch /tmp/RCE #", "x")
# git config --get core.sshCommand -> touch /tmp/RCE
Attack Chain
- Entry: app calls config writer with attacker-controlled OPTION name:
set_value("core", "sshCommand = touch /tmp/RCE #", "x"). - Check:
_assure_config_name_safe(option, "option")@ config.py. Guard: regex matches only[\r\n\x00]; bracket/quote state machine is gated onlabel=="section". Bypass proof:=,#,space pass → noValueError. - Sink:
write_sectionwrites"\tsshCommand = touch /tmp/RCE # = x\n"(config.py:702). - Impact: git parses
core.sshCommand=touch /tmp/RCE→ arbitrary code execution on next git op.
Bypass Evidence
Independently reproduced (gate harness): set_value('core','sshCommand = touch <RCE> #','x') → no ValueError; file line sshCommand = touch <RCE> # = x; git config --get core.sshCommand → touch <RCE> (rc=0). Also verified core.hooksPath via both GitConfigParser and repo.config_writer(). Fix-commit read: bracket/quote checks are inside if label == "section"; the "option" label is not covered.
Affected Versions
GitPython <= 3.1.57 (validator present verbatim on the latest release tag).
Suggested Fix
Apply the section-name safety checks (reject =, #, ;, [, ], whitespace) to the "option" label as well, or validate the fully-rendered config line after substitution.
Reported by zx (Jace) — GitHub: @manus-use
- Record
GHSA-jm78-9fvv-mhgr- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-74, CWE-88
- Updated
- 2026-11-02
OSVOESA-2026-3699
9.3
python-GitPython security update
GitPython is a python library used to interact with git repositories, high-level like git-porcelain, or low-level like git-plumbing.
Security Fix(es):
GitPython before 3.1.57 contains an incomplete denylist in the unsafe_git_archive_options guard that omits --add-file and --add-virtual-file options. Attackers can supply these options to Repo.archive() to read arbitrary files from the filesystem and include them in the returned archive.(CVE-2026-73619)
GitPython before 3.1.57 fails to guard git option forwarding in IndexFile.checkout() and TagReference.create(), allowing attackers to pass unsafe options via kwargs. Attackers can use --prefix to overwrite arbitrary files with repository content or -F to read arbitrary files returned in-band.(CVE-2026-73620)
GitPython before 3.1.56 contains an argument injection vulnerability in the Commit.count() method, which forwards keyword arguments to 'git rev-list' without the check_unsafe_options guard present in the sibling iter_items method. An attacker who can control options passed to Commit.count (e.g., via an application that forwards a user-supplied options dict) can supply output=<path>, causing 'git rev-list --output=<path>' to open and truncate the target file to zero bytes before revision parsing. This allows destruction/blanking of an arbitrary file at the process's privilege level (no content control, 0-byte truncation).(CVE-2026-73621)
GitPython before 3.1.55 fails to disable environment variable expansion in Remote.create() and Submodule.add() URL handling, allowing attackers to exfiltrate secrets by supplying URLs containing variable references. Attackers can craft URLs with environment variable tokens that are expanded into .git/config and .gitmodules, then transmitted to attacker-controlled hosts during fetch or pull operations.(CVE-2026-73622)
GitPython before 3.1.54 contains an incomplete denylist in unsafe_git_clone_options that omits --template, allowing attackers to achieve arbitrary command execution during clone operations. Attackers can supply --template pointing to a directory containing malicious post-checkout hooks that execute when git clones the repository.(CVE-2026-73623)
GitPython versions before 3.1.54 contain an arbitrary file overwrite vulnerability in the Diffable.diff method that fails to validate git options passed through kwargs. Attackers can supply the --output argument via the other parameter or output kwarg to write patch content to attacker-chosen file paths at process privilege level.(CVE-2026-73624)
GitPython versions before 3.1.54 contain a remote code execution vulnerability in the check_unsafe_options guard that can be bypassed by smuggling git options inside single-character kwarg values. Attackers can supply crafted option dictionaries to clone_from, fetch, pull, push, ls_remote, iter_commits, blame, or archive methods to execute arbitrary OS commands via the --upload-pack parameter.(CVE-2026-73625)
GitPython versions before 3.1.58 fail to validate options passed to git rm and git checkout commands in IndexFile.remove() and Head.checkout(). Attackers can supply --pathspec-from-file and --pathspec-file-nul parameters to read arbitrary files accessible to the process, with full file contents returned in GitCommandError.stderr.(CVE-2026-76217)
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.(CVE-2026-76218)
GitPython versions before 3.1.58 contain an arbitrary file overwrite vulnerability in IndexFile.from_tree, IndexFile.reset, and IndexFile.merge_tree methods that append caller-influenced treeish strings to git read-tree without option validation or argument separation. Attackers can inject the --index-output option to…
- Record
OESA-2026-3699- CVSS 4.0
- 9.3 Critical
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVOESA-2026-3700
9.3
python-GitPython security update
GitPython is a python library used to interact with git repositories, high-level like git-porcelain, or low-level like git-plumbing.
Security Fix(es):
GitPython before 3.1.57 contains an incomplete denylist in the unsafe_git_archive_options guard that omits --add-file and --add-virtual-file options. Attackers can supply these options to Repo.archive() to read arbitrary files from the filesystem and include them in the returned archive.(CVE-2026-73619)
GitPython before 3.1.57 fails to guard git option forwarding in IndexFile.checkout() and TagReference.create(), allowing attackers to pass unsafe options via kwargs. Attackers can use --prefix to overwrite arbitrary files with repository content or -F to read arbitrary files returned in-band.(CVE-2026-73620)
GitPython before 3.1.56 contains an argument injection vulnerability in the Commit.count() method, which forwards keyword arguments to 'git rev-list' without the check_unsafe_options guard present in the sibling iter_items method. An attacker who can control options passed to Commit.count (e.g., via an application that forwards a user-supplied options dict) can supply output=<path>, causing 'git rev-list --output=<path>' to open and truncate the target file to zero bytes before revision parsing. This allows destruction/blanking of an arbitrary file at the process's privilege level (no content control, 0-byte truncation).(CVE-2026-73621)
GitPython before 3.1.55 fails to disable environment variable expansion in Remote.create() and Submodule.add() URL handling, allowing attackers to exfiltrate secrets by supplying URLs containing variable references. Attackers can craft URLs with environment variable tokens that are expanded into .git/config and .gitmodules, then transmitted to attacker-controlled hosts during fetch or pull operations.(CVE-2026-73622)
GitPython before 3.1.54 contains an incomplete denylist in unsafe_git_clone_options that omits --template, allowing attackers to achieve arbitrary command execution during clone operations. Attackers can supply --template pointing to a directory containing malicious post-checkout hooks that execute when git clones the repository.(CVE-2026-73623)
GitPython versions before 3.1.54 contain an arbitrary file overwrite vulnerability in the Diffable.diff method that fails to validate git options passed through kwargs. Attackers can supply the --output argument via the other parameter or output kwarg to write patch content to attacker-chosen file paths at process privilege level.(CVE-2026-73624)
GitPython versions before 3.1.54 contain a remote code execution vulnerability in the check_unsafe_options guard that can be bypassed by smuggling git options inside single-character kwarg values. Attackers can supply crafted option dictionaries to clone_from, fetch, pull, push, ls_remote, iter_commits, blame, or archive methods to execute arbitrary OS commands via the --upload-pack parameter.(CVE-2026-73625)
GitPython versions before 3.1.58 fail to validate options passed to git rm and git checkout commands in IndexFile.remove() and Head.checkout(). Attackers can supply --pathspec-from-file and --pathspec-file-nul parameters to read arbitrary files accessible to the process, with full file contents returned in GitCommandError.stderr.(CVE-2026-76217)
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.(CVE-2026-76218)
GitPython versions before 3.1.58 contain an arbitrary file overwrite vulnerability in IndexFile.from_tree, IndexFile.reset, and IndexFile.merge_tree methods that append caller-influenced treeish strings to git read-tree without option validation or argument separation. Attackers can inject the --index-output option to…
- Record
OESA-2026-3700- CVSS 4.0
- 9.3 Critical
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVOESA-2026-3721
9.3
python-GitPython security update
GitPython is a python library used to interact with git repositories, high-level like git-porcelain, or low-level like git-plumbing.
Security Fix(es):
GitPython before 3.1.57 contains an incomplete denylist in the unsafe_git_archive_options guard that omits --add-file and --add-virtual-file options. Attackers can supply these options to Repo.archive() to read arbitrary files from the filesystem and include them in the returned archive.(CVE-2026-73619)
GitPython before 3.1.57 fails to guard git option forwarding in IndexFile.checkout() and TagReference.create(), allowing attackers to pass unsafe options via kwargs. Attackers can use --prefix to overwrite arbitrary files with repository content or -F to read arbitrary files returned in-band.(CVE-2026-73620)
GitPython before 3.1.56 contains an argument injection vulnerability in the Commit.count() method, which forwards keyword arguments to 'git rev-list' without the check_unsafe_options guard present in the sibling iter_items method. An attacker who can control options passed to Commit.count (e.g., via an application that forwards a user-supplied options dict) can supply output=<path>, causing 'git rev-list --output=<path>' to open and truncate the target file to zero bytes before revision parsing. This allows destruction/blanking of an arbitrary file at the process's privilege level (no content control, 0-byte truncation).(CVE-2026-73621)
GitPython before 3.1.55 fails to disable environment variable expansion in Remote.create() and Submodule.add() URL handling, allowing attackers to exfiltrate secrets by supplying URLs containing variable references. Attackers can craft URLs with environment variable tokens that are expanded into .git/config and .gitmodules, then transmitted to attacker-controlled hosts during fetch or pull operations.(CVE-2026-73622)
GitPython before 3.1.54 contains an incomplete denylist in unsafe_git_clone_options that omits --template, allowing attackers to achieve arbitrary command execution during clone operations. Attackers can supply --template pointing to a directory containing malicious post-checkout hooks that execute when git clones the repository.(CVE-2026-73623)
GitPython versions before 3.1.54 contain an arbitrary file overwrite vulnerability in the Diffable.diff method that fails to validate git options passed through kwargs. Attackers can supply the --output argument via the other parameter or output kwarg to write patch content to attacker-chosen file paths at process privilege level.(CVE-2026-73624)
GitPython versions before 3.1.54 contain a remote code execution vulnerability in the check_unsafe_options guard that can be bypassed by smuggling git options inside single-character kwarg values. Attackers can supply crafted option dictionaries to clone_from, fetch, pull, push, ls_remote, iter_commits, blame, or archive methods to execute arbitrary OS commands via the --upload-pack parameter.(CVE-2026-73625)
GitPython versions before 3.1.58 fail to validate options passed to git rm and git checkout commands in IndexFile.remove() and Head.checkout(). Attackers can supply --pathspec-from-file and --pathspec-file-nul parameters to read arbitrary files accessible to the process, with full file contents returned in GitCommandError.stderr.(CVE-2026-76217)
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.(CVE-2026-76218)
GitPython versions before 3.1.58 contain an arbitrary file overwrite vulnerability in IndexFile.from_tree, IndexFile.reset, and IndexFile.merge_tree methods that append caller-influenced treeish strings to git read-tree without option validation or argument separation. Attackers can inject the --index-output option to…
- Record
OESA-2026-3721- CVSS 4.0
- 9.3 Critical
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVPYSEC-2026-3783
8.7
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
PYSEC-2026-3783- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVRHSA-2026:63385
8.8
Red Hat Security Advisory: Satellite 6.19.4 Async Update
- Record
RHSA-2026:63385- CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-76221
8.7
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 'sshCommand = touch /tmp/RCE #' to execute arbitrary commands via core.sshCommand or core.hooksPath on the next git operation.
- Record
UBUNTU-CVE-2026-76221- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 8.8 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVCLSA-2026-1787219647 No score
TuxCare security update for gitpython (1 CVE)
TuxCare rebuilt gitpython to address 1 CVE. Fixed in 3.1.31.post7+tuxcare.
- Record
CLSA-2026-1787219647- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11566-1 No score
python313-GitPython-3.1.59-2.1 on GA media
These are all security issues fixed in the python313-GitPython-3.1.59-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11566-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21874-1 No score
Security update for python-GitPython
This update for python-GitPython fixes the following issues:
- CVE-2026-67322: environment-variable exfiltration in
Repo.clone_from()URL via os.path.expandvars() (bsc#1273357). - CVE-2026-67323: unguarded Git options passed as keyword arguments in
Repo.archive()andgit.ls_remote()allow for command injection (bsc#1273358). - CVE-2026-67325: incomplete command injection blocklist fails to account for git's long-option prefix abbreviation feature and allows for bypass (bsc#1273359).
- CVE-2026-67326: failure to validate newline characters in the section parameter of
config_writer()can lead to RCE viacore.hooksPath(bsc#1273364). - CVE-2026-69097: failure to properly escape section names in Git
configfiles allows for injection of arbitrary configuration directives through malicious submodule names and can lead to RCE (bsc#1273414). - CVE-2026-73619: incomplete denylist in the
unsafe_git_archive_optionsguard that omits--add-fileand--add- virtual-fileoptions can lead to arbitrary file reads (bsc#1275755). - CVE-2026-73620: failure to guard Git option forwarding in
IndexFile.checkout()andTagReference.create()can lead to arbitrary file reads and writes (bsc#1275756). - CVE-2026-73621: argument injection in the
Commit.count()method allows for destruction/blanking of arbitrary files (bsc#1275757). - CVE-2026-73622: failure to disable environment variable expansion in
Remote.create()andSubmodule.add()URL handling allows for secret exfiltration via URLs containing variable references (bsc#1275751). - CVE-2026-73623: incomplete denylist in
unsafe_git_clone_optionsthat omits--templateallows for arbitrary command execution (bsc#1275752). - CVE-2026-73624:
Diffable.diffmethod fails to validate git options passed throughkwargs, which can lead to arbitrary file writes (bsc#1275753). - CVE-2026-73625:
check_unsafe_optionsguard bypass via smuggling of git options inside single-characterkwargvalues can lead to arbitrary code execution (bsc#1275754). - CVE-2026-76217: failure to validate options passed to
git rmandgit checkoutcommands inIndexFile.remove()andHead.checkout()can lead to arbitrary file reads (bsc#1275745). - CVE-2026-76218: unguarded git option forwarding in
Repo.initallows for arbitrary command execution (bsc#1275746). - CVE-2026-76219: unguarded
git read-treeoption forwarding inIndexFile.from_tree/reset/merge_treecan lead to arbitrary file overwrites (bsc#1275747). - CVE-2026-76220:
check_unsafe_optionsguard can be bypassed by combining a single-characterkwargwithsplit_single_char_options=False, which can lead to arbitrary OS command injection (bsc#1275748). - CVE-2026-76221:
config-nameinjection in theoption-namevalidator can lead to remote code execution (bsc#1275749). - CVE-2026-76222: failure to validate submodule names from
.gitmodulesfiles allows creation of Git repositories at arbitrary filesystem paths outside the intended clone directory (bsc#1275750). - CVE-2026-78675: failure to disable
merge_includeswhen parsing.gitmodulescan lead to discloseure of local file contents when arbitrary file paths are included via[include]directives (bsc#1276434). - CVE-2026-78676: failure to safely re-serialize multi-line
git-configvalues during write operations can corrupt dormant quoted values into live injected directives (bsc#1276433). - CVE-2026-78677: omission of
--separate-git-dirfromunsafe_git_clone_optionsallows for creation of arbitrary git directories outside the intended clone destination (bsc#1276432). - CVE-2026-78678: incomplete denylist in the
unsafe_git_revision_optionsguard that omits--contentsand-Soptions allows for reading of arbitrary files when these options to are passed toRepo.blame()(bsc#1276431). - CVE-2026-78679: positional reference parameter can bypass an unsafe option guard and allows for arbitrary file read via…
- Record
openSUSE-SU-2026:21874-1- Updated
- 2026-11-02
OSVROOT-APP-PYPI-GHSA-jm78-9fvv-mhgr No score
GHSA-jm78-9fvv-mhgr in GitPython - Patched by Root
Root has patched GHSA-jm78-9fvv-mhgr in the GitPython package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-GHSA-jm78-9fvv-mhgr- Updated
- 2026-11-02
OSVSUSE-SU-2026:4072-1 No score
Security update for python-GitPython
This update for python-GitPython fixes the following issues:
- CVE-2026-42215: command injection via Git options bypass (bsc#1264604).
- CVE-2026-42284: unsafe option check validates multi_options before shlex.split transforms it (bsc#1264605).
- CVE-2026-44243: path traversal in GitPython reference APIs allows arbitrary file write and delete outside the repository (bsc#1264606).
- CVE-2026-44244: newline injection in config_writer().set_value() enables RCE via core.hooksPath (bsc#1264608).
- CVE-2026-67322: vulnerable to environment-variable exfiltration in Repo.clone_from() (bsc#1273357).
- CVE-2026-67323: fails to guard against dangerous Git options passed as keyword arguments in Repo.archive() and git.ls_remote() (bsc#1273358).
- CVE-2026-67325: contains an incomplete command injection blocklist that fails to account for git's long-option prefix abbreviation feature (bsc#1273359).
- CVE-2026-67326: fails to validate newline characters in the section parameter of config_writer() (bsc#1273364).
- CVE-2026-69097: fails to properly escape section names in git config files, allowing attackers to inject arbitrary configuration directives through malicious submodule names (bsc#1273414).
- CVE-2026-73619: incomplete denylist in the
unsafe_git_archive_optionsguard that omits--add-fileand--add- virtual-fileoptions can lead to arbitrary file reads (bsc#1275755). - CVE-2026-73620: failure to guard git option forwarding in
IndexFile.checkout()andTagReference.create()can lead to arbitrary file reads and writes (bsc#1275756). - CVE-2026-73621: argument injection in the
Commit.count()method allows for destruction/blanking of arbitrary files (bsc#1275757). - CVE-2026-73622: failure to disable environment variable expansion in
Remote.create()andSubmodule.add()URL handling allows for secret exfiltration via URLs containing variable references (bsc#1275751). - CVE-2026-73623: incomplete denylist in
unsafe_git_clone_optionsthat omits--templateallows for arbitrary command execution (bsc#1275752). - CVE-2026-73624:
Diffable.diffmethod fails to validate git options passed throughkwargs, which can lead to arbitrary file writes (bsc#1275753). - CVE-2026-73625:
check_unsafe_optionsguard bypass via smuggling of git options inside single-characterkwargvalues can lead to arbitrary code execution (bsc#1275754). - CVE-2026-76217: failure to validate options passed to
git rmandgit checkoutcommands inIndexFile.remove()andHead.checkout()can lead to arbitrary file reads (bsc#1275745). - CVE-2026-76218: unguarded git option forwarding in
Repo.initallows for arbitrary command execution (bsc#1275746). - CVE-2026-76219: unguarded
git read-treeoption forwarding inIndexFile.from_tree/reset/merge_treecan lead to arbitrary file overwrites (bsc#1275747). - CVE-2026-76220:
check_unsafe_optionsguard can be bypassed by combining a single-characterkwargwithsplit_single_char_options=False, which can lead to arbitrary OS command injection (bsc#1275748). - CVE-2026-76221:
config-nameinjection in theoption-namevalidator can lead to remote code execution (bsc#1275749). - CVE-2026-76222: failure to validate submodule names from
.gitmodulesfiles allows creation of Git repositories at arbitrary filesystem paths outside the intended clone directory (bsc#1275750). - CVE-2026-78675: fails to disable merge_includes when parsing .gitmodules, allowing attackers to disclose local file content by including arbitrary file paths via [include] directives (bsc#1276434).
- CVE-2026-78676: fails to safely re-serialize multi-line git-config values during write operations, corrupting dormant quoted values into injected directives (bsc#1276433).
- CVE-2026-78677: allowing creation of arbitrary git directories outside the intended clone destination (bsc#1276432).
- CVE-2026-78678: an incomplete denylist in the unsafe_git_revision_options guard that omits --contents…
- Record
SUSE-SU-2026:4072-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
gitpythonPyPI |
through 3.1.57 | 3.1.58 |
py3-gitpythonAlpine:v3.24 |
before 3.1.61-r0 | 3.1.61-r0 |
gitpythonTuxCare:PyPI |
3.1.31 up to 3.1.31.post7+tuxcare, plus listed versions 3.1.31.post1+tuxcare3.1.31.post2+tuxcare3.1.31.post3+tuxcare3.1.31.post4+tuxcare3.1.31.post5+tuxcare3.1.31.post6+tuxcare |
3.1.31.post7+tuxcare |
python-gitDebian:12 |
before 3.1.30-1+deb12u3, plus listed versions 3.1.30-13.1.30-1+deb12u2 |
3.1.30-1+deb12u3 |
python-gitDebian:13 |
before 3.1.44-1+deb13u1, plus listed versions 3.1.44-1 |
3.1.44-1+deb13u1 |
python-gitDebian:14 |
before 3.1.61-1, plus listed versions 3.1.44-13.1.45-13.1.46-13.1.50-1 |
3.1.61-1 |
gitpythonPyPI |
before 3.1.58, plus listed versions 0.1.70.2.0-beta10.3.0-beta10.3.0-beta20.3.1-beta2 Show 45 moreShow less0.3.20.3.2.10.3.2.RC10.3.30.3.40.3.50.3.60.3.71.0.01.0.11.0.22.0.02.0.12.0.22.0.32.0.42.0.52.0.62.0.72.0.82.0.92.0.9.dev02.0.9.dev12.1.02.1.12.1.102.1.112.1.122.1.132.1.142.1.152.1.22.1.32.1.42.1.52.1.62.1.72.1.82.1.93.0.03.0.13.0.23.0.33.0.43.0.5 |
3.1.58 |
python-GitPythonopenEuler:24.03-LTS-SP1 From an advisory covering 17 CVEs |
before 3.1.59-1.oe2403sp1 | 3.1.59-1.oe2403sp1 |
python-GitPythonopenEuler:24.03-LTS-SP3 From an advisory covering 17 CVEs |
before 3.1.59-1.oe2403sp3 | 3.1.59-1.oe2403sp3 |
python-GitPythonopenEuler:24.03-LTS-SP4 From an advisory covering 17 CVEs |
before 3.1.59-1.oe2403sp4 | 3.1.59-1.oe2403sp4 |
Show 40 moreShow less
| Package | Affected | Fixed |
|---|---|---|
openvox-serverRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 0:8.15.2-1.el9sat | 0:8.15.2-1.el9sat |
openvox-serverRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 0:8.15.2-1.el9sat | 0:8.15.2-1.el9sat |
ansible-coreRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 1:2.16.19-1.el9sat | 1:2.16.19-1.el9sat |
ansible-testRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 1:2.16.19-1.el9sat | 1:2.16.19-1.el9sat |
ansible-coreRed Hat:satellite_maintenance:6.19::el9 From an advisory covering 22 CVEs |
before 1:2.16.19-1.el9sat | 1:2.16.19-1.el9sat |
ansible-coreRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 1:2.16.19-1.el9sat | 1:2.16.19-1.el9sat |
ansible-testRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 1:2.16.19-1.el9sat | 1:2.16.19-1.el9sat |
python3.12-aiohttpRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.14.3-1.el9pc | 0:3.14.3-1.el9pc |
python3.12-aiohttp-debuginfoRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.14.3-1.el9pc | 0:3.14.3-1.el9pc |
python3.12-aiohttp-debugsourceRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.14.3-1.el9pc | 0:3.14.3-1.el9pc |
python3.12-aiohttpRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.14.3-1.el9pc | 0:3.14.3-1.el9pc |
python3.12-aiohttp-debuginfoRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.14.3-1.el9pc | 0:3.14.3-1.el9pc |
python3.12-aiohttp-debugsourceRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.14.3-1.el9pc | 0:3.14.3-1.el9pc |
python3.12-gitpythonRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.1.59-1.el9pc | 0:3.1.59-1.el9pc |
python3.12-gitpythonRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 0:3.1.59-1.el9pc | 0:3.1.59-1.el9pc |
rubygem-jwtRed Hat:satellite_capsule:6.19::el9 From an advisory covering 22 CVEs |
before 0:2.10.3-1.el9sat | 0:2.10.3-1.el9sat |
rubygem-jwtRed Hat:satellite_utils:6.19::el9 From an advisory covering 22 CVEs |
before 0:2.10.3-1.el9sat | 0:2.10.3-1.el9sat |
rubygem-jwtRed Hat:satellite:6.19::el9 From an advisory covering 22 CVEs |
before 0:2.10.3-1.el9sat | 0:2.10.3-1.el9sat |
GitPythonRoot:PyPI |
before 3.1.47+aikido.8 | 3.1.47+aikido.83.1.47+aikido.93.1.46+aikido.123.1.46+aikido.113.1.46+aikido.133.1.47+aikido.73.1.46+aikido.10 |
python-GitPythonSUSE:Linux Enterprise Module for Python 3 15 SP7 From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise Server 15 SP4-LTSS From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise Server 15 SP5-LTSS From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise Server 15 SP6-LTSS From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise Server for SAP Applications 15 SP4 From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise Server for SAP Applications 15 SP5 From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-GitPythonSUSE:Linux Enterprise Server for SAP Applications 15 SP6 From an advisory covering 27 CVEs |
before 3.1.34.1693646983.2a2ae77-150400.9.8.1 | 3.1.34.1693646983.2a2ae77-150400.9.8.1 |
python-gitUbuntu:Pro:14.04:LTS |
All versions, plus listed versions 0.3.2~RC1-20.3.2~RC1-30.3.2~RC1-3ubuntu0.1~esm10.3.2~RC1-3ubuntu0.1~esm20.3.2~RC1-3ubuntu0.1~esm3 |
None known |
python-gitUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.0.1+git137-gc8b8379-11.0.1+git137-gc8b8379-21.0.1+git137-gc8b8379-2.11.0.1+git137-gc8b8379-2.1ubuntu0.1~esm11.0.1+git137-gc8b8379-2.1ubuntu0.1~esm21.0.1+git137-gc8b8379-2.1ubuntu0.1~esm4 |
None known |
python-gitUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 2.1.5-12.1.6-12.1.7-12.1.8-12.1.8-1ubuntu0.1~esm12.1.8-1ubuntu0.1~esm22.1.8-1ubuntu0.1~esm4 |
None known |
python-gitUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 2.1.11-13.0.4-13.0.5-13.0.7-13.0.7-1ubuntu0.1~esm13.0.7-1ubuntu0.1~esm23.0.7-1ubuntu0.1~esm4 |
None known |
python-gitUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 3.1.14-13.1.23-13.1.24-13.1.24-1ubuntu0.1~esm13.1.24-1ubuntu0.1~esm23.1.24-1ubuntu0.1~esm3 |
None known |
python-gitUbuntu:Pro:24.04:LTS |
All versions, plus listed versions 3.1.30-13.1.37-13.1.37-33.1.37-3ubuntu0.1~esm2 |
None known |
python-gitUbuntu:26.10 |
All versions, plus listed versions 3.1.46-13.1.50-13.1.61-1 |
None known |
python-gitUbuntu:Pro:26.04:LTS |
All versions, plus listed versions 3.1.44-13.1.45-13.1.46-13.1.46-1ubuntu0.1~esm1 |
None known |
python-GitPythonopenSUSE:Tumbleweed From an advisory covering 9 CVEs |
before 3.1.59-2.1 | 3.1.59-2.1 |
python-GitPythonopenSUSE:Leap 16.0 From an advisory covering 26 CVEs |
before 3.1.44-160000.4.1 | 3.1.44-160000.4.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases, references | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-76221 is a high vulnerability (CVSS 8.7) in Gitpython-developers Gitpython, published August 7, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.48%, the 42nd percentile. Fixed in gitpython 3.1.58.
References
github.com/gitpython-developers/GitPython/security/advisories/GHSA-jm78-9fvv-mhgr
vulncheck.com/advisories/gitpython-before-config-injection-via-option-name
nvd.nist.gov/vuln/detail/CVE-2026-76221
github.com/advisories/GHSA-78pq-g4m8-fx2c
github.com/gitpython-developers/GitPython/pull/2204
github.com/gitpython-developers/GitPython/commit/a495ccd3b547ccd60b2187215823b72a9c0188bf
Show 194 moreShow less
github.com/gitpython-developers/GitPython/releases/tag/3.1.58
github.com/advisories/GHSA-jm78-9fvv-mhgr
security.alpinelinux.org/vuln/CVE-2026-76221
github.com/CVEProject/cvelistV5/tree/main/cves/2026/76xxx/CVE-2026-76221.json
security-tracker.debian.org/tracker/CVE-2026-76221
github.com/gitpython-developers/GitPython
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3699
nvd.nist.gov/vuln/detail/CVE-2026-73619
nvd.nist.gov/vuln/detail/CVE-2026-73620
nvd.nist.gov/vuln/detail/CVE-2026-73621
nvd.nist.gov/vuln/detail/CVE-2026-73622
nvd.nist.gov/vuln/detail/CVE-2026-73623
nvd.nist.gov/vuln/detail/CVE-2026-73624
nvd.nist.gov/vuln/detail/CVE-2026-73625
nvd.nist.gov/vuln/detail/CVE-2026-76217
nvd.nist.gov/vuln/detail/CVE-2026-76218
nvd.nist.gov/vuln/detail/CVE-2026-76219
nvd.nist.gov/vuln/detail/CVE-2026-76220
nvd.nist.gov/vuln/detail/CVE-2026-76222
nvd.nist.gov/vuln/detail/CVE-2026-78675
nvd.nist.gov/vuln/detail/CVE-2026-78676
nvd.nist.gov/vuln/detail/CVE-2026-78677
nvd.nist.gov/vuln/detail/CVE-2026-78679
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3700
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3721
access.redhat.com/errata/RHSA-2026:63385
access.redhat.com/security/updates/classification
issues.redhat.com/browse/SAT-45592
issues.redhat.com/browse/SAT-46105
issues.redhat.com/browse/SAT-48574
issues.redhat.com/browse/SAT-48584
issues.redhat.com/browse/SAT-48585
issues.redhat.com/browse/SAT-48586
issues.redhat.com/browse/SAT-48587
issues.redhat.com/browse/SAT-48588
issues.redhat.com/browse/SAT-48589
issues.redhat.com/browse/SAT-48628
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_63385.json
access.redhat.com/security/cve/CVE-2026-10051
bugzilla.redhat.com/show_bug.cgi?id=2499928
cve.org/CVERecord?id=CVE-2026-10051
nvd.nist.gov/vuln/detail/CVE-2026-10051
gitlab.eclipse.org/security/cve-assignment/-/work_items/119
access.redhat.com/security/cve/CVE-2026-11332
bugzilla.redhat.com/show_bug.cgi?id=2485379
cve.org/CVERecord?id=CVE-2026-11332
nvd.nist.gov/vuln/detail/CVE-2026-11332
github.com/ansible/ansible
access.redhat.com/security/cve/CVE-2026-16493
bugzilla.redhat.com/show_bug.cgi?id=2503724
cve.org/CVERecord?id=CVE-2026-16493
nvd.nist.gov/vuln/detail/CVE-2026-16493
access.redhat.com/security/cve/CVE-2026-34993
bugzilla.redhat.com/show_bug.cgi?id=2484099
cve.org/CVERecord?id=CVE-2026-34993
nvd.nist.gov/vuln/detail/CVE-2026-34993
github.com/aio-libs/aiohttp/commit/dcf40f30637e8752c76781cf6703b5a236749a00
github.com/aio-libs/aiohttp/security/advisories/GHSA-jg22-mg44-37j8
access.redhat.com/security/cve/CVE-2026-42215
bugzilla.redhat.com/show_bug.cgi?id=2467802
cve.org/CVERecord?id=CVE-2026-42215
nvd.nist.gov/vuln/detail/CVE-2026-42215
github.com/gitpython-developers/GitPython/releases/tag/3.1.47
github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4
access.redhat.com/security/cve/CVE-2026-42284
bugzilla.redhat.com/show_bug.cgi?id=2467800
cve.org/CVERecord?id=CVE-2026-42284
nvd.nist.gov/vuln/detail/CVE-2026-42284
github.com/gitpython-developers/GitPython/security/advisories/GHSA-x2qx-6953-8485
access.redhat.com/security/cve/CVE-2026-44244
bugzilla.redhat.com/show_bug.cgi?id=2467804
cve.org/CVERecord?id=CVE-2026-44244
nvd.nist.gov/vuln/detail/CVE-2026-44244
github.com/gitpython-developers/GitPython/releases/tag/3.1.49
github.com/gitpython-developers/GitPython/security/advisories/GHSA-v87r-6q3f-2j67
access.redhat.com/security/cve/CVE-2026-45363
bugzilla.redhat.com/show_bug.cgi?id=2500739
cve.org/CVERecord?id=CVE-2026-45363
nvd.nist.gov/vuln/detail/CVE-2026-45363
github.com/jwt/ruby-jwt/commit/9820020869ad147b941e49d96ab8beba35532964
github.com/jwt/ruby-jwt/commit/db560b769a07bd9724e77ff505011ac01872106f
github.com/jwt/ruby-jwt/releases/tag/v2.10.3
github.com/jwt/ruby-jwt/releases/tag/v3.2.0
github.com/jwt/ruby-jwt/security/advisories/GHSA-c32j-vqhx-rx3x
access.redhat.com/security/cve/CVE-2026-54512
bugzilla.redhat.com/show_bug.cgi?id=2492015
cve.org/CVERecord?id=CVE-2026-54512
nvd.nist.gov/vuln/detail/CVE-2026-54512
github.com/FasterXML/jackson-databind/commit/434d6c511de7fdd9872f29157aafb6162d12d8d5
github.com/FasterXML/jackson-databind/issues/5988
github.com/FasterXML/jackson-databind/security/advisories/GHSA-j3rv-43j4-c7qm
access.redhat.com/security/cve/CVE-2026-68494
bugzilla.redhat.com/show_bug.cgi?id=2511026
cve.org/CVERecord?id=CVE-2026-68494
github.com/FasterXML/jackson-core/commit/050b429804dce2a7e08f0be1b0b4c3d040fdb9cd
github.com/FasterXML/jackson-core/commit/4cdd529749da396cc7edf6d4a2aad41d47902641
cve.org/CVERecord?id=CVE-2026-18401
access.redhat.com/security/cve/CVE-2026-69243
bugzilla.redhat.com/show_bug.cgi?id=2510831
cve.org/CVERecord?id=CVE-2026-69243
access.redhat.com/security/cve/CVE-2026-69244
bugzilla.redhat.com/show_bug.cgi?id=2510825
cve.org/CVERecord?id=CVE-2026-69244
access.redhat.com/security/cve/CVE-2026-73620
bugzilla.redhat.com/show_bug.cgi?id=2515261
cve.org/CVERecord?id=CVE-2026-73620
vulncheck.com/advisories/gitpython-before-arbitrary-file-overwrite-and-read
access.redhat.com/security/cve/CVE-2026-73622
bugzilla.redhat.com/show_bug.cgi?id=2515269
cve.org/CVERecord?id=CVE-2026-73622
vulncheck.com/advisories/gitpython-before-environment-variable-exfiltration-via-remote-add
access.redhat.com/security/cve/CVE-2026-73623
bugzilla.redhat.com/show_bug.cgi?id=2515275
cve.org/CVERecord?id=CVE-2026-73623
vulncheck.com/advisories/gitpython-before-remote-code-execution-via-template
access.redhat.com/security/cve/CVE-2026-73624
bugzilla.redhat.com/show_bug.cgi?id=2515243
cve.org/CVERecord?id=CVE-2026-73624
vulncheck.com/advisories/gitpython-before-arbitrary-file-overwrite-via-diff
access.redhat.com/security/cve/CVE-2026-73625
bugzilla.redhat.com/show_bug.cgi?id=2515272
cve.org/CVERecord?id=CVE-2026-73625
vulncheck.com/advisories/gitpython-before-remote-code-execution-via-kwarg-value-smuggling
access.redhat.com/security/cve/CVE-2026-76218
bugzilla.redhat.com/show_bug.cgi?id=2519603
cve.org/CVERecord?id=CVE-2026-76218
vulncheck.com/advisories/gitpython-before-remote-code-execution-via-repo-init
access.redhat.com/security/cve/CVE-2026-76219
bugzilla.redhat.com/show_bug.cgi?id=2519597
cve.org/CVERecord?id=CVE-2026-76219
vulncheck.com/advisories/gitpython-before-arbitrary-file-overwrite-via-read-tree
access.redhat.com/security/cve/CVE-2026-76220
bugzilla.redhat.com/show_bug.cgi?id=2519610
cve.org/CVERecord?id=CVE-2026-76220
vulncheck.com/advisories/gitpython-before-command-execution-via-split-single-char-options
access.redhat.com/security/cve/CVE-2026-76221
bugzilla.redhat.com/show_bug.cgi?id=2519596
cve.org/CVERecord?id=CVE-2026-76221
access.redhat.com/security/cve/CVE-2026-76222
bugzilla.redhat.com/show_bug.cgi?id=2519609
cve.org/CVERecord?id=CVE-2026-76222
vulncheck.com/advisories/gitpython-before-path-traversal-via-gitmodules-submodule-name
suse.com/support/update/announcement/2026/suse-su-20264072-1
bugzilla.suse.com/1264604
bugzilla.suse.com/1264605
bugzilla.suse.com/1264606
bugzilla.suse.com/1264608
bugzilla.suse.com/1273357
bugzilla.suse.com/1273358
bugzilla.suse.com/1273359
bugzilla.suse.com/1273364
bugzilla.suse.com/1273414
bugzilla.suse.com/1273498
bugzilla.suse.com/1275745
bugzilla.suse.com/1275746
bugzilla.suse.com/1275747
bugzilla.suse.com/1275748
bugzilla.suse.com/1275749
bugzilla.suse.com/1275750
bugzilla.suse.com/1275751
bugzilla.suse.com/1275752
bugzilla.suse.com/1275753
bugzilla.suse.com/1275754
bugzilla.suse.com/1275755
bugzilla.suse.com/1275756
bugzilla.suse.com/1275757
bugzilla.suse.com/1276430
bugzilla.suse.com/1276431
suse.com/security/cve/CVE-2026-42215
suse.com/security/cve/CVE-2026-42284
suse.com/security/cve/CVE-2026-44243
suse.com/security/cve/CVE-2026-44244
suse.com/security/cve/CVE-2026-67322
suse.com/security/cve/CVE-2026-67323
suse.com/security/cve/CVE-2026-67325
suse.com/security/cve/CVE-2026-67326
suse.com/security/cve/CVE-2026-69097
suse.com/security/cve/CVE-2026-73619
suse.com/security/cve/CVE-2026-73620
suse.com/security/cve/CVE-2026-73621
suse.com/security/cve/CVE-2026-73622
suse.com/security/cve/CVE-2026-73623
suse.com/security/cve/CVE-2026-73624
suse.com/security/cve/CVE-2026-73625
suse.com/security/cve/CVE-2026-76217
suse.com/security/cve/CVE-2026-76218
suse.com/security/cve/CVE-2026-76219
suse.com/security/cve/CVE-2026-76220
suse.com/security/cve/CVE-2026-76221
suse.com/security/cve/CVE-2026-76222
suse.com/security/cve/CVE-2026-78675
suse.com/security/cve/CVE-2026-78676
suse.com/security/cve/CVE-2026-78677
ubuntu.com/security/CVE-2026-76221
Left out here: 60 versions, 36 references and the rest of 5 source descriptions. The JSON record has them.