Verkürzte Git-Commit-Hashes und das Linux-Repository
In der letzten Episode des Risikozone-Podcasts habe ich ganz kurz das Thema der verkürzten Hashwerte und auftretenden Kollisionen angesprochen. Jetzt gibt es ein Proof of Concept zu der Thematik.
Worum es geht
Ein kurzer Refresher, worum es in der Thematik überhaupt geht: Als Git entwickelt wurde, musste ein Weg gefunden werden, wie man die Referenzen auf Commits, die Dateien und die Dateibäume realisiert. In vielen Systemen wie z. B. Issue-Trackern werden aufsteigende Indizes verwendet. In einem verteilten System wie Git ist das aus verschiedenen Gründen der Synchronisation nicht so einfach möglich, da sonst Kollisionen, also gleiche IDs für unterschiedliche Objekte entstehen könnten. Eine Alternative wäre UUIDs, da die IDs einen randomisierten Anteil haben und die Wahrscheinlichkeit für Kollisionen gesenkt wird.
Noch besser als UUIDs ist allerdings Content-adressable Storage, bei dem Inhalte einzig durch ihren Inhalt adressiert werden. Das ist so, als würde man den gesamten Inhalt der Datei nochmal in den Dateinamen schreiben. Der Clou dabei ist jedoch, dass der gesamten Dateiinhalt gar nicht in den Dateinamen geschrieben werden muss, um die Datei durch ihren Inhalt identifizierbar zu machen.
Mit kryptographischen Hashfunktionen wie SHA-1 oder SHA-256 existiert ein Mittel, um einen beliebig langen Dateiinhalt zu einem immer gleich langen Wert, dem Hash, umzuwandeln. Dabei sind kryptographische Hashfunktionen so konstruiert, dass die Wahrscheinlichkeit für Kollisionen durch verschiedene Mechanismen stark minimiert wird. Ein SHA-1-Hash für den Dateiinhalt "Hallo Welt" wäre z. B. 28cbbc72d6a52617a7abbfff6756d04bbad0106a. Ein netter Nebeneffekt ist, dass Dateien mit gleichem Inhalt im Content-adressable Storage auch nur einmal abgespeichert werden, wodurch sogar Deduplikation ermöglicht wird.
Git nutzt dieses Verfahren, um die eingechekten Dateien abzuspeichern. Diese Dateien werden dann in Trees zusammengebunden und in Commits mit den jeweiligen Vorgänger-Commits (parents) in einem sog. Merkle-Tree verheiratet.
Commits werden somit auch durch einen SHA-1-Hash identifiziert, der im hexadezimalen Format 40 Zeichen lang ist.
Das Problem
Das Problem bei dem Verfahren liegt jetzt darin, dass dieser Hash üblicherweise noch weiter abgekürzt wird, um ihn benutzerfreundlicher in Oberflächen oder E-Mails darzustellen. Damit wird natürlich die Wahrscheinlichkeit für Kollisionen erhöht.
Habe ich einen Hash 28cbbc72d6a52617a7abbfff6756d04bbad0106a und nutze nur 28cbbc zur Referenz, reicht das in den meisten kleinen Repositories aus, um einen Commit eindeutig zu referenzieren. In großen Repositories mit vielen Dateien und Commits kann es auf einmal passieren, dass ein weiterer Commit 28cbbcc00aa8ef4e80596c16ecfdb4bc92656cd3 auftaucht, sodass 28cbbc nicht mehr eindeutig einen Commit beschreibt.
Um das Risiko zu verringern, sollte die Mindestanzahl der Zeichen für einen abgekürzten Commit erhöht werden.
Das Kernel-Repository
Genau darum geht es in der aktuellen Diskussion. Aktuell nutzen die Linux-Entwickler zur Referenz von Commits in ihren E-Mails 12 Zeichen lange Hashes. Die Diskussion dreht sich um die Frage, ob die Zahl weiter erhöht werden sollte. Linus Torvalds ist bisher dagegen, weil er das Risiko für Kollisionen gering sieht und er die Position vertritt, dass ein Commit immer mit dem Commit Message Title angegeben werden sollte, was ungewollte Kollisionen ausreichend verhindere.
Gestern veröffentlichte Kees Cook einen Blogpost, indem er eine Commit-Kollision mit dem Werkzeug lucky-commit bewusst herbeiführte, um darauf aufmerksam zu machen, dass die Git- und Kernel-Entwicklungstools mit solchen Situationen klarkommen sollten. Es ist unwahrscheinlich, dass solche Kollisionen bei 12 Zeichen versehentlich entstehen, aber ein Angreifer könnte dies ausnutzen.
Dies sollte ein Apell an alle Entwickler sein, deren Tooling auf abgekürzte Commit-Hashes setzt. Schauen wir mal, wie sich das weiterentwickelt.
Ein Kommentar zu SHA-1
Abschließend ein Kommentar noch zu SHA-1. Wie viele von euch wissen, ist SHA-1 selbst nicht mehr vertretbar kollisionssicher. Das bedeutet, es kann passieren, dass auf einmal zwei Dateiinhalte sich doch den gleichen Hash teilen könnten, wenn ein Angreifer es drauf anlegt.
Da dies natürlich Git massiv stören könnte, gibt es schon Bestrebungen, das Verfahren auf SHA-2 zu aktualisieren, wodurch sich die Hashlänge auch vergrößert. Das ist aber gar nicht so einfach, da SHA-1 an vielen Stellen in die Struktur eines Git-Repos hartkodiert wurde.
Hier geht es aber nicht um das unsichere SHA-1. Durch die Abkürzung des Hashes von 40 auf 12 Zeichen wird die Kollisionssicherheit bewusst und massiv zugunsten der Benutzerfreundlichkeit geschwächt. Und das erfordert immer eine regelmäßige Evaluation, welches Niveau noch vertretbar ist.
Die Linux-Distribution siduction ist in der Version 2024.1.0 erschienen. Sie basiert auf Debian Sid (Unstable) und bringt aktuelle Technologien und Desktop-Umgebungen. Die Veröffentlichung trägt den Namen „Shine on…“ und nutzt den Linux-Kernel 6.12 LTS. Mit dabei sind KDE Plasma 6.2, das kürzlich veröffentlichte Xfce 4.20 sowie LXQt 2.1. Die Entwickler haben jedoch die experimentelle Wayland-Sitzung […]
Der Schweizer Messenger Threema hat eine neue Desktop-App vorgestellt. Die Software bietet erstmals echte Multi-Device-Funktionalität ohne gekoppeltes Smartphone. Zudem wurde die Benutzeroberfläche komplett überarbeitet. Die Beta-Version ist bereits für Nutzer verfügbar und erlaubt Verbindungen zu bis zu zwei Computern. Die neue Desktop-App basiert auf einer völlig neuen Architektur. Wie die bisherigen Apps von Threema ist […]
Ein neues Malware-Rootkit namens Pumakit wurde kürzlich entdeckt und stellt eine Bedrohung für Linux-Systeme dar. Es nutzt fortschrittliche Verschleierungsmethoden, um sich unbemerkt auf betroffenen Systemen zu verstecken. Aktuell betrifft die Schadsoftware ausschließlich Linux Kernel Versionen älter als 5.7. Das Sicherheitsunternehmen Elastic identifizierte Pumakit im September, nachdem ein verdächtiges Binary von „cron“ auf VirusTotal hochgeladen wurde. […]



2024 war ein Jahr voller spannender Entwicklungen und Jubiläen in der LinuxWelt. Von neuen Distributionen bis zu beeindruckenden Meilensteinen bei Softwareprojekten gab es viel zu entdecken. Hier sind einige Highlights. Meilensteine und Neuerscheinungen Folgende Meilensteine und Neuerungen möchte ich kurz und knackig hervorheben: Marktanteile und Entwicklungen Im März erreichte Linux mit einem Marktanteil von 4 […]
Die Document Foundation hat die allgemeine Verfügbarkeit von LibreOffice 24.8.4 angekündigt. Es ist die vierte Wartungsversion der LibreOffice-24.8-Serie und behebt über 50 gemeldete Fehler. Fünf Wochen nach Version 24.8.3 zielt dieses Update auf die Verbesserung der Stabilität und Zuverlässigkeit ab. Die behobenen Fehler umfassen Abstürze und weitere Probleme, die von Nutzern gemeldet wurden. Insgesamt behebt […]
Das Fedora Projekt und das Asahi-Linux Projekt haben zusammen die Verfügbarkeit von Fedora Asahi Remix 41 angekündigt. Die neue Version wurde speziell für Apple-Silicon-Macs entwickelt. Die Distribution basiert auf Fedora Linux 41 und nutzt standardmäßig KDE Plasma 6.2. Neu ist die Integration von x86/x86-64-Emulation, inklusive Unterstützung für AAA-Spiele dank des neuen Vulkan-1.4-Treibers. Fedora Asahi Remix […]
Die nun veröffentlichte neue Xfce 4.20 Version bringt zahlreiche Verbesserungen und Funktionen für den Linux-Desktop. Zu den Highlights zählen experimentelle Wayland-Unterstützung, bessere HiDPI-Anpassung und eine neue Bibliothek zur vereinheitlichten Fensterverwaltung. Wayland-Sitzungen können mit dem Befehl `startxfce4 –wayland` gestartet werden. Allerdings laufen einige Xfce-Komponenten wie Xfwm4 und Xfce4-Screensaver noch nicht unter Wayland. Die Entwickler planen, Wayland […]
Der COSMIC-Desktop von System76, entwickelt in der Programmiersprache Rust, sorgt aktuell für Aufsehen in der Open-Source-Welt. Obwohl es sich noch in der Alpha-Phase (Version 4) befindet, ist die allgemein Begeisterung groß. Logisch, nicht alle Tage entsteht ein neuer Linux Desktop. COSMIC überzeugt durch innovative Funktionen und einen modernen Ansatz. Fedora, bekannt für seine führende Rolle […]
Linux Mint 22.1 -Codename “Xia”- soll Ende Dezember 2024 erscheinen. Die Beta-Version bietet einen ersten Einblick in neue Funktionen und Verbesserungen der Distribution. Ein Highlight ist die Desktop-Umgebung Cinnamon 6.4 mit zahlreichen Neuerungen. Dazu gehören ein Nachtmodus, ein überarbeitetes Standard-Design und native Dialoge. Wayland-Kompatibilität, optimierte Benachrichtigungen und vereinfachte Einstellungen für Tonüberverstärkung wurden ebenfalls integriert. Weitere […]
Das GNOME-Projekt hat mit GNOME 46.7 das siebte Wartungsupdate der GNOME 46 „Kathmandu“ – Desktop-Umgebung veröffentlicht. Das Update bringt verschiedene Fehlerbehebungen, aktualisierte Übersetzungen und weitere Änderungen mit sich. GNOME 46.7 erscheint eineinhalb Monate nach GNOME 46.6. Es verbessert u.a. die Bedienung der Tastaturbeleuchtung in den Schnelleinstellungen. Außerdem wird standardmäßig die GPU mit eingebauten Panels als […]
Der Linux-Kernel-Entwickler Greg Kroah-Hartman hat bekannt gegeben, dass der Linux Kernel 6.12 offiziell als LTS (Long Term Support) markiert wurde. Dies bedeutet, dass die Version mindestens zwei Jahre lang mit Wartungsupdates, Sicherheitsfixes und Bugbehebungen versorgt wird. Ein wichtiger Punkt für Nutzer ist die Aufnahme von Linux 6.12 in die Liste der LTS-Kernel. Dieser Kernel wird […]
Am 7. Dezember 2024 feierte Thunderbird sein 20-jähriges Jubiläum. Seit zwei Jahrzehnten steht der Open-Source-E-Mail-Client für Datenschutz und Vertrauen kostenlos zur Verfügung. Millionen Nutzer weltweit vertrauen auf diese Software für eine sichere digitale Kommunikation. Der Weg begann offiziell am 7. Dezember 2004 mit Thunderbird 1.0. Bereits 2003 startete das Projekt noch als Teil von Mozilla. […]
System76 bringt mit der vierten Alpha-Version des COSMIC-Desktops frühen Festtagsjubel in die Linux-Welt. Es scheint, als ob Weihnachten dieses Jahr etwas früher kommt! Die neue Version des auf Rust basierenden Desktop-Environments enthält aufregende Updates, frische Features und zahlreiche Fehlerbehebungen. Damit kommt System76 dem Ziel näher, eine revolutionäre Desktop-Umgebung für Linux-Benutzer bereitzustellen. Wer Lust hat, kann […]
Die Wahl eines passenden Code-Editors ist ein essenzieller und weichenstellender Schritt für Entwickler. Zwei beliebte Optionen sind VS Code und dessen quelloffene Alternative VS Codium. Beide basieren auf der gleichen Codebasis. Jedoch haben sie unterschiedliche Ansätze, insbesondere in den Bereichen Datenschutz, Erweiterungen und Lizenzierung. Doch welche Variante passt besser zu Dir und Deinen Anforderungen? Hier […]
Das Debian-Projekt hat das Standard-Design für die kommende Version Debian GNU/Linux 13 „Trixie“ vorgestellt. Das Design wurde von Elise Couper entworfen und trägt den Titel „Ceratopsian“. Es wird mit Debian 13 planmäßig ab Sommer 2025 verfügbar sein. Der Design-Wettbewerb für Debian 13 fand von September bis November 2024 statt. Das Design von „Ceratopsian“ wurde von […]