Bug 2467804 (CVE-2026-44244)

Summary: CVE-2026-44244 GitPython: GitPython: Arbitrary code execution via injected newlines in Git configuration
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: alinfoot, anthomas, bbrownin, cahl, derez, dfreiber, drow, dschmidt, dtrifiro, eglynn, ehelms, erezende, ggainey, jburrell, jdobes, jjoyce, jkoehler, jlanda, jmitchel, jpasqual, jpretori, jschluet, juwatts, kaycoth, kshier, lhh, ljawale, lphiri, luizcosta, mburns, mdellweg, mgarciac, mhulan, msilmser, nmoumoul, nweather, orabin, osousa, pcreech, rbobbitt, rbryant, rchan, rhel-process-autobot, rjohnson, sdawley, simaishi, smallamp, smcdonal, stcannon, teagle, tmalecek, vkumar, watson-tool-maintainers, weaton, yguenane
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in GitPython, a Python library used to interact with Git repositories. The `GitConfigParser.set_value()` function does not properly validate input for newlines. This vulnerability allows an attacker to inject malicious configuration settings, specifically the `core.hooksPath`, into a Git repository. Consequently, any Git operation that triggers hooks, such as committing or merging, could lead to arbitrary code execution from an attacker-controlled path.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2516147, 2517355, 2517356    
Bug Blocks:    

Description OSIDB Bzimport 2026-05-07 19:01:59 UTC
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.