Sicherheit & Datenschutz

Git behebt kritische Codeausführungslücke bei rekursiven Klonen

Git 2.56.1 und frühere Wartungsversionen beheben CVE-2026-111760, einen Ganzzahl-Truncation-Fehler, der es bösartigen Repositories ermöglicht, während des rekursiven Klonens Code auszuführen.

Ein Glaswürfel mit einem roten Warnsymbol darin, der ein verwundbares Git-Repository darstellt, neben einem gebrochenen Kettenglied.
Für diesen Artikel generierte Illustration

Automatisch aus dem englischen Original übersetzt.

Das Git-Projekt hat Notfall-Patches veröffentlicht, um eine kritische Schwachstelle zu beheben, die Angreifern die Ausführung von beliebigem Code auf dem Rechner eines Entwicklers ermöglicht. Dieser Fehler, identifiziert als CVE-2026-111760, wird ausgelöst, wenn ein Benutzer ein Repository mit bösartigen Submodulen rekursiv klonnt. Die Korrekturen wurden diese Woche für mehrere unterstützte Versionen veröffentlicht und erfordern sofortige Aufmerksamkeit von Engineering-Teams, die Git zur Versionskontrolle nutzen.

Was passiert ist

Das Kernproblem liegt darin, wie Git Dateipfade innerhalb seines Index verarbeitet. Ein Angreifer kann ein Repository mit einem extrem langen Pfad erstellen, der die ersten Sicherheitsprüfungen besteht, aber beim Schreiben auf die Festplatte unter einem Ganzzahl-Truncation-Fehler leidet. Diese Kürzung verkürzt den Pfadnamen, sodass der Angreifer den finalen Dateinamen so manipulieren kann, dass er .git entspricht. In einem frisch geklonten Submodul existiert .git als Datei und nicht als Verzeichnis. Der Angreifer ersetzt diese Datei durch einen symbolischen Link, der auf einen Ordner zeigt, der bösartige Hooks oder Konfigurationsdateien enthält. Da Git Hooks an bestimmten Punkten in seinem Workflow ausführt, ermöglicht das Verlinken auf diesen kontrollierten Ordner die Remote-Ausführung von Code.

Das Git-Projekt hat dies in Version 2.56.1 behoben und die Korrekturen auf die Serien 2.50 bis 2.55 zurückportiert, insbesondere auf die Versionen 2.50.2, 2.51.3, 2.52.1, 2.53.1, 2.54.1 und 2.55.1. GitHub bestätigte, dass diese Korrekturen auf github.com und GitHub Enterprise Cloud angewendet wurden. Für selbst gehostete Instanzen enthalten die GitHub Enterprise Server-Versionen 3.19.15, 3.20.11, 3.21.9 und 3.22.4 den Patch. Updates für GitHub Desktop, GitHub Copilot, Codespaces und Actions sind in Vorbereitung. Allerdings hatte Git for Windows zum Zeitpunkt des Berichts (Dienstag, 19:09 UTC) noch keine Version basierend auf dem gepatchten Branch 2.56.1 veröffentlicht.

Wie es funktioniert

Diese Schwachstelle nutzt eine Diskrepanz zwischen der internen Pfadvalidierung von Git und der Handhabung langer Namen durch das Dateisystem. Wenn Git den Index verarbeitet, prüft es die Länge des Pfades. Ist der Pfad übermäßig lang, tritt ein Ganzzahl-Truncation-Fehler auf, wodurch Git die Datei unter einem kürzeren, vorhersagbaren Namen schreibt. Durch sorgfältige Konstruktion des Pfades stellt ein Angreifer sicher, dass dieser verkürzte Name im Submodulverzeichnis auf .git auflöst.

Submodule sind besonders anfällig, da ihr .git-Eintrag zunächst eine Datei ist, die auf das tatsächliche git-Verzeichnis verweist, nicht das Verzeichnis selbst. Git verhindert normalerweise das Ersetzen eines .git-Verzeichnisses durch einen Symlink, blockiert aber nicht das Ersetzen der .git-Datei. Sobald der Symlink vorhanden ist, führen alle nachfolgenden Git-Operationen, die Hooks auslösen, Skripte vom angreiferkontrollierten Speicherort aus. Die gepatchten Versionen lehnen nun diese extrem langen Pfade ab, bevor die Truncation auftreten kann, was die Namensollision vollständig verhindert.

Wichtige Details

  • Primäre Schwachstelle: CVE-2026-111760 betrifft Ganzzahl-Truncation in Gits Index-Verarbeitung und ermöglicht Codeausführung über bösartige Submodule.
  • Behobene Versionen: Git 2.56.1 sowie 2.50.2, 2.51.3, 2.52.1, 2.53.1, 2.54.1 und 2.55.1.
  • GitHub Enterprise-Korrekturen: Verfügbar in den Server-Versionen 3.19.15, 3.20.11, 3.21.9 und 3.22.4.
  • Zusätzliche Fehler: Fünf weitere CVEs wurden behoben, darunter Path Traversal in leeren Repositories (CVE-2026-113408) und Heap Corruption durch große Merges (CVE-2026-105437).
  • Windows-Status: Git for Windows hatte zum Zeitpunkt des Berichts keine gepatchte Version basierend auf 2.56.1 veröffentlicht.
  • Workarounds: Vermeiden Sie rekursive Klone von nicht vertrauenswürdigen Repositories und verarbeiten Sie keine Binär-Patches von unbekannten Quellen, bis die Aktualisierung erfolgt ist.

Warum das wichtig ist

Für Software-Ingenieure und technische Leads unterstreicht diese Schwachstelle die Risiken, die inhärent in Supply-Chain-Abhängigkeiten liegen. Rekursives Klonen ist eine übliche Praxis in Monorepos und Projekten mit vielen Submodulen. Wenn ein einzelnes Submodul kompromittiert wird oder ein Entwickler ein bösartiges Fork klont, könnte die gesamte Entwicklungsumgebung gefährdet sein. Dies ist kein rein theoretisches Risiko; automatisierte CI/CD-Pipelines klonen Repositories oft rekursiv, was Build-Server demselben Exploit aussetzen kann.

Die Präsenz von fünf zusätzlichen Schwachstellen in derselben Veröffentlichung verdeutlicht die Komplexität der Aufrechterhaltung sicherer Versionskontrollsysteme. Probleme wie Heap Corruption durch große Merges oder Path Traversal in Protocol v2 betreffen Hosting-Dienste und lokale Clients gleichermaßen. Teams, die private GitLab- oder GitHub Enterprise-Instanzen verwalten, müssen diese Updates priorisieren, da Server, die git merge-tree zur Validierung von Pull Requests verwenden, speziell durch CVE-2026-105437 ins Visier genommen werden. Das Hinauszögern von Patches lässt die Infrastruktur offen für Denial-of-Service-Angriffe und potenzielle Datenexfiltration.

Was Sie tun können

  • Aktualisieren Sie Ihre lokale Git-Installation sofort auf eine der gepatchten Versionen, indem Sie Ihren OS-Paketmanager oder Git-Distributor prüfen.
  • Wenn Sie GitHub Enterprise Server verwalten, aktualisieren Sie auf die Version 3.19.15, 3.20.11, 3.21.9 oder 3.22.4.
  • Verwenden Sie git clone --recursive nicht auf Repositories von nicht vertrauenswürdigen Quellen, bis alle Systeme gepatcht sind.
  • Konfigurieren Sie CI/CD-Pipelines so, dass die rekursive Initialisierung von Submodulen für externe oder unverifizierte Abhängigkeiten übersprungen wird.
  • Für GitLab-Server, die nicht sofort aktualisiert werden können, setzen Sie conflict-marker-size=7 in der info/attributes-Datei des Repositories, um CVE-2026-105437 abzuschwächen.
  • Überwachen Sie Release-Tags für Git for Windows und aktualisieren Sie, sobald eine Version basierend auf 2.56.1 verfügbar ist.
  • #git
  • #security
  • #vulnerability
  • #devops
  • #supply-chain

Tools aus dem Bytechap-Shop

Weiterlesen

Alle Artikel