Korrekturversionen des verteilten Verwaltungssystems für Quelltexte Git 2.24.1, 2.23.1, 2.22.2, 2.21.1, 2.20.2, 2.19.3, 2.18.2, 2.17.3, 2.16.6, 2.15.4 und 2.14.62.24.1, in denen Schwachstellen behoben wurden, die es einem Angreifer ermöglichen, beliebige Pfade im Dateisystem zu überschreiben, eine Remote-Codeausführung zu initiieren oder Dateien im Verzeichnis „.git/“ zu überschreiben. Die meisten Probleme wurden von Mitarbeitern des Microsoft Security Response Centers erkannt, fünf von acht Schwachstellen sind plattformspezifisch für Windows.
Microsoft Security Response Center, fünf von acht Schwachstellen sind plattformspezifisch für Windows.
- — Stream-Befehl «feature export-marks=path» schrieb Marken in beliebige Verzeichnisse, was genutzt werden kann, um beliebige Pfade im FS bei der Ausführung des „git fast-import“-Befehls mit ungeprüften Eingaben zu überschreiben.
- — Fehlende Escape-Zeichen für Kommandozeilenargumente zu einer Remote-Codeausführung des Angreifers bei rekursivem Klonen unter Verwendung von URL ssh://. Insbesondere wurde die Verarbeitung der Escape-Zeichen, die auf einen Backslash enden (z. B. „test \“), nicht korrekt behandelt. In diesem Fall wurde das letzte Anführungszeichen beim Umgeben des Arguments mit doppelten Anführungszeichen escaped, was es ermöglichte, eigene Optionen in der Kommandozeile einzufügen.
- — beim rekursiven Klonen von Submodulen („clone —recurse-submodules“) unter Windows unter bestimmten Bedingungen die Verwendung eines git-Verzeichnisses zweimal initiieren (.git, git~1, git~2 und git~N wird in NTFS als dasselbe Verzeichnis erkannt, aber diese Situation wurde nur für git~1 überprüft), was verwendet werden konnte, um Beschreibungen im Verzeichnis „.git“ zu speichern. Um die Ausführung eigenen Codes zu organisieren, könnte der Angreifer beispielsweise sein Skript über den post-checkout-Handler in der Datei .git/config einfügen.
- — Der Handler für die Buchstabennamen von Laufwerken in Windows-Pfaden bei der Übersetzung von Pfaden wie „C:\“ war nur auf den Austausch von einbuchstabigen lateinischen Identifikatoren ausgelegt, berücksichtigt aber nicht die Möglichkeit, virtuelle Laufwerke zu erstellen, die über „subst Buchstabe:Pfad“ zugewiesen werden. Solche Pfade wurden nicht als absolute, sondern als relative Pfade behandelt, was es ermöglichte, beim Klonen eines bösartigen Repositories in beliebige Verzeichnisse außerhalb des Arbeitsverzeichnisses zu schreiben (z. B. bei der Verwendung von Zahlen oder Unicode-Zeichen im Laufwerksnamen — „1:\what\the\hex.txt“ oder „ä:\tschibät.sch“).
- — Bei der Arbeit auf der Windows-Plattform ermöglichte die Verwendung alternativer Datenströme in NTFS, die durch das Hinzufügen des Merkmals „:stream-name:stream-type“ zum Dateinamen erstellt wurden, das Überschreiben von Dateien im Verzeichnis „.git/“ beim Klonen eines bösartigen Repositories. Zum Beispiel wurde der Name „.git::$INDEX_ALLOCATION“ in NTFS als gültiger Verweis auf das Verzeichnis „.git“ behandelt.
- — Bei der Verwendung von Git in einer WSL-Umgebung (Windows Subsystem for Linux) beim Zugriff auf das Arbeitsverzeichnis Schutz vor Manipulationen von Namen in NTFS angewendet (Angriffe über die Übersetzung von FAT-Namen waren möglich, z.B. konnte auf „.git“ über das Verzeichnis „git~1“ zugegriffen werden).
- —
Schreibvorgänge in das Verzeichnis „.git/“ auf der Windows-Plattform beim Klonen von bösartigen Repositories, die Dateien mit einem umgekehrten Schrägstrich im Namen (z.B. „a\b“) enthalten, was in Unix/Linux zulässig ist, jedoch als Teil des Pfads in Windows interpretiert wird. - — Unzureichende Überprüfung von Submodulnamen konnte zur Durchführung gezielter Angriffe verwendet werden, die beim rekursiven Klonen potenziell zur Ausführung von Angreifer-Code. Git erlaubte es nicht, ein Submodulverzeichnis im Verzeichnis eines anderen Submoduls zu erstellen, was in den meisten Fällen nur zu Verwirrung führen kann, jedoch potenziell das Überschreiben des Inhalts eines anderen Moduls während des rekursiven Klonens ausschließt (z.B. werden die Submodulverzeichnisse „hippo“ und „hippo/hooks“ als „.git/modules/hippo/“ und „.git/modules/hippo/hooks/“ abgelegt, und das Verzeichnis hooks in hippo kann separat zur Ablage von ausführbaren Handlern verwendet werden.
Windows-Nutzern wird dringend geraten, die Git-Version umgehend zu aktualisieren und bis zur Aktualisierung das Klonen von nicht verifizierten Repositories zu vermeiden. Sollte eine sofortige Aktualisierung der Git-Version nicht möglich sein, wird empfohlen, „git clone —recurse-submodules“ und „git submodule update“ mit nicht verifizierten Repositories nicht auszuführen, „git fast-import“ mit nicht verifizierten Eingabeströmen zu vermeiden und Repositories nicht in NTFS-basierten Partitionen zu klonen.
Zur zusätzlichen Sicherheit ist in neuen Versionen auch die Verwendung von Konstruktionen in der Form „submodule.{name}.update=!command“ in .gitmodules untersagt. Um Updates für Distributionen zu verfolgen, können die Seiten ,, , , , , , .
Quelle: opennet.ru
