gitpython

Built from the advisories that name this package: its registry metadata (versions, licence, dependencies) has not been fetched by this service yet.

At a glance

Ecosystem
PyPI
Vulnerability status
79 advisory(ies) without a verdict

Advisories (79)

AdvisoryAffected versionsLatest version
GHSA-239g-whfq-7xj9
GitPython: Repository content can impersonate the git directory, leading to arbitrary code execution
< 3.1.60Undetermined
GHSA-23mf-xhv8-69c2
GitPython: arbitrary file read via attacker-controlled branch name in `Head.checkout()` (incomplete fix of CVE-2026-78679)
< 3.2.0Undetermined
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
< 3.1.59Undetermined
GHSA-2f96-g7mh-g2hx
GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blocklist
< 3.1.51Undetermined
GHSA-2mqj-m65w-jghx
Untrusted search path under some conditions on Windows allows arbitrary code execution
< 3.1.41Undetermined
GHSA-3f7w-8rr8-f37f
GitPython: Unguarded git option forwarding in IndexFile.checkout() and TagReference.create() enables arbitrary file overwrite and arbitrary file read
< 3.1.57Undetermined
GHSA-3rp5-jjmw-4wv2
GitPython: git-config section-name injection enables arbitrary config directives (core.sshCommand RCE)
< 3.1.53Undetermined
GHSA-3wxw-xv34-2frg
GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling arbitrary file read (incomplete fix of 3af0c251)
< 3.1.59Undetermined
GHSA-4gmw-gg2m-w46p
GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enables arbitrary file overwrite
< 3.1.58Undetermined
GHSA-539m-9xh6-q6rr
GitPython: Incomplete unsafe_git_archive_options denylist omits --add-file / --add-virtual-file, enabling arbitrary file read via Repo.archive()
< 3.1.57Undetermined
GHSA-59cr-6r3x-644w
GitPython submodule update path traversal can write outside the repository
< 3.1.62Undetermined
GHSA-5xxx-qhh7-9287
GitPython: Incomplete unsafe_git_revision_options denylist omits --contents/-S, enabling arbitrary file read via Repo.blame()
< 3.1.59Undetermined
GHSA-6p8h-3wgx-97gf
GitPython: Incomplete unsafe_git_clone_options denylist omits --template enabling arbitrary command execution via clone hooks
< 3.1.54Undetermined
GHSA-7545-fcxq-7j24
GitPython reference APIs has a path traversal vulnerability that allows arbitrary file write and delete outside the repository
< 3.1.48Undetermined
GHSA-7833-fr7j-v32q
GitPython: Arbitrary local file content disclosure via [include] directive in untrusted .gitmodules (SubmoduleConfigParser never disables merge_includes)
< 3.1.59Undetermined
GHSA-83vg-56qc-22m7
GitPython validates a submodule's ".git" path only after cloning into it (RCE)
< 3.2.1Undetermined
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
< 3.1.59Undetermined
GHSA-94p4-4cq8-9g67
GitPython: Environment-variable exfiltration via Repo.create_remote() / Remote.add() URL (incomplete fix of GHSA-rwj8-pgh3-r573)
< 3.1.55Undetermined
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()`
< 3.1.51Undetermined
GHSA-9rj7-rf2p-w77r
GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via --template clone hooks
< 3.1.58Undetermined
GHSA-cwvm-v4w8-q58c
GitPython blind local file inclusion
< 3.1.37Undetermined
GHSA-f9j4-qggq-h239
GitPython Remote.pull() refspec bypasses the --upload-pack unsafe-option guard, enabling arbitrary command execution
3.1.30 – < 3.2.0Undetermined
GHSA-fjr4-x663-mwxc
GitPython: Arbitrary file overwrite via git diff --output argument injection in Diffable.diff (key- and value-controlled)
< 3.1.54Undetermined
GHSA-fx3j-rwgx-fr94
GitPython: separate_git_dir leaks env vars via crafted .gitmodules submodule name
< 3.2.0Undetermined
GHSA-g5vv-9gxw-82hx
GitPython: Denial of Service via catastrophic backtracking (ReDoS) in Actor.name_email_regex — commit author/committer field parsing
< 3.1.60Undetermined
GHSA-gq48-pqfc-9p58
GitPython: Submodule.move() follows an attacker-committed intermediate symlink outside the worktree
< 3.2.0Undetermined
GHSA-hcpj-qp55-gfph
GitPython vulnerable to Remote Code Execution due to improper user input validation
< 3.1.30Undetermined
GHSA-hh9p-6wh2-4mfc
GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout()
< 3.1.58Undetermined
GHSA-hmq2-w58f-27jc
GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules Submodule Name in GitPython
< 3.1.58Undetermined
GHSA-jm78-9fvv-mhgr
GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling forged core.sshCommand/hooksPath (RCE)
< 3.1.58Undetermined
GHSA-m64x-33q8-m5h7
GitPython parse_actor_and_date() is vulnerable to quadratic backtracking on malformed identity lines
< 3.2.0Undetermined
GHSA-mv93-w799-cj2w
GitPython: Newline injection in config_writer() section parameter bypasses CVE-2026-42215 patch, enabling RCE via core.hooksPath
< 3.1.50Undetermined
GHSA-p538-c434-8v24
GitPython: Arbitrary file truncation via git rev-list --output argument injection in unguarded Commit.count
< 3.1.56Undetermined
GHSA-pr76-5cm5-w9cj
GitPython vulnerable to remote code execution due to insufficient sanitization of input arguments
< 3.1.32Undetermined
GHSA-r9mr-m37c-5fr3
GitPython: Unsafe git option guard bypass via single-character kwarg value token smuggling enables arbitrary command execution
< 3.1.54Undetermined
GHSA-rpm5-65cw-6hj4
GitPython has Command Injection via Git options bypass
3.1.30 – < 3.1.47Undetermined
GHSA-rwj8-pgh3-r573
GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL
< 3.1.52Undetermined
GHSA-v396-v7q4-x2qj
GitPython unsafe clone option gate bypass through joined short options
3.1.50 – < 3.1.51Undetermined
GHSA-v87r-6q3f-2j67
GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath
< 3.1.49Undetermined
GHSA-w8jc-g24h-crhw
GitPython command wrappers omit unsafe protocol and option checks
< 3.2.0Undetermined
GHSA-wfm5-v35h-vwf4
GitPython untrusted search path on Windows systems leading to arbitrary code execution
< 3.1.33Undetermined
GHSA-whh4-5q6c-9v3x
GitPython: --no-index bypasses diff unsafe-option protections and enables a blind local-file content oracle
3.1.59 – < 3.1.60Undetermined
GHSA-wvpp-8hx9-p66j
GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables command execution
< 3.1.58Undetermined
GHSA-x2qx-6953-8485
GitPython: Unsafe option check validates multi_options before shlex.split transformation
< 3.1.47Undetermined
PYSEC-2022-42992
All versions of package gitpython are vulnerable to Remote Code Execution (RCE) due to improper user input validation, which makes it possible to inject a malic
< 3.1.30Undetermined
PYSEC-2023-137
GitPython before 3.1.32 does not block insecure non-multi options in clone and clone_from. NOTE: this issue exists because of an incomplete fix for CVE-2022-244
< ca965ecc81853bca7675261729143f54e5bf4cdd ; < 3.1.32Undetermined
PYSEC-2023-161
GitPython is a python library used to interact with Git repositories. When resolving a program, Python/Windows look for the current working directory, and afte
< 3.1.33Undetermined
PYSEC-2023-165
GitPython is a python library used to interact with Git repositories. In order to resolve some git references, GitPython reads files from the `.git` directory,
< 3.1.35Undetermined
PYSEC-2024-4
GitPython is a python library used to interact with Git repositories. There is an incomplete fix for CVE-2023-40590. On Windows, GitPython uses an untrusted sea
< ef3192cc414f2fd9978908454f6fd95243784c7f ; < 3.1.41Undetermined
PYSEC-2026-2160
GitPython is a python library used to interact with Git repositories. From version 3.1.30 to before version 3.1.47, GitPython blocks dangerous Git options such
3.1.30 – < 3.1.47Undetermined
PYSEC-2026-2161
GitPython is a python library used to interact with Git repositories. Prior to version 3.1.47, _clone() validates multi_options as the original list, then execu
< 3.1.47Undetermined
PYSEC-2026-2162
GitPython is a python library used to interact with Git repositories. Prior to version 3.1.48, a vulnerability in GitPython allows attackers who can supply a cr
< 3.1.48Undetermined
PYSEC-2026-2163
GitPython is a python library used to interact with Git repositories. Prior to version 3.1.49, GitConfigParser.set_value() passes values to Python's configparse
< 3.1.49Undetermined
PYSEC-2026-3783
GitPython before 3.1.58 contains a config-name injection vulnerability in the option-name validator that allows attackers to forge arbitrary git-config directiv
< 3.1.58Undetermined
PYSEC-2026-3784
GitPython before 3.1.58 fails to validate submodule names from .gitmodules files, allowing attackers to create Git repositories at arbitrary filesystem paths ou
< 3.1.58Undetermined
PYSEC-2026-3785
GitPython before 3.1.59 fails to disable merge_includes when parsing .gitmodules, allowing attackers to disclose local file content by including arbitrary file
< 3.1.59Undetermined
PYSEC-2026-3786
GitPython before 3.1.59 fails to safely re-serialize multi-line git-config values during write operations, corrupting dormant quoted values into injected direct
< 3.1.59Undetermined
PYSEC-2026-3787
GitPython before 3.1.59 omits --separate-git-dir from unsafe_git_clone_options, allowing attackers to create arbitrary git directories outside the intended clon
< 3.1.59Undetermined
PYSEC-2026-3788
GitPython versions before 3.1.59 contain an incomplete denylist in the unsafe_git_revision_options guard that omits --contents and -S options, allowing attacker
< 3.1.59Undetermined
PYSEC-2026-3836
GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blocklist
< 3.1.51Undetermined
PYSEC-2026-3837
GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling arbitrary file read (incomplete fix of 3af0c251)
< 3.1.59Undetermined
PYSEC-2026-3838
GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enables arbitrary file overwrite
< 3.1.58Undetermined
PYSEC-2026-3839
GitPython: command injection via unguarded Git options in `Repo.archive()`, `git.ls_remote()`, and arbitrary file overwrite via `Repo.iter_commits()` / `Repo.blame()`
< 3.1.51Undetermined
PYSEC-2026-3840
GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via --template clone hooks
< 3.1.58Undetermined
PYSEC-2026-3841
GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout()
< 3.1.58Undetermined
PYSEC-2026-3842
GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL
< 3.1.52Undetermined
PYSEC-2026-3843
GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token smuggling enables command execution
< 3.1.58Undetermined
PYSEC-2026-3947
GitPython 3.1.50 fails to recognize joined short-option forms such as -u<value> (the short form of --upload-pack=<value>) when enforcing its default unsafe-opti
3.1.50 – < 3.1.51Undetermined
PYSEC-2026-3948
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
< 3.1.57Undetermined
PYSEC-2026-3949
GitPython before 3.1.57 fails to guard git option forwarding in IndexFile.checkout() and TagReference.create(), allowing attackers to pass unsafe options via kw
< 3.1.57Undetermined
PYSEC-2026-3950
GitPython before 3.1.56 contains an argument injection vulnerability in the Commit.count() method, which forwards keyword arguments to 'git rev-list' without th
< 3.1.56Undetermined
PYSEC-2026-3951
GitPython before 3.1.55 fails to disable environment variable expansion in Remote.create() and Submodule.add() URL handling, allowing attackers to exfiltrate se
< 3.1.55Undetermined
PYSEC-2026-3952
GitPython before 3.1.54 contains an incomplete denylist in unsafe_git_clone_options that omits --template, allowing attackers to achieve arbitrary command execu
< 3.1.54Undetermined
PYSEC-2026-3953
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 i
< 3.1.54Undetermined
PYSEC-2026-3980
GitPython before 3.1.50 fails to validate newline characters in the section parameter of config_writer(), allowing attackers to inject arbitrary section headers
< 3.1.50Undetermined
PYSEC-2026-3981
GitPython before 3.1.53 fails to properly escape section names in git config files, allowing attackers to inject arbitrary configuration directives through mali
< 3.1.53Undetermined
PYSEC-2026-3982
GitPython before 3.1.60 fails to properly validate the git directory location, allowing attackers to impersonate the git directory using tracked files like gitd
< 3.1.60Undetermined
PYSEC-2026-3984
GitPython before 3.1.60 contains a regular expression denial of service vulnerability in Actor.name_email_regex that processes commit author and committer field
< 3.1.60Undetermined
PYSEC-2026-3995
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
< 3.1.54Undetermined

Withdrawn advisories (19)

Withdrawn by their publisher: they affect no version and are not counted above.

Sources

SourceLicence