gitpython (PyPI)
Advisories
98
Latest version
—
License
—
OpenSSF Scorecard
—
How to fix
Upgrading to 3.2.1 or later clears every advisory below that has a fix.
Upgrade commands
pip
pip install --upgrade "gitpython>=3.2.1"poetry
poetry add "gitpython>=3.2.1"uv
uv add "gitpython>=3.2.1"Known vulnerabilities
| Advisory | Severity | Affected | Fixed in |
|---|---|---|---|
| GHSA-83vg-56qc-22m7 GitPython validates a submodule's ".git" path only after cloning into it (RCE) |
High EPSS 0.42% |
< 3.2.1 | 3.2.1 |
| GHSA-gq48-pqfc-9p58 GitPython: Submodule.move() follows an attacker-committed intermediate symlink outside the worktree |
Medium EPSS 0.19% |
< 3.2.0 | 3.2.0 |
| GHSA-23mf-xhv8-69c2 GitPython: arbitrary file read via attacker-controlled branch name in `Head.checkout()` (incomplete fix of CVE-2026-78679) |
High EPSS 0.39% |
< 3.2.0 | 3.2.0 |
| GHSA-f9j4-qggq-h239 GitPython Remote.pull() refspec bypasses the --upload-pack unsafe-option guard, enabling arbitrary command execution |
Critical EPSS 0.46% |
>= 3.1.30, < 3.2.0 | 3.2.0 |
| GHSA-w8jc-g24h-crhw GitPython command wrappers omit unsafe protocol and option checks |
High EPSS 0.42% |
< 3.2.0 | 3.2.0 |
| GHSA-m64x-33q8-m5h7 GitPython parse_actor_and_date() is vulnerable to quadratic backtracking on malformed identity lines |
High EPSS 0.34% |
< 3.2.0 | 3.2.0 |
| GHSA-fx3j-rwgx-fr94 GitPython: separate_git_dir leaks env vars via crafted .gitmodules submodule name |
High EPSS 0.29% |
< 3.2.0 | 3.2.0 |
| GHSA-59cr-6r3x-644w GitPython submodule update path traversal can write outside the repository |
Medium EPSS 0.40% |
< 3.1.62 | 3.1.62 |
| GHSA-qpf5-3wfw-fh7q Duplicate Advisory: Denial of Service via catastrophic backtracking (ReDoS) in Actor.name_email_regex — commit author/committer field parsing Withdrawn |
High | <= 3.1.59 | No fix yet |
| GHSA-2pxq-5vcg-rq29 Duplicate Advisory: Repository content can impersonate the git directory, leading to arbitrary code execution Withdrawn |
High | <= 3.1.59 | No fix yet |
| GHSA-g5vv-9gxw-82hx GitPython: Denial of Service via catastrophic backtracking (ReDoS) in Actor.name_email_regex — commit author/committer field parsing |
High EPSS 0.52% |
< 3.1.60 | 3.1.60 |
| GHSA-g5vv-9gxw-82hx GitPython: Denial of Service via catastrophic backtracking (ReDoS) in Actor.name_email_regex — commit author/committer field parsing |
High EPSS 0.52% |
< 3.1.60 | 3.1.60 |
| GHSA-rw58-wc66-99g4 Duplicate Advisory: GitPython 3.1.59: --no-index bypasses diff unsafe-option protections and enables a blind local-file content oracle |
Medium EPSS 0.41% |
>= 3.1.59, < 3.1.60 | 3.1.60 |
| GHSA-rw58-wc66-99g4 Duplicate Advisory: GitPython 3.1.59: --no-index bypasses diff unsafe-option protections and enables a blind local-file content oracle |
Medium EPSS 0.41% |
>= 3.1.59 | No fix yet |
| GHSA-rw58-wc66-99g4 Duplicate Advisory: GitPython 3.1.59: --no-index bypasses diff unsafe-option protections and enables a blind local-file content oracle |
Medium EPSS 0.41% |
>= 3.1.59, < 3.1.60 | 3.1.60 |
| GHSA-239g-whfq-7xj9 GitPython: Repository content can impersonate the git directory, leading to arbitrary code execution |
High EPSS 0.42% |
< 3.1.60 | 3.1.60 |
| GHSA-239g-whfq-7xj9 GitPython: Repository content can impersonate the git directory, leading to arbitrary code execution |
High EPSS 0.42% |
< 3.1.60 | 3.1.60 |
| GHSA-89ff-m8wv-p99r Duplicate Advisory: GitPython: Incomplete unsafe_git_revision_options denylist omits --contents/-S, enabling arbitrary file read via Repo.blame() Withdrawn |
Medium | <= 3.1.58 | No fix yet |
| GHSA-6rj2-96f5-chj9 Duplicate Advisory: GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling arbitrary file read (incomplete fix of 3af0c251) Withdrawn |
Medium | <= 3.1.58 | No fix yet |
| GHSA-7r39-6q8m-qw68 Duplicate Advisory: clone_from()/clone() omit --separate-git-dir from unsafe_git_clone_options, enabling arbitrary git-directory creation outside the destination Withdrawn |
High | <= 3.1.58 | No fix yet |
| GHSA-crmc-f4m7-33fj Duplicate Advisory: Arbitrary local file content disclosure via [include] directive in untrusted .gitmodules (SubmoduleConfigParser never disables merge_includes) Withdrawn |
High | <= 3.1.58 | No fix yet |
| GHSA-9557-234j-7rv9 Duplicate Advisory: Dormant multi-line git-config values are corrupted into live injected directives (e.g. core.hooksPath) on any unrelated GitConfigParser write, enabling RCE Withdrawn |
Critical | <= 3.1.58 | No fix yet |
| GHSA-3wxw-xv34-2frg GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling arbitrary file read (incomplete fix of 3af0c251) |
High EPSS 0.32% |
< 3.1.59 | 3.1.59 |
| GHSA-3wxw-xv34-2frg GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling arbitrary file read (incomplete fix of 3af0c251) |
High EPSS 0.32% |
< 3.1.59 | 3.1.59 |
| GHSA-5xxx-qhh7-9287 GitPython: Incomplete unsafe_git_revision_options denylist omits --contents/-S, enabling arbitrary file read via Repo.blame() |
Medium EPSS 0.41% |
< 3.1.59 | 3.1.59 |
| GHSA-5xxx-qhh7-9287 GitPython: Incomplete unsafe_git_revision_options denylist omits --contents/-S, enabling arbitrary file read via Repo.blame() |
Medium EPSS 0.41% |
< 3.1.59 | 3.1.59 |
| GHSA-8mcc-hrx5-hvxc GitPython: clone_from()/clone() omit --separate-git-dir from unsafe_git_clone_options, enabling arbitrary git-directory creation outside the destination |
High EPSS 0.65% |
< 3.1.59 | 3.1.59 |
| GHSA-8mcc-hrx5-hvxc GitPython: clone_from()/clone() omit --separate-git-dir from unsafe_git_clone_options, enabling arbitrary git-directory creation outside the destination |
High EPSS 0.65% |
< 3.1.59 | 3.1.59 |
| GHSA-284h-m62q-gf8w GitPython: Dormant multi-line git-config values are corrupted into live injected directives (e.g. core.hooksPath) on any unrelated GitConfigParser write, enabling RCE |
Critical EPSS 0.56% |
< 3.1.59 | 3.1.59 |
| GHSA-284h-m62q-gf8w GitPython: Dormant multi-line git-config values are corrupted into live injected directives (e.g. core.hooksPath) on any unrelated GitConfigParser write, enabling RCE |
Critical EPSS 0.56% |
< 3.1.59 | 3.1.59 |
| GHSA-7833-fr7j-v32q GitPython: Arbitrary local file content disclosure via [include] directive in untrusted .gitmodules (SubmoduleConfigParser never disables merge_includes) |
High EPSS 0.18% |
< 3.1.59 | 3.1.59 |
| GHSA-7833-fr7j-v32q GitPython: Arbitrary local file content disclosure via [include] directive in untrusted .gitmodules (SubmoduleConfigParser never disables merge_includes) |
High EPSS 0.18% |
< 3.1.59 | 3.1.59 |
| GHSA-w672-239g-c3gr Duplicate Advisory: GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout() Withdrawn |
Medium | <= 3.1.57 | No fix yet |
| GHSA-7jx3-jqcp-hhgc Duplicate Advisory: GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enables arbitrary file overwrite Withdrawn |
High | <= 3.1.57 | No fix yet |
| GHSA-298h-jpq4-m665 Duplicate Advisory: GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via --template clone hooks Withdrawn |
High | <= 3.1.57 | No fix yet |
| GHSA-wv46-xpj8-pw53 Duplicate Advisory: GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables command execution Withdrawn |
High | <= 3.1.57 | No fix yet |
| GHSA-3vrx-526r-64rm Duplicate Advisory: GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules Submodule Name in GitPython Withdrawn |
High | <= 3.1.57 | No fix yet |
| GHSA-wvpp-8hx9-p66j GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables command execution |
High EPSS 0.59% |
< 3.1.58 | 3.1.58 |
| GHSA-wvpp-8hx9-p66j GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables command execution |
High EPSS 0.59% |
< 3.1.58 | 3.1.58 |
| GHSA-jm78-9fvv-mhgr GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling forged core.sshCommand/hooksPath (RCE) |
High EPSS 0.48% |
< 3.1.58 | 3.1.58 |
| GHSA-jm78-9fvv-mhgr GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling forged core.sshCommand/hooksPath (RCE) |
High EPSS 0.48% |
< 3.1.58 | 3.1.58 |
| GHSA-hmq2-w58f-27jc GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules Submodule Name in GitPython |
High EPSS 0.42% |
< 3.1.58 | 3.1.58 |
| GHSA-hmq2-w58f-27jc GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules Submodule Name in GitPython |
High EPSS 0.42% |
< 3.1.58 | 3.1.58 |
| GHSA-hh9p-6wh2-4mfc GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout() |
High EPSS 0.41% |
< 3.1.58 | 3.1.58 |
| GHSA-hh9p-6wh2-4mfc GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout() |
High EPSS 0.41% |
< 3.1.58 | 3.1.58 |
| GHSA-9rj7-rf2p-w77r GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via --template clone hooks |
High EPSS 0.72% |
< 3.1.58 | 3.1.58 |
| GHSA-9rj7-rf2p-w77r GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via --template clone hooks |
High EPSS 0.72% |
< 3.1.58 | 3.1.58 |
| GHSA-4gmw-gg2m-w46p GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enables arbitrary file overwrite |
High EPSS 0.54% |
< 3.1.58 | 3.1.58 |
| GHSA-4gmw-gg2m-w46p GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enables arbitrary file overwrite |
High EPSS 0.54% |
< 3.1.58 | 3.1.58 |
| GHSA-p538-c434-8v24 GitPython: Arbitrary file truncation via git rev-list --output argument injection in unguarded Commit.count |
Medium EPSS 0.36% |
< 3.1.56 | 3.1.56 |
| GHSA-p538-c434-8v24 GitPython: Arbitrary file truncation via git rev-list --output argument injection in unguarded Commit.count |
Medium EPSS 0.36% |
< 3.1.56 | 3.1.56 |
| GHSA-539m-9xh6-q6rr GitPython: Incomplete unsafe_git_archive_options denylist omits --add-file / --add-virtual-file, enabling arbitrary file read via Repo.archive() |
Medium EPSS 0.41% |
< 3.1.57 | 3.1.57 |
| GHSA-539m-9xh6-q6rr GitPython: Incomplete unsafe_git_archive_options denylist omits --add-file / --add-virtual-file, enabling arbitrary file read via Repo.archive() |
Medium EPSS 0.41% |
< 3.1.57 | 3.1.57 |
| GHSA-3f7w-8rr8-f37f GitPython: Unguarded git option forwarding in IndexFile.checkout() and TagReference.create() enables arbitrary file overwrite and arbitrary file read |
High EPSS 0.57% |
< 3.1.57 | 3.1.57 |
| GHSA-3f7w-8rr8-f37f GitPython: Unguarded git option forwarding in IndexFile.checkout() and TagReference.create() enables arbitrary file overwrite and arbitrary file read |
High EPSS 0.57% |
< 3.1.57 | 3.1.57 |
| GHSA-9xx9-hw38-h2w9 Duplicate Advisory: GitPython: git-config section-name injection enables arbitrary config directives (core.sshCommand RCE) Withdrawn |
High | < 3.1.53 | 3.1.53 |
| GHSA-6r2r-ww24-7h52 Duplicate Advisory: GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blocklist Withdrawn |
High | <= 3.1.50 | No fix yet |
| GHSA-m4f3-g4cq-hqrx Duplicate Advisory: GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL Withdrawn |
High | <= 3.1.51 | No fix yet |
| GHSA-cw2r-r7mw-j3hc Duplicate Advisory: GitPython unsafe clone option gate bypass through joined short options Withdrawn |
Critical | No fix yet | |
| GHSA-4vpg-pfj8-m33q Duplicate Advisory: GitPython: command injection via unguarded Git options in `Repo.archive()`, `git.ls_remote()`, and arbitrary file overwrite via `Repo.iter_commits()` / `Repo.blame()` Withdrawn |
High | <= 3.1.50 | No fix yet |
| GHSA-94p4-4cq8-9g67 GitPython: Environment-variable exfiltration via Repo.create_remote() / Remote.add() URL (incomplete fix of GHSA-rwj8-pgh3-r573) |
High EPSS 0.51% |
< 3.1.55 | 3.1.55 |
| GHSA-94p4-4cq8-9g67 GitPython: Environment-variable exfiltration via Repo.create_remote() / Remote.add() URL (incomplete fix of GHSA-rwj8-pgh3-r573) |
High EPSS 0.51% |
< 3.1.55 | 3.1.55 |
| GHSA-r9mr-m37c-5fr3 GitPython: Unsafe git option guard bypass via single-character kwarg value token smuggling enables arbitrary command execution |
High EPSS 0.68% |
< 3.1.54 | 3.1.54 |
| GHSA-r9mr-m37c-5fr3 GitPython: Unsafe git option guard bypass via single-character kwarg value token smuggling enables arbitrary command execution |
High EPSS 0.68% |
< 3.1.54 | 3.1.54 |
| GHSA-6p8h-3wgx-97gf GitPython: Incomplete unsafe_git_clone_options denylist omits --template enabling arbitrary command execution via clone hooks |
High EPSS 0.96% |
< 3.1.54 | 3.1.54 |
| GHSA-6p8h-3wgx-97gf GitPython: Incomplete unsafe_git_clone_options denylist omits --template enabling arbitrary command execution via clone hooks |
High EPSS 0.96% |
< 3.1.54 | 3.1.54 |
| GHSA-fjr4-x663-mwxc GitPython: Arbitrary file overwrite via git diff --output argument injection in Diffable.diff (key- and value-controlled) |
High EPSS 0.55% |
< 3.1.54 | 3.1.54 |
| GHSA-fjr4-x663-mwxc GitPython: Arbitrary file overwrite via git diff --output argument injection in Diffable.diff (key- and value-controlled) |
High EPSS 0.55% |
< 3.1.54 | 3.1.54 |
| GHSA-3rp5-jjmw-4wv2 GitPython: git-config section-name injection enables arbitrary config directives (core.sshCommand RCE) |
High EPSS 0.27% |
< 3.1.53 | 3.1.53 |
| GHSA-3rp5-jjmw-4wv2 GitPython: git-config section-name injection enables arbitrary config directives (core.sshCommand RCE) |
High EPSS 0.27% |
< 3.1.53 | 3.1.53 |
| GHSA-rwj8-pgh3-r573 GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL |
High EPSS 0.33% |
< 3.1.52 | 3.1.52 |
| GHSA-rwj8-pgh3-r573 GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL |
High EPSS 0.33% |
< 3.1.52 | 3.1.52 |
| GHSA-956x-8gvw-wg5v GitPython: command injection via unguarded Git options in `Repo.archive()`, `git.ls_remote()`, and arbitrary file overwrite via `Repo.iter_commits()` / `Repo.blame()` |
High EPSS 1.25% |
< 3.1.51 | 3.1.51 |
| GHSA-956x-8gvw-wg5v GitPython: command injection via unguarded Git options in `Repo.archive()`, `git.ls_remote()`, and arbitrary file overwrite via `Repo.iter_commits()` / `Repo.blame()` |
High EPSS 1.25% |
< 3.1.51 | 3.1.51 |
| GHSA-2f96-g7mh-g2hx GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blocklist |
High EPSS 2.21% |
< 3.1.51 | 3.1.51 |
| GHSA-2f96-g7mh-g2hx GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blocklist |
High EPSS 2.21% |
< 3.1.51 | 3.1.51 |
| GHSA-v396-v7q4-x2qj GitPython unsafe clone option gate bypass through joined short options |
Critical EPSS 0.45% |
>= 3.1.50, < 3.1.51 | 3.1.51 |
| GHSA-v396-v7q4-x2qj GitPython unsafe clone option gate bypass through joined short options |
Critical EPSS 0.45% |
>= 3.1.50, < 3.1.51 | 3.1.51 |
| GHSA-mv93-w799-cj2w GitPython: Newline injection in config_writer() section parameter bypasses CVE-2026-42215 patch, enabling RCE via core.hooksPath |
High EPSS 0.25% |
< 3.1.50 | 3.1.50 |
| GHSA-mv93-w799-cj2w GitPython: Newline injection in config_writer() section parameter bypasses CVE-2026-42215 patch, enabling RCE via core.hooksPath |
High EPSS 0.25% |
< 3.1.50 | 3.1.50 |
| GHSA-v87r-6q3f-2j67 GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath |
High EPSS 0.24% |
< 3.1.49 | 3.1.49 |
| GHSA-v87r-6q3f-2j67 GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath |
High EPSS 0.24% |
< 3.1.49 | 3.1.49 |
| GHSA-7545-fcxq-7j24 GitPython reference APIs has a path traversal vulnerability that allows arbitrary file write and delete outside the repository |
High EPSS 0.42% |
< 3.1.48 | 3.1.48 |
| GHSA-7545-fcxq-7j24 GitPython reference APIs has a path traversal vulnerability that allows arbitrary file write and delete outside the repository |
High EPSS 0.42% |
< 3.1.48 | 3.1.48 |
| GHSA-rpm5-65cw-6hj4 GitPython has Command Injection via Git options bypass |
High EPSS 0.75% |
>= 3.1.30, < 3.1.47 | 3.1.47 |
| GHSA-rpm5-65cw-6hj4 GitPython has Command Injection via Git options bypass |
High EPSS 0.75% |
>= 3.1.30, < 3.1.47 | 3.1.47 |
| GHSA-x2qx-6953-8485 GitPython: Unsafe option check validates multi_options before shlex.split transformation |
Critical EPSS 0.57% |
< 3.1.47 | 3.1.47 |
| GHSA-x2qx-6953-8485 GitPython: Unsafe option check validates multi_options before shlex.split transformation |
Critical EPSS 0.57% |
< 3.1.47 | 3.1.47 |
| GHSA-2mqj-m65w-jghx Untrusted search path under some conditions on Windows allows arbitrary code execution |
High EPSS 0.32% |
< 3.1.41 | 3.1.41 |
| GHSA-2mqj-m65w-jghx Untrusted search path under some conditions on Windows allows arbitrary code execution |
High EPSS 0.32% |
< 3.1.41 | 3.1.41 |
| GHSA-cwvm-v4w8-q58c GitPython blind local file inclusion |
Medium EPSS 1.09% |
< 3.1.37 | 3.1.37 |
| GHSA-cwvm-v4w8-q58c GitPython blind local file inclusion |
Medium EPSS 1.09% |
< 3.1.35 | 3.1.35 |
| GHSA-wfm5-v35h-vwf4 GitPython untrusted search path on Windows systems leading to arbitrary code execution |
High EPSS 0.51% |
< 3.1.33 | 3.1.33 |
| GHSA-wfm5-v35h-vwf4 GitPython untrusted search path on Windows systems leading to arbitrary code execution |
High EPSS 0.51% |
< 3.1.33 | 3.1.33 |
| GHSA-pr76-5cm5-w9cj GitPython vulnerable to remote code execution due to insufficient sanitization of input arguments |
Critical EPSS 1.18% |
< 3.1.32 | 3.1.32 |
| GHSA-pr76-5cm5-w9cj GitPython vulnerable to remote code execution due to insufficient sanitization of input arguments |
Critical EPSS 1.18% |
< 3.1.32 | 3.1.32 |
| GHSA-hcpj-qp55-gfph GitPython vulnerable to Remote Code Execution due to improper user input validation |
High EPSS 6.14% |
< 3.1.30 | 3.1.30 |
| GHSA-hcpj-qp55-gfph GitPython vulnerable to Remote Code Execution due to improper user input validation |
High EPSS 6.14% |
< 3.1.30 | 3.1.30 |
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor