HochCVE-2026-114145

    GitPython: fehlerhafte Ablaufreihenfolge (CVE-2026-114145)

    Veröffentlicht Zuletzt geändert Quellen: Red Hat, Debian, Debian LTS, Hersteller, OSV, CVE.org

    Was ist betroffen, was ist zu tun

    Aktualisieren Sie GitPython auf Version 3.2.1.

    Betroffen
    • GitPython lt *..3.2.1
    Behoben in
    • GitPython 3.2.1

    Unklar, ob und wie Sie betroffen sind? Frage zu dieser Schwachstelle stellen

    Metriken

    7,5

    Priorität

    XIEM Effective CVSS: höchste verfügbare CVSS-Bewertung aus NVD- und Herstellerangaben.

    Quelle: Hersteller (CNA), CVSS v3

    7,5

    CVSS v3

    Schweregrad Hoch auf der Skala von 0 bis 10.

    Quelle: Red Hat, Debian, Debian LTS, Hersteller, OSV, CVE.org

    0,4 %

    EPSS-Score

    Niedrig – Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.

    Quelle: FIRST EPSS, Perzentil 36,7

    Alle Metriken anzeigen
    Schweregrad
    Hoch
    Priorität (0–325)

    Der Priorisierungs-Score ist eine zusammengeführte Kennzahl, die mehrere Einzelsignale zu einer einzigen, handlungsleitenden Rangfolge verdichtet: technische Schwere (CVSS), Ausnutzungswahrscheinlichkeit (EPSS), der Status als bekannt ausgenutzt (KEV) und der Kontext des betroffenen Assets. Ziel ist die Antwort auf die einzig wirklich wichtige Frage im Schwachstellenmanagement: Was zuerst?

    Im Glossar lesen
    74.04 Methodik
    Exploit-Reife

    Ein Exploit ist Code oder eine Technik, die eine konkrete Schwachstelle gezielt ausnutzt, um ein unbeabsichtigtes Verhalten zu erzwingen — etwa Code auszuführen oder Rechte auszuweiten. Er ist das Werkzeug, das aus einer theoretischen Lücke einen praktischen Angriff macht.

    Im Glossar lesen
    kein öffentlicher PoC bekannt
    XIEM Effective CVSS

    XIEM® ist das gestufte Managed-Security-Betriebsmodell von NEOSEC und eine eingetragene Marke der NEOSEC GmbH. Es erweitert klassisches SIEM — die zentrale Sammlung, Normalisierung und Korrelation sicherheitsrelevanter Ereignisse — um Endpunkt-Forensik, Netzwerk-Sichtbarkeit und Täuschungstechnik und führt diese zu drei aufeinander aufbauenden Stufen zusammen: Sentry, Orchestrate und Command.

    Im Glossar lesen
    7,5 Methodik
    CVSS v3

    CVSS ist der weltweit verbreitete, offene Standard zur Bewertung der technischen Schwere einer Schwachstelle auf einer Skala von 0 bis 10. Er beschreibt, wie leicht eine Lücke ausnutzbar ist und welchen Schaden sie anrichten kann — nicht jedoch, wie wahrscheinlich ihre tatsächliche Ausnutzung ist. CVSS und das ergänzende EPSS beantworten bewusst unterschiedliche Fragen.

    Im Glossar lesen
    7,5
    EPSS-Score

    Der EPSS-Score ist der absolute Modell-Output für eine einzelne Schwachstelle: die geschätzte Wahrscheinlichkeit einer realen Ausnutzung in den nächsten 30 Tagen, ausgedrückt als Wert zwischen 0 und 1 (bzw. 0 % bis 100 %). Ein Score von 0,42 bedeutet „das Modell schätzt eine 42-prozentige Chance auf reale Ausnutzung binnen 30 Tagen“.

    Im Glossar lesen
    0,4 %
    Niedrig – Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
    EPSS-Perzentil

    Das EPSS-Perzentil ist die relative Einordnung einer Schwachstelle innerhalb aller EPSS-bewerteten CVEs, ausgedrückt als Wert zwischen 0 und 1. Ein Perzentil von 0,90 bedeutet „diese CVE hat einen höheren EPSS-Score als 90 % aller anderen bewerteten CVEs“. Anders als der EPSS-Score ist es keine Wahrscheinlichkeit — sondern eine Positionierung im Ranking.

    Im Glossar lesen
    36,7
    Hoch – CVE rangiert über dem Median aller heute bewerteten CVEs (Rang ≥ 36 %).
    KEV-Status

    Der KEV-Katalog ist eine von der US-Behörde CISA gepflegte Liste von Schwachstellen, für die eine aktive Ausnutzung in der Praxis nachgewiesen ist. Er beantwortet nicht die Frage „wie schwer?“, sondern „wird es bereits angegriffen?“ — und priorisiert damit das Patchen scharf.

    Im Glossar lesen
    —
    Veröffentlicht
    CISA-Bewertung (SSVC)
    Ausnutzung: keine bekannt · nicht automatisierbar · Auswirkung: vollständig
    Quelle: CISA Vulnrichment, Stand 23. Oktober 2026
    CWE

    CWE ist ein Katalog typischer Schwächen-Arten in Software und Hardware — etwa fehlerhafte Eingabevalidierung, unsichere Speicherbehandlung oder mangelhafte Authentisierung. Während eine CVE eine konkrete Schwachstelle in einem konkreten Produkt benennt, beschreibt eine CWE die zugrunde liegende Fehlerklasse.

    Im Glossar lesen
    CWE-696

    Erkennungsregeln

    Für diese Schwachstelle liegt noch keine NEOSEC-Erkennungsregel vor.

    Einordnung nach NIS2 und CRA

    Regelbasierte Einordnung aus Ausnutzungsstatus und Schweregrad. Sie ersetzt keine Prüfung im Einzelfall.

    NIS2

    NIS2 ist die EU-Richtlinie (EU) 2022/2555 zur Erhöhung des Cybersicherheitsniveaus in der Union. Sie weitet Pflichten gegenüber der ersten NIS-Richtlinie deutlich aus: mehr Sektoren, verbindliches Risikomanagement, gestufte Meldepflichten und persönliche Verantwortung der Geschäftsleitung.

    Im Glossar lesen
    Hohe technische Schwere: Bewerten und beheben Sie die Schwachstelle im Schwachstellenmanagement nach Art. 21 Abs. 2 lit. e NIS2 und dokumentieren Sie die Entscheidung.
    CRA

    Der CRA ist die EU-Verordnung (EU) 2024/2847 mit horizontalen Cybersicherheitsanforderungen an „Produkte mit digitalen Elementen“ — von Industriesteuerungen über Software bis zu vernetzten Verbrauchergeräten. Erstmals müssen Hersteller Sicherheit über den gesamten Produktlebenszyklus gewährleisten, Schwachstellen behandeln und Sicherheitsupdates bereitstellen.

    Im Glossar lesen
    Ab dem 11.12.2027 verpflichtet Anhang I Teil II CRA Hersteller betroffener Produkte mit digitalen Elementen, Schwachstellen unverzüglich zu behandeln und Sicherheitsupdates bereitzustellen.
    ISO/IEC 27001

    ISO/IEC 27001 ist der international führende Standard für ein Informationssicherheits-Managementsystem (ISMS). Er beschreibt einen risikobasierten, prozessorientierten Rahmen, um Informationssicherheit systematisch zu planen, umzusetzen, zu überprüfen und zu verbessern.

    Im Glossar lesen
    Maßnahme A.8.8, Management technischer Schwachstellen: Relevanz für Ihre Systeme bewerten, Behebung einplanen und nachweisen.

    Beschreibung

    Zusammenfassung

    create_submodule(name, path, url) kloniert ein Submodul in das .git-Verzeichnis des Repositories, bevor es den Pfad ablehnt. Ein Pfad von ".git/hooks" wird von der Vorabprüfung akzeptiert, sodass das Submodul direkt in das laufende Hooks-Verzeichnis geklont wird. Eine Datei namens post-checkout im Submodul wird zu einem ausführbaren .git/hooks/post-checkout. Ab Version 3.2.0+ löst die spätere Indexprüfung einen ValueError aus, aber nur nachdem das Klonen bereits auf die Festplatte geschrieben hat, und es entfernt das eingepflanzte Hook nicht; in Version 3.1.x gibt es keine solche Prüfung und der Aufruf schlägt stillschweigend fehl. In beiden Fällen wird der Hook bei der nächsten Git-Operation (z. B. Checkout) ausgeführt, was zur Code-Ausführung führt.

    Details

    Der Checkout-Pfad wird zu spät validiert, nachdem das Klonen bereits die Festplatte verändert hat. Dies bricht die "Validierung vor Mutation" Invariante, die der Commit 43a43cd8 ("Validierung von Submodul-Checkout- und Metadatenpfaden vor Mutation") durchsetzen wollte.

    Submodule.add() ruft die permissive Pfadprüfung vor dem Klonen auf, und die strenge Prüfung erreicht das ".git"-Alias nur zur Indexzeit, nachdem _clone_repo auf die Festplatte geschrieben hat:

    git/objects/submodule/base.py (Submodule.add) 599: path = cls._to_relative_path(repo, path) # akzeptiert ".git/hooks" 673: mrepo = cls._clone_repo(repo, url, path, name, ...) # kloniert in /.git/hooks 714: index.add([sm], write=True) # strenge Prüfung löst hier aus

    git/index/base.py (IndexFile._preprocess_add_items) 732: _validate_repo_path(entry.path) # lehnt ".git" ab, aber zu spät

    _to_relative_path blockiert nur ../absolute/out-of-tree-Pfade; .git-Aliasse werden nur durch _validate_repo_path abgelehnt, das in Version 3.2.0 (Commit a75aedf3) hinzugefügt wurde und an der Indexgrenze läuft. Der ValueError, den es auf Zeile 732 auslöst, rollt nicht zurück, was _clone_repo bereits geschrieben hat.

    Versionsabhängiges Verhalten:

    • 3.2.0 .. tip bda18e08: _validate_repo_path löst ValueError bei index.add aus, aber der Hook ist bereits auf der Festplatte und wird nicht entfernt (falsche Reihenfolge von Validierung vs. Klonen).
    • 3.1.x (z. B. 3.1.59): _validate_repo_path existiert nicht und _to_relative_path lehnt .git nicht ab; create_submodule(path=".git/hooks", ...) gibt ohne Fehler zurück und pflanzt den Hook stillschweigend.

    Proof of Concept

    Einrichtung: evilsub/ : ein Git-Repository, dessen ROOT eine ausführbare Datei namens post-checkout enthält (die Payload) victim/ : ein Git-Repository mit mindestens einem Commit und einer zweiten Branch, dessen .git/hooks KEINE Beispiel-Hooks enthält (der Zustand eines minimalen/CI-Checkouts, oder git init mit einem leeren Template-Verzeichnis, oder GIT_TEMPLATE_DIR/init.templateDir leer)

    import git, os.path as osp try: git.Repo("victim").create_submodule(name="x", path=".git/hooks", url=osp.abspath("evilsub")) except ValueError: pass # 3.2.0+: ".git" wird abgelehnt, aber nur NACH dem Klonen, sodass die Pflanzung bereits stattgefunden hat. # 3.1.x: es wird keine Ausnahme ausgelöst; der Aufruf schlägt fehl und pflanzt dennoch den Hook.

    victim/.git/hooks/post-checkout existiert jetzt, Modus 0755, angreiferkontrolliert, in jeder

    betroffenen Version. Jeder spätere Checkout führt ihn aus:

    git -C victim checkout -> der Hook wird ausgeführt -> Code-Ausführung

    Live verifiziert:

    • tip bda18e08 (3.2.0 + 3 Commits): create_submodule löste ValueError aus von git/index/base.py:732, doch .git/hooks/post-checkout war vorhanden und ausführbar, und git checkout führte es aus.
    • 3.1.59: create_submodule kehrte ohne Fehler zurück; .git/hooks/post-checkout wurde eingepflanzt und von git checkout ausgeführt.

    Auswirkungen

    Beliebige Code-Ausführung. Eine Bibliothek/App, die ein Submodul aus einem angreiferbeeinflussten path erstellt, endet mit einer angreiferkontrollierten ausführbaren Datei in .git/hooks, die Git bei normalen späteren Operationen ausführt. Dies betrifft jeden Dienst, der einen Submodul-Checkout-Pfad aus nicht vertrauenswürdigen Daten ableitet, z. B. einen, der ein Submodul-Spezifikation (name/path/url) aus einer von einem Benutzer bereitgestellten Manifest- oder API-Anfrage aufnimmt und path in create_submodule einfügt. Ab Version 3.2.0+ ist die Validierung der Bibliothek selbst das, was fehlschlägt: Sie lehnt den .git-Pfad korrekt ab, aber nur nachdem das Submodul bereits geklont wurde, sodass eine App, die den ValueError abfängt, vernünftigerweise glaubt, dass der unsichere Pfad blockiert wurde.

    Voraussetzungen (daher AC:H): (1) die App gibt einen angreiferbeeinflussten Submodul path weiter; (2) der Ziel-Hook-Name ist in .git/hooks frei, was für minimale/CI/Container-Checkouts und immer dann zutrifft, wenn init.templateDir/GIT_TEMPLATE_DIR leer ist. Mit den Standard-Beispiel-Hooks vorhanden, lehnt git clone das nicht leere Ziel ab und keine Pflanzung erfolgt.

    Betroffen: alle getesteten Versionen von 3.1.x (3.1.59) bis zum aktuellen tip bda18e08 (3.2.0 + 3 Commits). 3.1.x pflanzt stillschweigend; 3.2.0+ pflanzt trotz Auslösen von ValueError.

    Originalquelle nur englisch verfügbar, maschinell ins Deutsche übersetzt.

    Quelle: redhat_csaf, Debian Security Advisories, Debian LTS Advisories, GitHub Security Advisories, OSV (Open Source Vulnerabilities), cvelistv5, NVD (NIST)

    Betroffene Produkte

    Betroffen sind die folgenden Versionen. Ältere Stände derselben Reihe sind ebenfalls verwundbar, sofern nicht anders angegeben.

    Betroffene Produkte
    Betroffene VersionenBehoben in
    gitpython-developersGitPython
    • < 3.2.1
    • 3.2.1
    pipGitpython
    • <= 3.2.0
    • 3.2.1
    pypigitpython
    • 2.0.8
    • 0.3.3
    • 0.3.5
    • 3.1.17
    • 2.0.6
    • —
    • 3.1.56
    • 2.1.14
    • 3.1.62
    • 3.0.3
    • 1.0.0
    • 0.3.2.RC1
    • 3.1.55
    • 2.1.5
    • 3.1.10
    • 3.1.52
    • 2.1.12
    • 2.0.3
    • 3.0.6
    • 2.0.1
    • 3.1.12
    • 3.1.49
    • 0.3.2
    • 3.1.41
    • 2.1.2
    • 3.1.50
    • 3.1.1
    • 3.1.13
    • 1.0.2
    • 3.1.5
    • 3.1.54
    • 3.1.27
    • 3.1.46
    • 3.1.4
    • 2.1.9
    • 2.1.1
    • 3.0.8
    • 3.1.3
    • 3.1.24
    • 3.1.8
    • 3.1.35
    • 3.1.51
    • 3.1.38
    • 3.1.32
    • 3.1.9
    • 2.0.4
    • —
    • —
    • —
    • —
    • —
    • 3.2.1
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —
    • —

    Hersteller und Produkte

    Betroffene Betriebssysteme

    Betroffene Betriebssysteme
    Linuxdebianpython-gitbookworm
    Linuxdebianpython-gittrixie

    Weakness-Klassen (CWE)

    • CWE-696Incorrect Behavior Order

      Class

      The product performs multiple related behaviors, but the behaviors are performed in the wrong order in ways that may produce resultant weaknesses.

      Eintrag bei MITRE CWE-696

    Quellen & Referenzen

    • github.comgitpython-developers/GitPython/security/advisories/GHSA-83vg-56…x_refsource_CONFIRM, web
    • github.comgitpython-developers/GitPython/pull/2264x_refsource_MISC, web
    • github.comgitpython-developers/GitPython/commit/97eadb888d2f99567e3113f4e…x_refsource_MISC, web
    • github.comgitpython-developers/GitPython/releases/tag/3.2.1x_refsource_MISC, web
    • NVD (NIST)vuln/detail/CVE-2026-114145advisory
    • github.comgitpython-developers/GitPythonpackage

    Änderungen an der CVE

    Wer diese CVE wann geändert hat: die NVD (Analyse, betroffene Produkte, CVSS), der Herausgeber der CVE (CNA) und ergänzende Stellen wie CISA (ADP).

    1. Eintrag geändertCISA ADP

      CISA-Einschätzung (SSVC): Ausnutzung: keine bekannt, automatisierbar: nein

      Einzeländerung im Original anzeigen
      Einzeländerungen dieses Ereignisses im Original der NVD
      ArtAktionVorherNachher
      SSVC-Einschätzungergänzt
      —
      {"id":"CVE-2026-114145","role":"CISA Coordinator","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"total"}],"version":"2.0.3","timestamp":"2026-10-23T14:54:12.373636Z"}

      Kennung der Quelle: 134c704f-9b21-4f2e-91b3-4a467353bcc0

    2. Neu erfasstGitHub

      8 Einzeländerungen im Original anzeigen
      Einzeländerungen dieses Ereignisses im Original der NVD
      ArtAktionVorherNachher
      Beschreibungergänzt
      —
      GitPython is a python library used to interact with Git repositories. Prior to 3.2.1, create_submodule() in git/objects/submodule/base.py accepts an attacker-influenced submodule path such as .git/hooks and invokes _clone_repo() before safely rejecting the destination. In 3.1.x, _validate_repo_path() does not exist and the call succeeds silently, while in 3.2.0 and later affected revisions the check in git/index/base.py raises ValueError only after the clone has written to disk and does not remove the planted file. An attacker-controlled submodule can therefore place an executable post-checkout hook that a later Git operation executes. Exploitation requires an application to accept an untrusted submodule path and a clone destination such as .git/hooks that is empty enough for Git to clone into it, which commonly means that default sample hooks are absent. This issue is fixed in version 3.2.1.
      CVSSergänzt
      —
      AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
      Schwachstellentyp (CWE)ergänzt
      —
      CWE-696
      Betroffene Versionen (Herausgeber)ergänzt
      —
      New affected value received. <a href="https://github.com/CVEProject/cvelistV5/blob/main/cves/2026/114xxx/CVE-2026-114145.json">CVE-2026-114145</a>
      Referenzergänzt
      —
      https://github.com/gitpython-developers/GitPython/commit/97eadb888d2f99567e3113f4e455be4ca128f697
      Referenzergänzt
      —
      https://github.com/gitpython-developers/GitPython/pull/2264
      Referenzergänzt
      —
      https://github.com/gitpython-developers/GitPython/releases/tag/3.2.1
      Referenzergänzt
      —
      https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-83vg-56qc-22m7

      Kennung der Quelle: security-advisories@github.com

    Badge einbetten

    Zeigen Sie Schweregrad und KEV-Status dieser Schwachstelle auf Ihrer Seite – mit Link hierher. Das Bild wird stündlich aktualisiert.

    Badge-Vorschau für CVE-2026-114145
    <a href="https://intel.neosec.eu/cve/CVE-2026-114145"><img src="https://intel.neosec.eu/badge/cve/CVE-2026-114145.svg" alt="CVE-2026-114145 – NEOSEC Intel" height="20"></a>