bk99.de entertain the web since 1997

Der erste Git-Commit von Linux und kollidierende SHA-Präfixe

Zusammenfassung

Kees Cook demonstriert praktisch, warum automatisierte Linux-Werkzeuge Git-Commitpräfixe nicht als eindeutige Kennungen behandeln dürfen.

Ideen

  • Zwölfstellige SHA-Präfixe können in großen Repositories bereits kollidieren.
  • Der absichtlich erzeugte Commit teilt das Präfix des ersten Linux-Git-Commits.
  • Fixes-Tags transportieren menschenlesbare Hinweise, keine dauerhaft eindeutigen Datenbankschlüssel.
  • Parser müssen mehrdeutige Präfixe erkennen und kontrolliert behandeln.
  • Eine vorbereitete Kollision liefert einen reproduzierbaren Test für bestehende Werkzeuge.

Einsichten

  • Wachsende Datenmengen verwandeln theoretische Wahrscheinlichkeiten irgendwann in Betriebsfehler.
  • Bequeme Kurzformen werden gefährlich, sobald Maschinen sie als Identitäten interpretieren.
  • Robuste Formate unterscheiden ausdrücklich zwischen Anzeige, Referenz und eindeutiger Kennung.

Fakten

  • Das kollidierende Präfix lautet 1da177e4c3f4.
  • 590 Linux-Commits verwendeten dieses Präfix damals in Fixes-Tags.
  • Die Suche benötigte mit einer RTX 3080 ungefähr sechs Stunden.

Empfehlungen

  • Verwende in Skripten vollständige Objekt-IDs oder prüfe Kurz-IDs auf Eindeutigkeit.
  • Teste Commitparser gezielt mit bekannten Präfixkollisionen.

Referenzen

Originalartikel lesen